summaryrefslogtreecommitdiff
path: root/src/game/GameModel.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-20 12:40:34 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-20 12:40:34 (GMT)
commite81e18238df47212d84fa00422a64983857e1ea1 (patch)
tree67c973f1f3666f9f4b230524575cda5dd6cc4cd6 /src/game/GameModel.cpp
parent2be9c925088c16beb144dd9932202416d00ff581 (diff)
parentf6403958de1f67d3bce47f56b40de254c30f5ba4 (diff)
downloadpowder-e81e18238df47212d84fa00422a64983857e1ea1.zip
powder-e81e18238df47212d84fa00422a64983857e1ea1.tar.gz
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/game/GameModel.cpp')
-rw-r--r--src/game/GameModel.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index 054a415..7a1d231 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -170,10 +170,6 @@ GameModel::~GameModel()
for(int i = 0; i < menuList.size(); i++)
{
- for(int j = 0; i < menuList[i]->GetToolList().size(); i++)
- {
- delete menuList[i]->GetToolList()[j];
- }
delete menuList[i];
}
for(int i = 0; i < brushList.size(); i++)
@@ -186,6 +182,8 @@ GameModel::~GameModel()
delete clipboard;
if(stamp)
delete stamp;
+ if(currentSave)
+ delete currentSave;
//if(activeTools)
// delete[] activeTools;
}
@@ -282,8 +280,15 @@ SaveInfo * GameModel::GetSave()
void GameModel::SetSave(SaveInfo * newSave)
{
if(currentSave != newSave)
- delete currentSave;
- currentSave = newSave;
+ {
+ if(currentSave)
+ delete currentSave;
+ if(newSave == NULL)
+ currentSave = NULL;
+ else
+ currentSave = new SaveInfo(*newSave);
+ }
+
if(currentSave && currentSave->GetGameSave())
{
GameSave * saveData = currentSave->GetGameSave();
@@ -451,12 +456,15 @@ void GameModel::ClearSimulation()
void GameModel::SetStamp(GameSave * save)
{
- if(stamp)
- delete stamp;
- if(save)
- stamp = new GameSave(*save);
- else
- stamp = NULL;
+ if(stamp != save)
+ {
+ if(stamp)
+ delete stamp;
+ if(save)
+ stamp = new GameSave(*save);
+ else
+ stamp = NULL;
+ }
}
void GameModel::SetPlaceSave(GameSave * save)