feat: close server when game finished
This commit is contained in:
@@ -9,8 +9,9 @@ Server::Server(const std::string& worldFilePath) : m_ServerRunning(false) {
|
||||
m_Game.getWorld()->loadMapFromFile(worldFilePath);
|
||||
}
|
||||
|
||||
void Server::lauchGame() {
|
||||
m_Game.startGame();
|
||||
Server::~Server() {
|
||||
if (m_Thread.joinable())
|
||||
m_Thread.join();
|
||||
}
|
||||
|
||||
void Server::startThread() {
|
||||
@@ -29,13 +30,16 @@ void Server::startThread() {
|
||||
}
|
||||
|
||||
}
|
||||
clean();
|
||||
});
|
||||
}
|
||||
|
||||
void Server::close() {
|
||||
stopThread();
|
||||
}
|
||||
|
||||
void Server::stopThread() {
|
||||
m_ServerRunning = false;
|
||||
if (m_Thread.joinable())
|
||||
m_Thread.join();
|
||||
}
|
||||
|
||||
bool Server::start(std::uint16_t port) {
|
||||
@@ -54,19 +58,24 @@ bool Server::start(std::uint16_t port) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void Server::stop() {
|
||||
if (!m_ServerRunning)
|
||||
return;
|
||||
stopThread();
|
||||
|
||||
protocol::DisconnectPacket packet("Server closed");
|
||||
broadcastPacket(&packet);
|
||||
|
||||
void Server::clean() {
|
||||
m_Listener.close();
|
||||
m_Listener.destroy();
|
||||
|
||||
m_Connections.clear();
|
||||
getPlayers().clear();
|
||||
|
||||
std::cout << "Server successfully stopped !\n";
|
||||
}
|
||||
|
||||
void Server::stop() {
|
||||
if (!m_ServerRunning)
|
||||
return;
|
||||
|
||||
protocol::DisconnectPacket packet("Server closed");
|
||||
broadcastPacket(&packet);
|
||||
|
||||
stopThread();
|
||||
}
|
||||
|
||||
void Server::tick(std::uint64_t delta) {
|
||||
|
||||
@@ -95,6 +95,9 @@ void ServerGame::OnGameClose() {
|
||||
// Disconnect clients
|
||||
protocol::DisconnectPacket packet("Game finished");
|
||||
m_Server->broadcastPacket(&packet);
|
||||
|
||||
// Closing server
|
||||
m_Server->close();
|
||||
}
|
||||
|
||||
} // namespace game
|
||||
|
||||
Reference in New Issue
Block a user