From f080e8b1a42041e3782825cdc98307b628cfe01c Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Wed, 27 Jun 2012 20:03:39 +0200 Subject: [PATCH] fixed bug #61: replay doesn't show game info; also fixed playing area not being displayed in any subgame but the first --- common/server_game.cpp | 9 +++++++-- common/server_game.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/common/server_game.cpp b/common/server_game.cpp index 65dafed8..2cdd65ca 100644 --- a/common/server_game.cpp +++ b/common/server_game.cpp @@ -53,6 +53,7 @@ Server_Game::Server_Game(const ServerInfo_User &_creatorInfo, int _gameId, const hostId(0), creatorInfo(new ServerInfo_User(_creatorInfo)), gameStarted(false), + gameClosed(false), gameId(_gameId), description(_description), password(_password), @@ -92,6 +93,7 @@ Server_Game::~Server_Game() room->gamesMutex.lock(); gameMutex.lock(); + gameClosed = true; sendGameEventContainer(prepareGameEvent(Event_GameClosed(), -1)); QMapIterator playerIterator(players); @@ -273,7 +275,9 @@ void Server_Game::doStartGameIfReady() replayList.append(currentReplay); currentReplay = new GameReplay; currentReplay->set_replay_id(databaseInterface->getNextReplayId()); - getInfo(*currentReplay->mutable_game_info()); + ServerInfo_Game *gameInfo = currentReplay->mutable_game_info(); + getInfo(*gameInfo); + gameInfo->set_started(false); Event_GameStateChanged omniscientEvent; createGameStateChangedEvent(&omniscientEvent, 0, true, true); @@ -438,6 +442,7 @@ void Server_Game::removePlayer(Server_Player *player) player->prepareDestroy(); if (!getPlayerCount()) { + gameClosed = true; deleteLater(); return; } else if (!spectator) { @@ -666,7 +671,7 @@ void Server_Game::getInfo(ServerInfo_Game &result) const result.set_room_id(room->getId()); result.set_game_id(gameId); - if (players.isEmpty()) + if (gameClosed) result.set_closed(true); else { for (int i = 0; i < gameTypes.size(); ++i) diff --git a/common/server_game.h b/common/server_game.h index 3992d55c..829d60a8 100644 --- a/common/server_game.h +++ b/common/server_game.h @@ -51,6 +51,7 @@ private: QMap players; QSet allPlayersEver, allSpectatorsEver; bool gameStarted; + bool gameClosed; int gameId; QString description; QString password;