summaryrefslogtreecommitdiff
path: root/src/options
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-08-05 17:35:12 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-08-05 17:35:12 (GMT)
commit4ce22e4e7705224a9b4c1b9bfa8886de0029a3e3 (patch)
treed9c02db57d9a20709758d7b771ee60ea9cbe4e88 /src/options
parent30f8049efc6efc086509d235df413e4932dab83e (diff)
downloadpowder-4ce22e4e7705224a9b4c1b9bfa8886de0029a3e3.zip
powder-4ce22e4e7705224a9b4c1b9bfa8886de0029a3e3.tar.gz
Wall Edge option, fixes #70
Diffstat (limited to 'src/options')
-rw-r--r--src/options/OptionsController.cpp4
-rw-r--r--src/options/OptionsController.h1
-rw-r--r--src/options/OptionsModel.cpp10
-rw-r--r--src/options/OptionsModel.h2
-rw-r--r--src/options/OptionsView.cpp21
-rw-r--r--src/options/OptionsView.h1
6 files changed, 38 insertions, 1 deletions
diff --git a/src/options/OptionsController.cpp b/src/options/OptionsController.cpp
index f007316..7fa3309 100644
--- a/src/options/OptionsController.cpp
+++ b/src/options/OptionsController.cpp
@@ -46,6 +46,10 @@ void OptionsController::SetAirMode(int airMode)
{
model->SetAirMode(airMode);
}
+void OptionsController::SetEdgeMode(int airMode)
+{
+ model->SetEdgeMode(airMode);
+}
OptionsView * OptionsController::GetView()
{
diff --git a/src/options/OptionsController.h b/src/options/OptionsController.h
index 19f0e9b..821eb68 100644
--- a/src/options/OptionsController.h
+++ b/src/options/OptionsController.h
@@ -28,6 +28,7 @@ public:
void SetWaterEqualisation(bool state);
void SetGravityMode(int gravityMode);
void SetAirMode(int airMode);
+ void SetEdgeMode(int airMode);
void Exit();
OptionsView * GetView();
virtual ~OptionsController();
diff --git a/src/options/OptionsModel.cpp b/src/options/OptionsModel.cpp
index b24a513..6fe9a79 100644
--- a/src/options/OptionsModel.cpp
+++ b/src/options/OptionsModel.cpp
@@ -75,6 +75,16 @@ void OptionsModel::SetAirMode(int airMode)
notifySettingsChanged();
}
+int OptionsModel::GetEdgeMode()
+{
+ return sim->edgeMode;
+}
+void OptionsModel::SetEdgeMode(int edgeMode)
+{
+ sim->SetEdgeMode(edgeMode);
+ notifySettingsChanged();
+}
+
int OptionsModel::GetGravityMode()
{
return sim->gravityMode;
diff --git a/src/options/OptionsModel.h b/src/options/OptionsModel.h
index 8f83fc8..c7fa6a0 100644
--- a/src/options/OptionsModel.h
+++ b/src/options/OptionsModel.h
@@ -30,6 +30,8 @@ public:
void SetWaterEqualisation(bool state);
int GetAirMode();
void SetAirMode(int airMode);
+ int GetEdgeMode();
+ void SetEdgeMode(int edgeMode);
int GetGravityMode();
void SetGravityMode(int gravityMode);
virtual ~OptionsModel();
diff --git a/src/options/OptionsView.cpp b/src/options/OptionsView.cpp
index 1e0aea7..002bc8d 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, 206)){
+ ui::Window(ui::Point(-1, -1), ui::Point(300, 226)){
ui::Label * tempLabel = new ui::Label(ui::Point(4, 5), ui::Point(Size.X-8, 14), "Simulation Options");
tempLabel->SetTextColour(style::Colour::InformationTitle);
@@ -118,6 +118,24 @@ OptionsView::OptionsView():
tempLabel->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; tempLabel->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
AddComponent(tempLabel);
+ class EdgeModeChanged: public ui::DropDownAction
+ {
+ OptionsView * v;
+ public:
+ EdgeModeChanged(OptionsView * v): v(v) { }
+ virtual void OptionChanged(ui::DropDown * sender, std::pair<std::string, int> option) { v->c->SetEdgeMode(option.second); }
+ };
+
+ edgeMode = new ui::DropDown(ui::Point(Size.X-88, 186), ui::Point(80, 16));
+ AddComponent(edgeMode);
+ edgeMode->AddOption(std::pair<std::string, int>("Void", 0));
+ edgeMode->AddOption(std::pair<std::string, int>("Solid", 1));
+ edgeMode->SetActionCallback(new EdgeModeChanged(this));
+
+ tempLabel = new ui::Label(ui::Point(8, 186), ui::Point(Size.X-96, 16), "Edge Mode");
+ tempLabel->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; tempLabel->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
+ AddComponent(tempLabel);
+
class CloseAction: public ui::ButtonAction
{
@@ -145,6 +163,7 @@ void OptionsView::NotifySettingsChanged(OptionsModel * sender)
waterEqualisation->SetChecked(sender->GetWaterEqualisation());
airMode->SetOption(sender->GetAirMode());
gravityMode->SetOption(sender->GetGravityMode());
+ edgeMode->SetOption(sender->GetEdgeMode());
}
void OptionsView::AttachController(OptionsController * c_)
diff --git a/src/options/OptionsView.h b/src/options/OptionsView.h
index 5103f23..821413d 100644
--- a/src/options/OptionsView.h
+++ b/src/options/OptionsView.h
@@ -24,6 +24,7 @@ class OptionsView: public ui::Window {
ui::Checkbox * waterEqualisation;
ui::DropDown * airMode;
ui::DropDown * gravityMode;
+ ui::DropDown * edgeMode;
public:
OptionsView();
void NotifySettingsChanged(OptionsModel * sender);