From ba9208085b4212c9c6d59989ac5a57bdd2113356 Mon Sep 17 00:00:00 2001 From: Tleety Date: Tue, 8 Mar 2016 16:52:56 +0100 Subject: [PATCH] WIP --- include/Game/Systems/ServerListSystem.h | 22 ++++++++++++ resources/Schema/Entities/ServerList.xml | 2 +- src/Game/Game.cpp | 2 +- src/Game/Systems/MainMenuSystem.cpp | 44 ++++++++++++++++-------- src/Game/Systems/ServerListSystem.cpp | 19 ++++++++++ 5 files changed, 73 insertions(+), 16 deletions(-) create mode 100644 include/Game/Systems/ServerListSystem.h create mode 100644 src/Game/Systems/ServerListSystem.cpp diff --git a/include/Game/Systems/ServerListSystem.h b/include/Game/Systems/ServerListSystem.h new file mode 100644 index 00000000..a0d8b99b --- /dev/null +++ b/include/Game/Systems/ServerListSystem.h @@ -0,0 +1,22 @@ +#ifndef ServerListSystem_h__ +#define ServerListSystem_h__ + +#include "Core/System.h" +#include "Rendering/IRenderer.h" +#include "Core/ResourceManager.h" +#include "Core/Event.h" +#include "Systems/SpawnerSystem.h" + +class ServerListSystem : public PureSystem +{ +public: + ServerListSystem(SystemParams params, IRenderer* renderer); + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cServerList, double dt) override; + + void RefreshList(); + +private: + IRenderer* m_Renderer; +}; + +#endif \ No newline at end of file diff --git a/resources/Schema/Entities/ServerList.xml b/resources/Schema/Entities/ServerList.xml index be16fa16..90773f90 100644 --- a/resources/Schema/Entities/ServerList.xml +++ b/resources/Schema/Entities/ServerList.xml @@ -2,7 +2,7 @@ - + diff --git a/src/Game/Game.cpp b/src/Game/Game.cpp index 8f589e34..2897e0d7 100644 --- a/src/Game/Game.cpp +++ b/src/Game/Game.cpp @@ -36,7 +36,7 @@ #include "Game/Systems/BoostIconsHUDSystem.h" #include "Game/Systems/ScoreScreenSystem.h" #include "GUI/ButtonSystem.h" -#include "GUI/MainMenuSystem.h" +#include "Game/Systems/MainMenuSystem.h" Game::Game(int argc, char* argv[]) diff --git a/src/Game/Systems/MainMenuSystem.cpp b/src/Game/Systems/MainMenuSystem.cpp index 14cf7e26..ce95e280 100644 --- a/src/Game/Systems/MainMenuSystem.cpp +++ b/src/Game/Systems/MainMenuSystem.cpp @@ -56,28 +56,44 @@ bool MainMenuSystem::OnButtonPress(const Events::ButtonPressed& e) bool MainMenuSystem::OnInputCommand(const Events::InputCommand& e) { - if(e.Command == "Play") { + if(e.Command == "Play" && e.Value == 1) { + auto menus = m_World->GetComponents("Menu"); + if (menus == nullptr) { + return 0; + } + if (m_OpenSubMenu == EntityWrapper::Invalid) { //No submenu is open, open one. + for (auto& menu : *menus) { + EntityWrapper menuEntity = EntityWrapper(m_World, menu.EntityID); + auto serverListSpawner = menuEntity.FirstChildByName(e.Command + "Spawner"); + if (!serverListSpawner.HasComponent("Spawner")) { + return 0; + } + m_OpenSubMenu = SpawnerSystem::Spawn(serverListSpawner, serverListSpawner); + break; + } } else if(!m_OpenSubMenu.HasComponent("ServerList")) { //Menu is open, but not the right one, delete the old one and open a new one. + m_World->DeleteEntity(m_OpenSubMenu.ID); + m_OpenSubMenu = EntityWrapper::Invalid; + + for (auto& menu : *menus) { + EntityWrapper menuEntity = EntityWrapper(m_World, menu.EntityID); + auto serverListSpawner = menuEntity.FirstChildByName(e.Command + "Spawner"); + if (!serverListSpawner.HasComponent("Spawner")) { + return 0; + } + m_OpenSubMenu = SpawnerSystem::Spawn(serverListSpawner, serverListSpawner); + } + } else { //Serverlist submenu is open, close it. - } - //Create new entity through the spawner. Should also despawn all other menus. - auto menus = m_World->GetComponents("Menu"); - if(menus == nullptr) { - return 0; - } - for (auto& menu : *menus) { - EntityWrapper menuEntity = EntityWrapper(m_World, menu.EntityID); - auto serverListSpawner = menuEntity.FirstChildByName(e.Command + "Spawner"); - if(!serverListSpawner.HasComponent("Spawner")) { - return 0; - } - m_OpenSubMenu = SpawnerSystem::Spawn(serverListSpawner, serverListSpawner); + printf("\n\nMenuShit\n\n"); + m_World->DeleteEntity(m_OpenSubMenu.ID); + m_OpenSubMenu = EntityWrapper::Invalid; } } return true; diff --git a/src/Game/Systems/ServerListSystem.cpp b/src/Game/Systems/ServerListSystem.cpp new file mode 100644 index 00000000..3d79a7b0 --- /dev/null +++ b/src/Game/Systems/ServerListSystem.cpp @@ -0,0 +1,19 @@ +#include "../Game/Systems/ServerListSystem.h" + +ServerListSystem::ServerListSystem(SystemParams params, IRenderer* renderer) + : System(params) + , PureSystem("ServerList") + , m_Renderer(renderer) +{ + +} + +void ServerListSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& cServerList, double dt) +{ + +} + +void ServerListSystem::RefreshList() +{ + +}