From ed201fa5d370eeb2d9e5cc9394823e2a6f7fb905 Mon Sep 17 00:00:00 2001 From: Titus Tscharntke Date: Fri, 13 Apr 2012 23:13:02 +0000 Subject: [PATCH] "save game" in ingame menu( I don't know how a quick "load last saved game" ould work from ingame menu :-/ ) --- source/glest_game/game/game.cpp | 41 ++++++++++++++++++++++++--------- source/glest_game/game/game.h | 3 +++ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index c2de21b03..e9f96bd7c 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -107,6 +107,8 @@ Game::Game() : ProgramState(NULL) { exitGamePopupMenuIndex = -1; joinTeamPopupMenuIndex = -1; pauseGamePopupMenuIndex = -1; + saveGamePopupMenuIndex = -1; + loadGamePopupMenuIndex = -1; keyboardSetupPopupMenuIndex = -1; masterserverMode = false; currentUIState=NULL; @@ -152,6 +154,8 @@ void Game::resetMembers() { exitGamePopupMenuIndex = -1; joinTeamPopupMenuIndex = -1; pauseGamePopupMenuIndex = -1; + saveGamePopupMenuIndex = -1; + loadGamePopupMenuIndex = -1; keyboardSetupPopupMenuIndex = -1; currentUIState = NULL; @@ -1119,11 +1123,18 @@ void Game::setupPopupMenus(bool checkClientAdminOverrideOnly) { joinTeamPopupMenuIndex = menuItems.size()-1; } - if(allowAdminMenuItems == true) { + if(allowAdminMenuItems == true){ menuItems.push_back(lang.get("PauseResumeGame")); - pauseGamePopupMenuIndex = menuItems.size()-1; - } + pauseGamePopupMenuIndex= menuItems.size() - 1; + if(gameSettings.isNetworkGame() == false){ + menuItems.push_back(lang.get("SaveGame")); + saveGamePopupMenuIndex= menuItems.size() - 1; + +// menuItems.push_back(lang.get("LoadGame")); +// loadGamePopupMenuIndex= menuItems.size() - 1; + } + } menuItems.push_back(lang.get("Keyboardsetup")); keyboardSetupPopupMenuIndex = menuItems.size()-1; menuItems.push_back(lang.get("Cancel")); @@ -1883,6 +1894,9 @@ void Game::mouseDownLeft(int x, int y) { } } } + else if(result.first == saveGamePopupMenuIndex){ + saveGame(); + } } else if(popupMenuSwitchTeams.mouseClick(x, y)) { //popupMenuSwitchTeams @@ -2590,14 +2604,7 @@ void Game::keyDown(SDL_KeyboardEvent key) { } if(isKeyPressed(configKeys.getSDLKey("SaveGame"),key) == true) { - string file = this->saveGame(GameConstants::saveGameFilePattern); - char szBuf[8096]=""; - sprintf(szBuf,lang.get("GameSaved","",true).c_str(),file.c_str()); - console.addLine(szBuf); - - Config &config= Config::getInstance(); - config.setString("LastSavedGame",file); - config.save(); + saveGame(); } } @@ -3584,6 +3591,18 @@ void Game::addNetworkCommandToReplayList(NetworkCommand* networkCommand, int wor } } +void Game::saveGame(){ + string file = this->saveGame(GameConstants::saveGameFilePattern); + char szBuf[8096]=""; + Lang &lang= Lang::getInstance(); + sprintf(szBuf,lang.get("GameSaved","",true).c_str(),file.c_str()); + console.addLine(szBuf); + + Config &config= Config::getInstance(); + config.setString("LastSavedGame",file); + config.save(); +} + string Game::saveGame(string name) { Config &config= Config::getInstance(); // auto name file if using saved file pattern string diff --git a/source/glest_game/game/game.h b/source/glest_game/game/game.h index 83d889294..010ab550a 100644 --- a/source/glest_game/game/game.h +++ b/source/glest_game/game/game.h @@ -138,6 +138,8 @@ private: int exitGamePopupMenuIndex; int joinTeamPopupMenuIndex; int pauseGamePopupMenuIndex; + int saveGamePopupMenuIndex; + int loadGamePopupMenuIndex; int keyboardSetupPopupMenuIndex; GLuint statelist3dMenu; ProgramState *currentUIState; @@ -182,6 +184,7 @@ public: bool getPaused(); void setPaused(bool value, bool forceAllowPauseStateChange=false); + void saveGame(); const int getTotalRenderFps() const {return totalRenderFps;} void toggleTeamColorMarker();