summaryrefslogtreecommitdiff
path: root/src/game/GameModel.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-07-27 19:06:17 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-07-27 19:06:17 (GMT)
commit5befe5c25f8f188e7588de44ab2c8bead22ae999 (patch)
tree643b02af217770c1a3156be03e01442557795760 /src/game/GameModel.cpp
parentf8ca8af387b8611c18ca7c5357efd19c8bc28941 (diff)
downloadpowder-5befe5c25f8f188e7588de44ab2c8bead22ae999.zip
powder-5befe5c25f8f188e7588de44ab2c8bead22ae999.tar.gz
Local file browser + some more interesting things like Progress bar UI component
Diffstat (limited to 'src/game/GameModel.cpp')
-rw-r--r--src/game/GameModel.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index 536ca42..fef4e61 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -308,6 +308,34 @@ void GameModel::SetSave(SaveInfo * newSave)
notifySaveChanged();
}
+void GameModel::SetSaveFile(SaveFile * newSave)
+{
+ SetSave(NULL);
+
+ if(newSave && newSave->GetGameSave())
+ {
+ GameSave * saveData = newSave->GetGameSave();
+ SetPaused(saveData->paused & GetPaused());
+ 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(saveData);
+ }
+ delete newSave;
+
+ notifySaveChanged();
+}
+
Simulation * GameModel::GetSimulation()
{
return sim;