diff options
| author | jacob1 <jfu614@gmail.com> | 2012-10-19 23:17:15 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-10-26 14:15:38 (GMT) |
| commit | 3a29fc0268dbda68e80f7de586c6692ba7a11565 (patch) | |
| tree | fa2ae1ded7149c2b56c4dcecac032e991b30d00e /src/game/GameController.cpp | |
| parent | e2622657f076ef943d051593d0969306daf15f32 (diff) | |
| download | powder-3a29fc0268dbda68e80f7de586c6692ba7a11565.zip powder-3a29fc0268dbda68e80f7de586c6692ba7a11565.tar.gz | |
Save local saves as current name option (overwrites them automatically). Fix filename not showing when first saving a local save
Diffstat (limited to 'src/game/GameController.cpp')
| -rw-r--r-- | src/game/GameController.cpp | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 96f966c..dfe3a94 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -909,7 +909,7 @@ void GameController::OpenSearch() ui::Engine::Ref().ShowWindow(search->GetView()); } -void GameController::OpenLocalSaveWindow() +void GameController::OpenLocalSaveWindow(bool asCurrent) { Simulation * sim = gameModel->GetSimulation(); GameSave * gameSave = sim->Save(); @@ -926,24 +926,32 @@ void GameController::OpenLocalSaveWindow() else { std::string filename = ""; - if (gameModel->GetFile()) - filename = gameModel->GetFile()->GetDisplayName(); + if (gameModel->GetSaveFile()) + filename = gameModel->GetSaveFile()->GetDisplayName(); SaveFile tempSave(filename); tempSave.SetGameSave(gameSave); - class LocalSaveCallback: public FileSavedCallback + if (!asCurrent || !gameModel->GetSaveFile()) { - GameController * c; - public: - LocalSaveCallback(GameController * _c): c(_c) {} - virtual ~LocalSaveCallback() {}; - virtual void FileSaved(SaveFile* file) + class LocalSaveCallback: public FileSavedCallback { - c->gameModel->SetSaveFile(file); - } - }; + GameController * c; + public: + LocalSaveCallback(GameController * _c): c(_c) {} + virtual ~LocalSaveCallback() {}; + virtual void FileSaved(SaveFile* file) + { + c->gameModel->SetSaveFile(file); + } + }; - new LocalSaveActivity(tempSave, new LocalSaveCallback(this)); + new LocalSaveActivity(tempSave, new LocalSaveCallback(this)); + } + else if (gameModel->GetSaveFile()) + { + Client::Ref().MakeDirectory(LOCAL_SAVE_DIR); + Client::Ref().WriteFile(gameSave->Serialise(), gameModel->GetSaveFile()->GetName()); + } } } @@ -1209,9 +1217,9 @@ void GameController::ReloadSim() { gameModel->SetSave(gameModel->GetSave()); } - else if(gameModel->GetFile() && gameModel->GetFile()->GetGameSave()) + else if(gameModel->GetSaveFile() && gameModel->GetSaveFile()->GetGameSave()) { - gameModel->SetSaveFile(gameModel->GetFile()); + gameModel->SetSaveFile(gameModel->GetSaveFile()); } } |
