summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-18 15:43:40 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-18 15:43:40 (GMT)
commit7ffaa421d184ef63c9e34fa80b2438d1ec670161 (patch)
tree954bc49bd7304d6054612d1fe8ad42e5ccb64ecd /src
parent5e301ba17c0b73c52189bac329b20143213817bd (diff)
downloadpowder-7ffaa421d184ef63c9e34fa80b2438d1ec670161.zip
powder-7ffaa421d184ef63c9e34fa80b2438d1ec670161.tar.gz
GameModel manages currentSave instance
Diffstat (limited to 'src')
-rw-r--r--src/game/GameController.cpp2
-rw-r--r--src/game/GameModel.cpp8
2 files changed, 8 insertions, 2 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index df5bf68..e681331 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -38,7 +38,7 @@ public:
{
try
{
- cc->gameModel->SetSave(new SaveInfo(*(cc->search->GetLoadedSave())));
+ cc->gameModel->SetSave(cc->search->GetLoadedSave());
}
catch(GameModelException & ex)
{
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index cf9324b..2a18d6b 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -182,6 +182,8 @@ GameModel::~GameModel()
delete clipboard;
if(stamp)
delete stamp;
+ if(currentSave)
+ delete currentSave;
//if(activeTools)
// delete[] activeTools;
}
@@ -279,7 +281,11 @@ void GameModel::SetSave(SaveInfo * newSave)
{
if(currentSave != newSave)
delete currentSave;
- currentSave = newSave;
+ if(newSave == NULL)
+ currentSave = NULL;
+ else if(currentSave != newSave)
+ currentSave = new SaveInfo(*newSave);
+
if(currentSave && currentSave->GetGameSave())
{
GameSave * saveData = currentSave->GetGameSave();