summaryrefslogtreecommitdiff
path: root/src/game
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
parent5eb9370fc185103f3f8700f7da31525d5e862f81 (diff)
downloadpowder-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.cpp10
-rw-r--r--src/game/GameModel.cpp22
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()