diff options
Diffstat (limited to 'src/game/GameModel.cpp')
| -rw-r--r-- | src/game/GameModel.cpp | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 1b7e2aa..2870d0d 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -26,7 +26,8 @@ GameModel::GameModel(): stamp(NULL), placeSave(NULL), colour(255, 0, 0, 255), - toolStrength(1.0f) + toolStrength(1.0f), + activeColourPreset(-1) { sim = new Simulation(); ren = new Renderer(ui::Engine::Ref().g, sim); @@ -88,6 +89,14 @@ GameModel::GameModel(): unsigned char colourA = min(Client::Ref().GetPrefInteger("Decoration.Alpha", 255), 255); SetColourSelectorColour(ui::Colour(colourR, colourG, colourB, colourA)); + + colourPresets.push_back(ui::Colour(255, 255, 255)); + colourPresets.push_back(ui::Colour(0, 255, 255)); + colourPresets.push_back(ui::Colour(255, 0, 255)); + colourPresets.push_back(ui::Colour(255, 255, 0)); + colourPresets.push_back(ui::Colour(255, 0, 0)); + colourPresets.push_back(ui::Colour(0, 255, 0)); + colourPresets.push_back(ui::Colour(0, 0, 255)); } GameModel::~GameModel() @@ -338,6 +347,8 @@ void GameModel::AddObserver(GameView * observer){ observer->NotifyZoomChanged(this); observer->NotifyColourSelectorVisibilityChanged(this); observer->NotifyColourSelectorColourChanged(this); + observer->NotifyColourPresetsChanged(this); + observer->NotifyColourActivePresetChanged(this); observer->NotifyQuickOptionsChanged(this); observer->NotifyLastToolChanged(this); UpdateQuickOptions(); @@ -560,6 +571,31 @@ int GameModel::GetZoomFactor() return ren->ZFACTOR; } +void GameModel::SetActiveColourPreset(int preset) +{ + activeColourPreset = preset; + notifyColourActivePresetChanged(); +} + +int GameModel::GetActiveColourPreset() +{ + return activeColourPreset; +} + +void GameModel::SetPresetColour(ui::Colour colour) +{ + if(activeColourPreset >= 0 && activeColourPreset < colourPresets.size()) + { + colourPresets[activeColourPreset] = colour; + notifyColourPresetsChanged(); + } +} + +std::vector<ui::Colour> GameModel::GetColourPresets() +{ + return colourPresets; +} + void GameModel::SetColourSelectorVisibility(bool visibility) { if(colourSelector != visibility) @@ -757,6 +793,22 @@ void GameModel::notifyNotificationsChanged() } } +void GameModel::notifyColourPresetsChanged() +{ + for(std::vector<GameView*>::iterator iter = observers.begin(); iter != observers.end(); ++iter) + { + (*iter)->NotifyColourPresetsChanged(this); + } +} + +void GameModel::notifyColourActivePresetChanged() +{ + for(std::vector<GameView*>::iterator iter = observers.begin(); iter != observers.end(); ++iter) + { + (*iter)->NotifyColourActivePresetChanged(this); + } +} + void GameModel::notifyColourSelectorColourChanged() { for(int i = 0; i < observers.size(); i++) |
