summaryrefslogtreecommitdiff
path: root/src/gui/options/OptionsController.cpp
diff options
context:
space:
mode:
authorSimon 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)
commit9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d (patch)
treeac7d040253b459ce102e476cb19ab59e3cfa90d7 /src/gui/options/OptionsController.cpp
parent6bf98ccdca39936a3c51367862eed7c49f8786ec (diff)
parentbdc69f31c0be94191015838886bdcc2bc67f1acb (diff)
downloadpowder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.zip
powder-9b5b85f9b01cbda7ef9a7ec2a15b2a35630a5b9d.tar.gz
Merge branch 'reorganisation' of github.com:FacialTurd/The-Powder-Toy
Diffstat (limited to 'src/gui/options/OptionsController.cpp')
-rw-r--r--src/gui/options/OptionsController.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/gui/options/OptionsController.cpp b/src/gui/options/OptionsController.cpp
new file mode 100644
index 0000000..672f2fc
--- /dev/null
+++ b/src/gui/options/OptionsController.cpp
@@ -0,0 +1,111 @@
+#include "OptionsController.h"
+#include "gui/dialogues/ErrorMessage.h"
+
+OptionsController::OptionsController(GameModel * gModel_, ControllerCallback * callback_):
+ callback(callback_),
+ gModel(gModel_),
+ HasExited(false)
+{
+ view = new OptionsView();
+ model = new OptionsModel(gModel);
+ model->AddObserver(view);
+
+ view->AttachController(this);
+
+}
+
+void OptionsController::SetHeatSimulation(bool state)
+{
+ model->SetHeatSimulation(state);
+}
+
+void OptionsController::SetAmbientHeatSimulation(bool state)
+{
+ model->SetAmbientHeatSimulation(state);
+}
+
+void OptionsController::SetNewtonianGravity(bool state)
+{
+ model->SetNewtonianGravity(state);
+}
+
+void OptionsController::SetWaterEqualisation(bool state)
+{
+ model->SetWaterEqualisation(state);
+}
+
+void OptionsController::SetGravityMode(int gravityMode)
+{
+ model->SetGravityMode(gravityMode);
+}
+
+void OptionsController::SetAirMode(int airMode)
+{
+ model->SetAirMode(airMode);
+}
+
+void OptionsController::SetEdgeMode(int airMode)
+{
+ model->SetEdgeMode(airMode);
+}
+
+void OptionsController::SetFullscreen(bool fullscreen)
+{
+ model->SetFullscreen(fullscreen);
+}
+
+void OptionsController::SetShowAvatars(bool showAvatars)
+{
+ model->SetShowAvatars(showAvatars);
+}
+
+void OptionsController::SetScale(bool scale)
+{
+ if(scale)
+ {
+ if(ui::Engine::Ref().GetMaxWidth() >= ui::Engine::Ref().GetWidth() * 2 && ui::Engine::Ref().GetMaxHeight() >= ui::Engine::Ref().GetHeight() * 2)
+ model->SetScale(scale);
+ else
+ {
+ new ErrorMessage("Screen resolution error", "Your screen size is too small to use this scale mode.");
+ model->SetScale(false);
+ }
+ }
+ else
+ model->SetScale(scale);
+
+}
+
+void OptionsController::SetFastQuit(bool fastquit)
+{
+ model->SetFastQuit(fastquit);
+}
+
+OptionsView * OptionsController::GetView()
+{
+ return view;
+}
+
+void OptionsController::Exit()
+{
+ if(ui::Engine::Ref().GetWindow() == view)
+ {
+ ui::Engine::Ref().CloseWindow();
+ }
+ if(callback)
+ callback->ControllerExit();
+ HasExited = true;
+}
+
+
+OptionsController::~OptionsController() {
+ if(ui::Engine::Ref().GetWindow() == view)
+ {
+ ui::Engine::Ref().CloseWindow();
+ }
+ delete model;
+ delete view;
+ if(callback)
+ delete callback;
+}
+