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.cpp34
1 files changed, 20 insertions, 14 deletions
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index 362eddd..36aef35 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -18,7 +18,8 @@ GameModel::GameModel():
currentSave(NULL),
colourSelector(false),
clipboard(NULL),
- stamp(NULL)
+ stamp(NULL),
+ placeSave(NULL)
{
sim = new Simulation();
ren = new Renderer(ui::Engine::Ref().g, sim);
@@ -430,7 +431,17 @@ void GameModel::SetStamp(GameSave * save)
if(stamp)
delete stamp;
stamp = new GameSave(*save);
- notifyStampChanged();
+}
+
+void GameModel::SetPlaceSave(GameSave * save)
+{
+ if(save != placeSave)
+ delete placeSave;
+ if(save != placeSave)
+ placeSave = new GameSave(*save);
+ else if(!save)
+ placeSave = NULL;
+ notifyPlaceSaveChanged();
}
void GameModel::AddStamp(GameSave * save)
@@ -439,7 +450,6 @@ void GameModel::AddStamp(GameSave * save)
delete stamp;
stamp = new GameSave(*save);
Client::Ref().AddStamp(save);
- notifyClipboardChanged();
}
void GameModel::SetClipboard(GameSave * save)
@@ -447,7 +457,6 @@ void GameModel::SetClipboard(GameSave * save)
if(clipboard)
delete clipboard;
clipboard = save;
- notifyClipboardChanged();
}
GameSave * GameModel::GetClipboard()
@@ -455,6 +464,11 @@ GameSave * GameModel::GetClipboard()
return clipboard;
}
+GameSave * GameModel::GetPlaceSave()
+{
+ return placeSave;
+}
+
GameSave * GameModel::GetStamp()
{
return stamp;
@@ -577,19 +591,11 @@ void GameModel::notifyZoomChanged()
}
}
-void GameModel::notifyStampChanged()
-{
- for(int i = 0; i < observers.size(); i++)
- {
- observers[i]->NotifyStampChanged(this);
- }
-}
-
-void GameModel::notifyClipboardChanged()
+void GameModel::notifyPlaceSaveChanged()
{
for(int i = 0; i < observers.size(); i++)
{
- observers[i]->NotifyClipboardChanged(this);
+ observers[i]->NotifyPlaceSaveChanged(this);
}
}