summaryrefslogtreecommitdiff
path: root/src/options
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-08-08 13:35:27 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-08-08 13:35:27 (GMT)
commit10e82df5434c086c2afc3627e5cdf7b88205487f (patch)
tree50fa2561d17305530cf4384c7d75dd4b84fd8129 /src/options
parent152bc8f0924a4502fe6013b1d9957ffe9df8316f (diff)
downloadpowder-10e82df5434c086c2afc3627e5cdf7b88205487f.zip
powder-10e82df5434c086c2afc3627e5cdf7b88205487f.tar.gz
Fullscreen and scale setting from sim options
Diffstat (limited to 'src/options')
-rw-r--r--src/options/OptionsController.cpp13
-rw-r--r--src/options/OptionsController.h2
-rw-r--r--src/options/OptionsModel.cpp21
-rw-r--r--src/options/OptionsModel.h4
-rw-r--r--src/options/OptionsView.cpp27
-rw-r--r--src/options/OptionsView.h2
6 files changed, 68 insertions, 1 deletions
diff --git a/src/options/OptionsController.cpp b/src/options/OptionsController.cpp
index 7fa3309..93d3062 100644
--- a/src/options/OptionsController.cpp
+++ b/src/options/OptionsController.cpp
@@ -38,19 +38,32 @@ 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)
+{
+ model->SetScale(scale);
+}
+
OptionsView * OptionsController::GetView()
{
return view;
diff --git a/src/options/OptionsController.h b/src/options/OptionsController.h
index 821eb68..862a0e2 100644
--- a/src/options/OptionsController.h
+++ b/src/options/OptionsController.h
@@ -29,6 +29,8 @@ public:
void SetGravityMode(int gravityMode);
void SetAirMode(int airMode);
void SetEdgeMode(int airMode);
+ void SetFullscreen(bool fullscreen);
+ void SetScale(bool scale);
void Exit();
OptionsView * GetView();
virtual ~OptionsController();
diff --git a/src/options/OptionsModel.cpp b/src/options/OptionsModel.cpp
index 6fe9a79..6e71f36 100644
--- a/src/options/OptionsModel.cpp
+++ b/src/options/OptionsModel.cpp
@@ -95,6 +95,27 @@ void OptionsModel::SetGravityMode(int gravityMode)
notifySettingsChanged();
}
+bool OptionsModel::GetScale()
+{
+ return ui::Engine::Ref().GetScale()==2;
+}
+void OptionsModel::SetScale(bool doubleScale)
+{
+ ui::Engine::Ref().SetScale(doubleScale?2:1);
+ notifySettingsChanged();
+}
+
+
+bool OptionsModel::GetFullscreen()
+{
+ return ui::Engine::Ref().GetFullscreen();
+}
+void OptionsModel::SetFullscreen(bool fullscreen)
+{
+ ui::Engine::Ref().SetFullscreen(fullscreen);
+ notifySettingsChanged();
+}
+
void OptionsModel::notifySettingsChanged()
{
for(int i = 0; i < observers.size(); i++)
diff --git a/src/options/OptionsModel.h b/src/options/OptionsModel.h
index c7fa6a0..b011fef 100644
--- a/src/options/OptionsModel.h
+++ b/src/options/OptionsModel.h
@@ -34,6 +34,10 @@ public:
void SetEdgeMode(int edgeMode);
int GetGravityMode();
void SetGravityMode(int gravityMode);
+ bool GetFullscreen();
+ void SetFullscreen(bool fullscreen);
+ bool GetScale();
+ void SetScale(bool scale);
virtual ~OptionsModel();
};
diff --git a/src/options/OptionsView.cpp b/src/options/OptionsView.cpp
index 002bc8d..cd4e319 100644
--- a/src/options/OptionsView.cpp
+++ b/src/options/OptionsView.cpp
@@ -12,7 +12,7 @@
#include "interface/DropDown.h"
OptionsView::OptionsView():
- ui::Window(ui::Point(-1, -1), ui::Point(300, 226)){
+ ui::Window(ui::Point(-1, -1), ui::Point(300, 266)){
ui::Label * tempLabel = new ui::Label(ui::Point(4, 5), ui::Point(Size.X-8, 14), "Simulation Options");
tempLabel->SetTextColour(style::Colour::InformationTitle);
@@ -136,6 +136,29 @@ OptionsView::OptionsView():
tempLabel->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; tempLabel->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
AddComponent(tempLabel);
+ class ScaleAction: public ui::CheckboxAction
+ {
+ OptionsView * v;
+ public:
+ ScaleAction(OptionsView * v_){ v = v_; }
+ virtual void ActionCallback(ui::Checkbox * sender){ v->c->SetScale(sender->GetChecked()); }
+ };
+
+ scale = new ui::Checkbox(ui::Point(8, 206), ui::Point(Size.X-6, 16), "Large screen");
+ scale->SetActionCallback(new ScaleAction(this));
+ AddComponent(scale);
+
+ class FullscreenAction: public ui::CheckboxAction
+ {
+ OptionsView * v;
+ public:
+ FullscreenAction(OptionsView * v_){ v = v_; }
+ virtual void ActionCallback(ui::Checkbox * sender){ v->c->SetFullscreen(sender->GetChecked()); }
+ };
+
+ fullscreen = new ui::Checkbox(ui::Point(8, 226), ui::Point(Size.X-6, 16), "Fullscreen");
+ fullscreen->SetActionCallback(new FullscreenAction(this));
+ AddComponent(fullscreen);
class CloseAction: public ui::ButtonAction
{
@@ -164,6 +187,8 @@ void OptionsView::NotifySettingsChanged(OptionsModel * sender)
airMode->SetOption(sender->GetAirMode());
gravityMode->SetOption(sender->GetGravityMode());
edgeMode->SetOption(sender->GetEdgeMode());
+ scale->SetChecked(sender->GetScale());
+ fullscreen->SetChecked(sender->GetFullscreen());
}
void OptionsView::AttachController(OptionsController * c_)
diff --git a/src/options/OptionsView.h b/src/options/OptionsView.h
index 821413d..d0a99ab 100644
--- a/src/options/OptionsView.h
+++ b/src/options/OptionsView.h
@@ -25,6 +25,8 @@ class OptionsView: public ui::Window {
ui::DropDown * airMode;
ui::DropDown * gravityMode;
ui::DropDown * edgeMode;
+ ui::Checkbox * scale;
+ ui::Checkbox * fullscreen;
public:
OptionsView();
void NotifySettingsChanged(OptionsModel * sender);