back to lobby state when server ends
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user