summaryrefslogtreecommitdiff
path: root/src/options/OptionsController.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:44:09 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-11-17 19:44:09 (GMT)
commit058a2edd75debbd0297f92572316daa704bd379f (patch)
treead303f091f9a08b209b91eb34a9fcad996a3de69 /src/options/OptionsController.cpp
parente3594aba9e05c6865d396418c028049cda92c2f3 (diff)
parent7a21ae192fe19868539956f3fe28e62b2c7c4429 (diff)
downloadpowder-058a2edd75debbd0297f92572316daa704bd379f.zip
powder-058a2edd75debbd0297f92572316daa704bd379f.tar.gz
Merge branch 'master' of github.com:FacialTurd/PowderToypp
Diffstat (limited to 'src/options/OptionsController.cpp')
-rw-r--r--src/options/OptionsController.cpp113
1 files changed, 113 insertions, 0 deletions
diff --git a/src/options/OptionsController.cpp b/src/options/OptionsController.cpp
new file mode 100644
index 0000000..3973fed
--- /dev/null
+++ b/src/options/OptionsController.cpp
@@ -0,0 +1,113 @@
+/*
+ * OptionsController.cpp
+ *
+ * Created on: Apr 14, 2012
+ * Author: Simon
+ */
+
+#include "OptionsController.h"
+#include "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::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;
+}
+