- corrected game shutdown to do quit logic only once

This commit is contained in:
Mark Vejvoda 2013-09-28 06:40:26 +00:00
parent 9967df316c
commit 111523f60b
2 changed files with 22 additions and 10 deletions

View File

@ -164,6 +164,7 @@ Game::Game() : ProgramState(NULL) {
lastworldFrameCountForReplay = -1;
lastNetworkPlayerConnectionCheck = time(NULL);
inJoinGameLoading = false;
quitGameCalled = false;
for( int i=0;i<GameConstants::networkSmoothInterval;i++){
receivedTooEarlyInFrames[i]=-1;
@ -275,6 +276,7 @@ void Game::resetMembers() {
lastNetworkPlayerConnectionCheck = time(NULL);
inJoinGameLoading = false;
quitGameCalled = false;
for( int i=0;i<GameConstants::networkSmoothInterval;i++){
receivedTooEarlyInFrames[i]=-1;
@ -4871,9 +4873,25 @@ void Game::keyPress(SDL_KeyboardEvent c) {
chatManager.keyPress(c);
}
Stats Game::getEndGameStats() {
Stats endStats;
endStats = *(world.getStats());
//NetworkManager &networkManager= NetworkManager::getInstance();
if (this->masterserverMode == true) {
endStats.setIsMasterserverMode(true);
}
return endStats;
}
Stats Game::quitGame() {
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
if(quitGameCalled == true) {
Stats endStats = getEndGameStats();
return endStats;
}
quitGameCalled = true;
NetworkManager &networkManager= NetworkManager::getInstance();
NetworkRole role = networkManager.getNetworkRole();
string suffix = "_client";
@ -4891,16 +4909,7 @@ Stats Game::quitGame() {
this->saveGame(GameConstants::saveGameFileAutoTestDefault);
}
//Stats stats = *(world.getStats());
Stats endStats;
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);
endStats = *(world.getStats());
//NetworkManager &networkManager= NetworkManager::getInstance();
if(this->masterserverMode == true) {
endStats.setIsMasterserverMode(true);
}
Stats endStats = getEndGameStats();
if(SystemFlags::getSystemSettingType(SystemFlags::debugSystem).enabled) SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line: %d]\n",extractFileFromDirectoryPath(__FILE__).c_str(),__FUNCTION__,__LINE__);

View File

@ -207,6 +207,8 @@ private:
bool inJoinGameLoading;
bool initialResumeSpeedLoops;
bool quitGameCalled;
public:
Game();
Game(Program *program, const GameSettings *gameSettings, bool masterserverMode);
@ -379,6 +381,7 @@ private:
bool switchSetupForSlots(ServerInterface *& serverInterface,
int startIndex, int endIndex, bool onlyNetworkUnassigned);
void processNetworkSynchChecksIfRequired();
Stats getEndGameStats();
};
}}//end namespace