diff --git a/include/td/game/BaseGame.h b/include/td/game/BaseGame.h index 5d67745..8d55654 100644 --- a/include/td/game/BaseGame.h +++ b/include/td/game/BaseGame.h @@ -42,6 +42,8 @@ public: virtual void Tick(std::uint64_t delta); + void Reset(); + Team& GetRedTeam() { return m_Teams[static_cast(TeamColor::Red)]; } const Team& GetRedTeam() const { return m_Teams[static_cast(TeamColor::Red)]; } diff --git a/src/client/Client.cpp b/src/client/Client.cpp index 6c1a6b9..ecb38ed 100644 --- a/src/client/Client.cpp +++ b/src/client/Client.cpp @@ -40,6 +40,9 @@ void Client::CloseConnection() { m_Game->SetGameState(game::GameState::Disconnected); m_Connexion.CloseConnection(); + + + m_Game->Reset(); } void Client::Tick(std::uint64_t delta) { diff --git a/src/server/Server.cpp b/src/server/Server.cpp index c0b528b..32f0317 100644 --- a/src/server/Server.cpp +++ b/src/server/Server.cpp @@ -53,9 +53,10 @@ void Server::StartThread() { } void Server::Restart() { - m_Game.GetWorld()->Reset(); - m_Lobby.OpenLobby(); + m_Game.Reset(); m_Game.SetGameState(game::GameState::Lobby); + + m_Lobby.OpenLobby(); } void Server::Close() { diff --git a/src/td/game/BaseGame.cpp b/src/td/game/BaseGame.cpp index 4673fdd..e3fe073 100644 --- a/src/td/game/BaseGame.cpp +++ b/src/td/game/BaseGame.cpp @@ -17,6 +17,11 @@ void Game::Tick(std::uint64_t delta) { } } +void Game::Reset() { + m_World->Reset(); + m_Players.clear(); +} + Player* Game::GetPlayerById(PlayerID id) { auto it = m_Players.find(id);