Servers now show up in the server list.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include "GUI/EButtonPressed.h"
|
||||
#include "GUI/EButtonReleased.h"
|
||||
#include "Input/EInputCommand.h"
|
||||
#include "Network/ESearchForServers.h"
|
||||
|
||||
|
||||
class MainMenuSystem : public ImpureSystem
|
||||
|
||||
@@ -6,8 +6,10 @@
|
||||
#include "Core/ResourceManager.h"
|
||||
#include "Core/Event.h"
|
||||
#include "Systems/SpawnerSystem.h"
|
||||
#include "Core/EventBroker.h"
|
||||
|
||||
#include "Network/ESearchForServers.h"
|
||||
#include "Network/EDisplayServerlist.h"
|
||||
|
||||
class ServerListSystem : public PureSystem
|
||||
{
|
||||
@@ -20,8 +22,8 @@ public:
|
||||
private:
|
||||
IRenderer* m_Renderer;
|
||||
|
||||
//EventRelay<ServerListSystem, Events::SomeEventLol> m_EServerListRecieved;
|
||||
//bool OnServerListRecieved(const Events::SomeEventLol& e)
|
||||
EventRelay<ServerListSystem, Events::DisplayServerlist> m_EServerListRecieved;
|
||||
bool OnServerListRecieved(const Events::DisplayServerlist& e);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ScoreScreen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ScoreScreen.xsd">
|
||||
<ServerList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ServerList.xsd">
|
||||
<TotalIdentities>0</TotalIdentities>
|
||||
<NextPosition>0</NextPosition>
|
||||
<Offset X="0.0" Y="0.0" Z="0.0"/>
|
||||
</ScoreScreen>
|
||||
</ServerList>
|
||||
@@ -23,7 +23,7 @@
|
||||
<Field>IP</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="7.54800034" Y="0" Z="0"/>
|
||||
<Position X="8.96700001" Y="0" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
@@ -44,7 +44,7 @@
|
||||
<Field>Port</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="12.3900003" Y="0" Z="0"/>
|
||||
<Position X="12.4870005" Y="0" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
@@ -64,7 +64,9 @@
|
||||
<ComponentType>ServerIdentity</ComponentType>
|
||||
<Field>ServerName</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform/>
|
||||
<c:Transform>
|
||||
<Position X="0.531000018" Y="0" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
@@ -84,7 +86,7 @@
|
||||
<Field>PlayersConnected</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="14.8720007" Y="0" Z="0"/>
|
||||
<Position X="15.559001" Y="0" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
<Entity name="ServerList" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:ServerList/>
|
||||
<c:ServerList>
|
||||
<Offset X="0" Y="-2" Z="0"/>
|
||||
</c:ServerList>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
@@ -10,10 +12,23 @@
|
||||
<Entity name="Identities_Origin">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="-0.128615797" Y="0.181182757" Z="0"/>
|
||||
<Position X="-0.13636373" Y="0.181182757" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
<Children>
|
||||
<Entity name="ServerIdentitySpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/ServerIdentity.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||
<Scale X="0.0149999997" Y="0.0149999997" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Background">
|
||||
<Components>
|
||||
@@ -38,6 +53,10 @@
|
||||
<GlowMap></GlowMap>
|
||||
<Color A="0.588235319" B="1" G="1" R="1"/>
|
||||
</c:Sprite>
|
||||
<c:InputCmdButton>
|
||||
<Command>RefreshServerList</Command>
|
||||
<PressValue>1</PressValue>
|
||||
</c:InputCmdButton>
|
||||
<c:Transform>
|
||||
<Position X="0.120867848" Y="0.222928733" Z="0.0189953279"/>
|
||||
<Scale X="0.0149999997" Y="0.0149999997" Z="1"/>
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user