Servers now show up in the server list.

This commit is contained in:
Tleety
2016-03-08 18:13:21 +01:00
parent 280de0e984
commit 3394d65055
8 changed files with 80 additions and 15 deletions
+2
View File
@@ -37,6 +37,7 @@
#include "Game/Systems/ScoreScreenSystem.h"
#include "GUI/ButtonSystem.h"
#include "Game/Systems/MainMenuSystem.h"
#include "Game/Systems/ServerListSystem.h"
Game::Game(int argc, char* argv[])
@@ -149,6 +150,7 @@ Game::Game(int argc, char* argv[])
m_SystemPipeline->AddSystem<MainMenuSystem>(updateOrderLevel, m_Renderer);
m_SystemPipeline->AddSystem<BoostIconsHUDSystem>(updateOrderLevel);
m_SystemPipeline->AddSystem<ScoreScreenSystem>(updateOrderLevel);
m_SystemPipeline->AddSystem<ServerListSystem>(updateOrderLevel, m_Renderer);
// Populate Octree with collidables
++updateOrderLevel;
m_SystemPipeline->AddSystem<FillOctreeSystem>(updateOrderLevel, m_OctreeCollision, "Collidable");
+8 -2
View File
@@ -71,6 +71,8 @@ bool MainMenuSystem::OnInputCommand(const Events::InputCommand& e)
return 0;
}
m_OpenSubMenu = SpawnerSystem::Spawn(serverListSpawner, serverListSpawner);
Events::SearchForServers event;
m_EventBroker->Publish(event);
break;
}
@@ -86,15 +88,19 @@ bool MainMenuSystem::OnInputCommand(const Events::InputCommand& e)
return 0;
}
m_OpenSubMenu = SpawnerSystem::Spawn(serverListSpawner, serverListSpawner);
Events::SearchForServers event;
m_EventBroker->Publish(event);
break;
}
} else {
//Serverlist submenu is open, close it.
printf("\n\nMenuShit\n\n");
m_World->DeleteEntity(m_OpenSubMenu.ID);
m_OpenSubMenu = EntityWrapper::Invalid;
}
} else if (e.Command == "RefreshServerList" && e.Value == 1){
Events::SearchForServers event;
m_EventBroker->Publish(event);
}
return true;
}
+35 -2
View File
@@ -5,7 +5,7 @@ ServerListSystem::ServerListSystem(SystemParams params, IRenderer* renderer)
, PureSystem("ServerList")
, m_Renderer(renderer)
{
//Subscribe to OnServerListRecieved
EVENT_SUBSCRIBE_MEMBER(m_EServerListRecieved, &ServerListSystem::OnServerListRecieved);
}
void ServerListSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& cServerList, double dt)
@@ -15,6 +15,39 @@ void ServerListSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper&
void ServerListSystem::RefreshList()
{
//Send out request for a server list.
Events::SearchForServers event;
m_EventBroker->Publish(event);
}
bool ServerListSystem::OnServerListRecieved(const Events::DisplayServerlist& e)
{
if (e.Serverlist.size() == 0) {
return 1;
}
auto serverLists = m_World->GetComponents("ServerList");
if (serverLists == nullptr)
return 1;
for (auto& cServerList : *serverLists) {
EntityWrapper serverListEntity = EntityWrapper(m_World, cServerList.EntityID);
EntityWrapper identitySpawner = serverListEntity.FirstChildByName("ServerIdentitySpawner");
identitySpawner.DeleteChildren();
(int&)cServerList["TotalIdentities"] = (int)e.Serverlist.size();
for (int i = 0; i < e.Serverlist.size(); i++) {
//Create Identities for each server and place them on the right position.
EntityWrapper newIdentity = SpawnerSystem::Spawn(identitySpawner, identitySpawner);
glm::vec3 offset = (glm::vec3)serverListEntity["ServerList"]["Offset"];
(glm::vec3&)newIdentity["Transform"]["Position"] = offset * (float)i;
auto& cIdentity = newIdentity["ServerIdentity"];
(std::string&)cIdentity["IP"] = e.Serverlist[i].Address;
(std::string&)cIdentity["ServerName"] = e.Serverlist[i].Name;
(int&)cIdentity["Port"] = e.Serverlist[i].Port;
(int&)cIdentity["PlayersConnected"] = e.Serverlist[i].PlayersConnected;
}
}
return 1;
}