diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2013-03-24 12:24:17 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2013-03-24 12:24:17 (GMT) |
| commit | 9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d (patch) | |
| tree | ac7d040253b459ce102e476cb19ab59e3cfa90d7 /src/gui/options/OptionsModel.cpp | |
| parent | 6bf98ccdca39936a3c51367862eed7c49f8786ec (diff) | |
| parent | bdc69f31c0be94191015838886bdcc2bc67f1acb (diff) | |
| download | powder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.zip powder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.tar.gz | |
Merge branch 'reorganisation' of github.com:FacialTurd/The-Powder-Toy
Diffstat (limited to 'src/gui/options/OptionsModel.cpp')
| -rw-r--r-- | src/gui/options/OptionsModel.cpp | 148 |
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..829bf0c --- /dev/null +++ b/src/gui/options/OptionsModel.cpp @@ -0,0 +1,148 @@ +#include "simulation/Air.h" +#include "gui/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() { +} + |
