summaryrefslogtreecommitdiff
path: root/src/gui/options/OptionsModel.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-22 14:14:17 (GMT)
commit9abe51526cac2634af0541c3de69834dd30e9f78 (patch)
tree6ae4deadfe00a83094b9d288d8c11d8ce823577a /src/gui/options/OptionsModel.cpp
parent2c311b9a36a88fadd96f3d39acb1ab2590835d81 (diff)
downloadpowder-9abe51526cac2634af0541c3de69834dd30e9f78.zip
powder-9abe51526cac2634af0541c3de69834dd30e9f78.tar.gz
Move all GUI source files into gui/
Diffstat (limited to 'src/gui/options/OptionsModel.cpp')
-rw-r--r--src/gui/options/OptionsModel.cpp148
1 files changed, 148 insertions, 0 deletions
diff --git a/src/gui/options/OptionsModel.cpp b/src/gui/options/OptionsModel.cpp
new file mode 100644
index 0000000..8ca2a30
--- /dev/null
+++ b/src/gui/options/OptionsModel.cpp
@@ -0,0 +1,148 @@
+#include "simulation/Air.h"
+#include "game/GameModel.h"
+#include "OptionsModel.h"
+
+OptionsModel::OptionsModel(GameModel * gModel_) {
+ gModel = gModel_;
+ sim = gModel->GetSimulation();
+}
+
+void OptionsModel::AddObserver(OptionsView* view)
+{
+ observers.push_back(view);
+ view->NotifySettingsChanged(this);
+}
+
+bool OptionsModel::GetHeatSimulation()
+{
+ return sim->legacy_enable?false:true;
+}
+
+void OptionsModel::SetHeatSimulation(bool state)
+{
+ sim->legacy_enable = state?0:1;
+ notifySettingsChanged();
+}
+
+bool OptionsModel::GetAmbientHeatSimulation()
+{
+ return sim->aheat_enable?true:false;
+}
+
+void OptionsModel::SetAmbientHeatSimulation(bool state)
+{
+ sim->aheat_enable = state?1:0;
+ notifySettingsChanged();
+}
+
+bool OptionsModel::GetNewtonianGravity()
+{
+ return sim->grav->ngrav_enable?true:false;
+}
+
+void OptionsModel::SetNewtonianGravity(bool state)
+{
+ if(state)
+ sim->grav->start_grav_async();
+ else
+ sim->grav->stop_grav_async();
+ notifySettingsChanged();
+}
+
+bool OptionsModel::GetWaterEqualisation()
+{
+ return sim->water_equal_test?true:false;
+}
+
+void OptionsModel::SetWaterEqualisation(bool state)
+{
+ sim->water_equal_test = state?1:0;
+ notifySettingsChanged();
+}
+
+int OptionsModel::GetAirMode()
+{
+ return sim->air->airMode;
+}
+void OptionsModel::SetAirMode(int airMode)
+{
+ sim->air->airMode = airMode;
+ notifySettingsChanged();
+}
+
+int OptionsModel::GetEdgeMode()
+{
+ return gModel->GetEdgeMode();
+}
+void OptionsModel::SetEdgeMode(int edgeMode)
+{
+ gModel->SetEdgeMode(edgeMode);
+ notifySettingsChanged();
+}
+
+int OptionsModel::GetGravityMode()
+{
+ return sim->gravityMode;
+}
+void OptionsModel::SetGravityMode(int gravityMode)
+{
+ sim->gravityMode = gravityMode;
+ notifySettingsChanged();
+}
+
+bool OptionsModel::GetScale()
+{
+ return ui::Engine::Ref().GetScale()==2;
+}
+void OptionsModel::SetScale(bool doubleScale)
+{
+ ui::Engine::Ref().SetScale(doubleScale?2:1);
+ Client::Ref().SetPref("Scale", int(doubleScale?2:1));
+ notifySettingsChanged();
+}
+
+
+bool OptionsModel::GetFullscreen()
+{
+ return ui::Engine::Ref().GetFullscreen();
+}
+void OptionsModel::SetFullscreen(bool fullscreen)
+{
+ ui::Engine::Ref().SetFullscreen(fullscreen);
+ Client::Ref().SetPref("Fullscreen", bool(fullscreen));
+ notifySettingsChanged();
+}
+
+bool OptionsModel::GetFastQuit()
+{
+ return ui::Engine::Ref().GetFastQuit();
+}
+void OptionsModel::SetFastQuit(bool fastquit)
+{
+ ui::Engine::Ref().SetFastQuit(fastquit);
+ Client::Ref().SetPref("FastQuit", bool(fastquit));
+ notifySettingsChanged();
+}
+
+bool OptionsModel::GetShowAvatars()
+{
+ return Client::Ref().GetPrefBool("ShowAvatars", true);
+}
+
+void OptionsModel::SetShowAvatars(bool state)
+{
+ Client::Ref().SetPref("ShowAvatars", state);
+ notifySettingsChanged();
+}
+
+void OptionsModel::notifySettingsChanged()
+{
+ for(int i = 0; i < observers.size(); i++)
+ {
+ observers[i]->NotifySettingsChanged(this);
+ }
+}
+
+OptionsModel::~OptionsModel() {
+}
+