summaryrefslogtreecommitdiff
path: root/src/game/GameModel.cpp
diff options
context:
space:
mode:
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)