feat: close server when game finished

This commit is contained in:
2021-12-19 11:57:47 +01:00
parent 409268b604
commit 36a1ab0572
5 changed files with 44 additions and 22 deletions

View File

@@ -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) {

View File

@@ -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