summaryrefslogtreecommitdiff
path: root/src/game/GameController.cpp
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2012-10-19 23:17:15 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-10-26 14:15:38 (GMT)
commit3a29fc0268dbda68e80f7de586c6692ba7a11565 (patch)
treefa2ae1ded7149c2b56c4dcecac032e991b30d00e /src/game/GameController.cpp
parente2622657f076ef943d051593d0969306daf15f32 (diff)
downloadpowder-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.cpp38
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());
}
}