back to lobby state when server ends

This commit is contained in:
2023-08-14 13:35:17 +02:00
parent 118a04cd01
commit 7f650f282c
7 changed files with 36 additions and 10 deletions

View File

@@ -52,6 +52,12 @@ void Server::StartThread() {
});
}
void Server::Restart() {
m_Game.GetWorld()->Reset();
m_Lobby.OpenLobby();
m_Game.SetGameState(game::GameState::Lobby);
}
void Server::Close() {
StopThread();
}
@@ -76,6 +82,7 @@ bool Server::Start(std::uint16_t port, bool blocking) {
utils::LOG(utils::format("Server started at port %u !", port));
m_TickCounter.Reset();
m_ServerRunning = true;
m_Lobby.OpenLobby();
if (blocking) {
ServerLoop();
} else {
@@ -166,9 +173,9 @@ void Server::OnPlayerLeave(std::uint8_t id) {
protocol::PlayerLeavePacket packet(id);
BroadcastPacket(&packet);
if (GetPlayers().empty()) {
utils::LOG("All players left. Stopping server ...");
Stop();
if (GetPlayers().empty() && m_Game.GetGameState() != game::GameState::Lobby) {
utils::LOG("All players left. Go back to lobby ...");
Restart();
}
}