diff options
Diffstat (limited to 'src/game/GameController.cpp')
| -rw-r--r-- | src/game/GameController.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 73e59a5..c652298 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -331,21 +331,28 @@ void GameController::OpenSaveWindow() { if(gameModel->GetUser().ID) { - if(gameModel->GetSave()) + int tempSaveLength; + unsigned char * tempData = gameModel->GetSimulation()->Save(tempSaveLength); + if(!tempData) { - Save tempSave(*gameModel->GetSave()); - int tempSaveLength; - tempSave.SetData(gameModel->GetSimulation()->Save(tempSaveLength)); - ssave = new SSaveController(new SSaveCallback(this), tempSave); + new ErrorMessage("Error", "Unable to build save."); } else { - Save tempSave(0, 0, 0, 0, gameModel->GetUser().Username, ""); - int tempSaveLength; - tempSave.SetData(gameModel->GetSimulation()->Save(tempSaveLength)); - ssave = new SSaveController(new SSaveCallback(this), tempSave); + if(gameModel->GetSave()) + { + Save tempSave(*gameModel->GetSave()); + tempSave.SetData(tempData, tempSaveLength); + ssave = new SSaveController(new SSaveCallback(this), tempSave); + } + else + { + Save tempSave(0, 0, 0, 0, gameModel->GetUser().Username, ""); + tempSave.SetData(tempData, tempSaveLength); + ssave = new SSaveController(new SSaveCallback(this), tempSave); + } + ui::Engine::Ref().ShowWindow(ssave->GetView()); } - ui::Engine::Ref().ShowWindow(ssave->GetView()); } else { |
