diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-09 18:42:07 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-06-09 18:42:07 (GMT) |
| commit | 050ad82155344d9ff0db551386c804154bceb560 (patch) | |
| tree | 34e938679d13c1b5e7676bc213236bbf399f581f /src/game/GameModel.cpp | |
| parent | c408e035faf88f968ea208d48ced4b7c3c9dc32d (diff) | |
| download | powder-050ad82155344d9ff0db551386c804154bceb560.zip powder-050ad82155344d9ff0db551386c804154bceb560.tar.gz | |
Unify stamp and clipboard placement code, GameSave translation and transoformation working (not particularly well)
Diffstat (limited to 'src/game/GameModel.cpp')
| -rw-r--r-- | src/game/GameModel.cpp | 34 |
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); } } |
