diff options
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..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() { +} + |
