summaryrefslogtreecommitdiff
path: root/src/game/GameModel.cpp
diff options
context:
space:
mode:
authorSimon 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)
commit3205df3a2188e6e314d7393381403dd04cd85623 (patch)
tree5f3ec4728b3d4edd7eead8a581abead144eb2b07 /src/game/GameModel.cpp
parent5eb9370fc185103f3f8700f7da31525d5e862f81 (diff)
downloadpowder-3205df3a2188e6e314d7393381403dd04cd85623.zip
powder-3205df3a2188e6e314d7393381403dd04cd85623.tar.gz
Saving and loading other flags from GameSave, remove old saveloader
Diffstat (limited to 'src/game/GameModel.cpp')
-rw-r--r--src/game/GameModel.cpp22
1 files changed, 18 insertions, 4 deletions
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()