diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-11 12:39:39 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-11 12:39:39 (GMT) |
| commit | 3205df3a2188e6e314d7393381403dd04cd85623 (patch) | |
| tree | 5f3ec4728b3d4edd7eead8a581abead144eb2b07 /src/game | |
| parent | 5eb9370fc185103f3f8700f7da31525d5e862f81 (diff) | |
| download | powder-3205df3a2188e6e314d7393381403dd04cd85623.zip powder-3205df3a2188e6e314d7393381403dd04cd85623.tar.gz | |
Saving and loading other flags from GameSave, remove old saveloader
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/GameController.cpp | 10 | ||||
| -rw-r--r-- | src/game/GameModel.cpp | 22 |
2 files changed, 27 insertions, 5 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 9cdac6e..2a62606 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -11,6 +11,7 @@ #include "interface/Point.h" #include "dialogues/ErrorMessage.h" #include "GameModelException.h" +#include "simulation/Air.h" using namespace std; @@ -549,7 +550,14 @@ void GameController::OpenSaveWindow() { if(gameModel->GetUser().ID) { - GameSave * gameSave = gameModel->GetSimulation()->Save(); + Simulation * sim = gameModel->GetSimulation(); + GameSave * gameSave = sim->Save(); + gameSave->paused = gameModel->GetPaused(); + gameSave->gravityMode = sim->gravityMode; + gameSave->airMode = sim->air->airMode; + gameSave->legacyEnable = sim->legacy_enable; + gameSave->waterEEnabled = sim->water_equal_test; + gameSave->gravityEnable = sim->grav->ngrav_enable; if(!gameSave) { new ErrorMessage("Error", "Unable to build save."); diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 99a2cc5..2ae0713 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -2,6 +2,7 @@ #include "GameModel.h" #include "GameView.h" #include "simulation/Simulation.h" +#include "simulation/Air.h" #include "Renderer.h" #include "interface/Point.h" #include "Brush.h" @@ -283,13 +284,26 @@ void GameModel::SetSave(SaveInfo * newSave) if(currentSave) delete currentSave; currentSave = newSave; - if(currentSave) - { + if(currentSave && currentSave->GetGameSave()) + { + GameSave * saveData = currentSave->GetGameSave(); + SetPaused(saveData->paused); + sim->gravityMode = saveData->gravityMode; + sim->air->airMode = saveData->airMode; + sim->legacy_enable = saveData->legacyEnable; + sim->water_equal_test = saveData->waterEEnabled; + if(saveData->gravityEnable && !sim->grav->ngrav_enable) + { + sim->grav->start_grav_async(); + } + else if(!saveData->gravityEnable && sim->grav->ngrav_enable) + { + sim->grav->stop_grav_async(); + } sim->clear_sim(); - sim->Load(currentSave->GetGameSave()); + sim->Load(saveData); } notifySaveChanged(); - notifyPausedChanged(); } Simulation * GameModel::GetSimulation() |
