refactor: create MainMenu and GameMenu classes
This commit is contained in:
@@ -36,7 +36,7 @@ void Lobby::tick() {
|
||||
if (m_GameStarted || m_StartTimerTime == 0)
|
||||
return;
|
||||
|
||||
if (utils::getTime() - m_StartTimerTime >= LOBBY_WAITING_TIME) {
|
||||
if (utils::getTime() - m_StartTimerTime >= LobbyWaitingTime) {
|
||||
protocol::UpdateGameStatePacket packet(game::GameState::Game);
|
||||
m_Server->broadcastPacket(&packet);
|
||||
m_GameStarted = true;
|
||||
@@ -48,7 +48,7 @@ void Lobby::tick() {
|
||||
}
|
||||
|
||||
void Lobby::sendTimeRemaining() {
|
||||
protocol::UpdateLobbyTimePacket packet(LOBBY_WAITING_TIME - (utils::getTime() - m_StartTimerTime)); // converting second to millis
|
||||
protocol::UpdateLobbyTimePacket packet(LobbyWaitingTime - (utils::getTime() - m_StartTimerTime)); // converting second to millis
|
||||
m_Server->broadcastPacket(&packet);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
namespace td {
|
||||
namespace server {
|
||||
|
||||
Server::Server(const std::string& worldFilePath) {
|
||||
Server::Server(const std::string& worldFilePath) : m_ServerRunning(false) {
|
||||
m_Game.getWorld()->loadMapFromFile(worldFilePath);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,31 @@ void Server::lauchGame() {
|
||||
m_Game.startGame();
|
||||
}
|
||||
|
||||
void Server::startThread() {
|
||||
m_Thread = std::thread([this]() {
|
||||
std::uint64_t lastTime = td::utils::getTime();
|
||||
while (m_ServerRunning) {
|
||||
std::uint64_t time = td::utils::getTime();
|
||||
|
||||
std::uint64_t delta = time - lastTime;
|
||||
|
||||
if (delta >= SERVER_TICK) {
|
||||
tick(delta);
|
||||
lastTime = td::utils::getTime();
|
||||
std::uint64_t sleepTime = SERVER_TICK - (delta - SERVER_TICK);
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(sleepTime));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void Server::stopThread(){
|
||||
m_ServerRunning = false;
|
||||
if(m_Thread.joinable())
|
||||
m_Thread.join();
|
||||
}
|
||||
|
||||
bool Server::start(std::uint16_t port) {
|
||||
if (!m_Listener.listen(port, 10)) {
|
||||
std::cout << "Failed to bind port " << port << " !\n";
|
||||
@@ -24,10 +49,16 @@ bool Server::start(std::uint16_t port) {
|
||||
}
|
||||
std::cout << "Server started at port " << port << " !\n";
|
||||
m_TickCounter.reset();
|
||||
m_ServerRunning = true;
|
||||
startThread();
|
||||
return true;
|
||||
}
|
||||
|
||||
void Server::stop() {
|
||||
if(!m_ServerRunning)
|
||||
return;
|
||||
stopThread();
|
||||
|
||||
protocol::DisconnectPacket packet("Server closed");
|
||||
broadcastPacket(&packet);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user