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.cpp54
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++)