Functional checkbox on render options screen

This commit is contained in:
Simon Robertshaw
2012-01-27 11:05:26 +00:00
parent ebd80c73de
commit 1c971e4b42
8 changed files with 68 additions and 4 deletions

View File

@@ -6,6 +6,7 @@
*/ */
#include <math.h> #include <math.h>
#include <iostream>
#include "Config.h" #include "Config.h"
#include "Renderer.h" #include "Renderer.h"
#include "Graphics.h" #include "Graphics.h"
@@ -1683,6 +1684,13 @@ void Renderer::CompileRenderMode()
void Renderer::AddRenderMode(unsigned int mode) void Renderer::AddRenderMode(unsigned int mode)
{ {
for(int i = 0; i < render_modes.size(); i++)
{
if(render_modes[i] == mode)
{
return;
}
}
render_modes.push_back(mode); render_modes.push_back(mode);
CompileRenderMode(); CompileRenderMode();
} }
@@ -1694,7 +1702,7 @@ void Renderer::RemoveRenderMode(unsigned int mode)
if(render_modes[i] == mode) if(render_modes[i] == mode)
{ {
render_modes.erase(render_modes.begin() + i); render_modes.erase(render_modes.begin() + i);
return; i = 0;
} }
} }
CompileRenderMode(); CompileRenderMode();
@@ -1709,6 +1717,13 @@ void Renderer::CompileDisplayMode()
void Renderer::AddDisplayMode(unsigned int mode) void Renderer::AddDisplayMode(unsigned int mode)
{ {
for(int i = 0; i < display_modes.size(); i++)
{
if(display_modes[i] == mode)
{
return;
}
}
display_modes.push_back(mode); display_modes.push_back(mode);
CompileDisplayMode(); CompileDisplayMode();
} }
@@ -1720,7 +1735,7 @@ void Renderer::RemoveDisplayMode(unsigned int mode)
if(display_modes[i] == mode) if(display_modes[i] == mode)
{ {
display_modes.erase(display_modes.begin() + i); display_modes.erase(display_modes.begin() + i);
return; i = 0;
} }
} }
CompileDisplayMode(); CompileDisplayMode();

View File

@@ -33,6 +33,8 @@ public:
virtual void OnMouseClick(int x, int y, unsigned int button); virtual void OnMouseClick(int x, int y, unsigned int button);
virtual void OnMouseUp(int x, int y, unsigned int button); virtual void OnMouseUp(int x, int y, unsigned int button);
void SetActionCallback(CheckboxAction * action); void SetActionCallback(CheckboxAction * action);
CheckboxAction * GetActionCallback() { return actionCallback; }
bool IsChecked() { return checked; }
virtual ~Checkbox(); virtual ~Checkbox();
}; };
} }

View File

@@ -20,6 +20,16 @@ RenderController::RenderController(Renderer * ren, ControllerCallback * callback
this->callback = callback; this->callback = callback;
} }
void RenderController::SetRenderMode(unsigned int renderMode)
{
renderModel->SetRenderMode(renderMode);
}
void RenderController::UnsetRenderMode(unsigned int renderMode)
{
renderModel->UnsetRenderMode(renderMode);
}
void RenderController::Exit() void RenderController::Exit()
{ {
if(ui::Engine::Ref().GetWindow() == renderView) if(ui::Engine::Ref().GetWindow() == renderView)

View File

@@ -25,6 +25,8 @@ public:
void Exit(); void Exit();
RenderView * GetView() { return renderView; } RenderView * GetView() { return renderView; }
virtual ~RenderController(); virtual ~RenderController();
void SetRenderMode(unsigned int renderMode);
void UnsetRenderMode(unsigned int renderMode);
}; };
#endif /* RENDERCONTROLLER_H_ */ #endif /* RENDERCONTROLLER_H_ */

View File

@@ -18,6 +18,16 @@ void RenderModel::AddObserver(RenderView * observer)
observer->NotifyRendererChanged(this); observer->NotifyRendererChanged(this);
} }
void RenderModel::SetRenderMode(unsigned int renderMode)
{
renderer->AddRenderMode(renderMode);
}
void RenderModel::UnsetRenderMode(unsigned int renderMode)
{
renderer->RemoveRenderMode(renderMode);
}
void RenderModel::SetRenderer(Renderer * ren) void RenderModel::SetRenderer(Renderer * ren)
{ {
renderer = ren; renderer = ren;

View File

@@ -24,6 +24,8 @@ public:
Renderer * GetRenderer(); Renderer * GetRenderer();
void AddObserver(RenderView * observer); void AddObserver(RenderView * observer);
void SetRenderer(Renderer * ren); void SetRenderer(Renderer * ren);
void SetRenderMode(unsigned int renderMode);
void UnsetRenderMode(unsigned int renderMode);
virtual ~RenderModel(); virtual ~RenderModel();
}; };

View File

@@ -5,16 +5,38 @@
* Author: Simon * Author: Simon
*/ */
#include "RenderView.h" #include "simulation/ElementGraphics.h"
#include "Graphics.h" #include "Graphics.h"
#include "Renderer.h"
#include "RenderView.h"
class RenderView::RenderModeAction: public ui::CheckboxAction
{
RenderView * v;
unsigned int renderMode;
public:
RenderModeAction(RenderView * v_, unsigned int renderMode_)
{
v = v_;
renderMode = renderMode_;
}
virtual void ActionCallback(ui::Checkbox * sender)
{
if(sender->IsChecked())
v->c->SetRenderMode(renderMode);
else
v->c->UnsetRenderMode(renderMode);
}
};
RenderView::RenderView(): RenderView::RenderView():
ui::Window(ui::Point(0, 0), ui::Point(XRES, YRES+MENUSIZE)), ui::Window(ui::Point(0, 0), ui::Point(XRES, YRES+MENUSIZE)),
ren(NULL) ren(NULL)
{ {
ui::Checkbox * tCheckbox; ui::Checkbox * tCheckbox;
tCheckbox = new ui::Checkbox(ui::Point(0, YRES+5), ui::Point(100, 16), "Thing"); tCheckbox = new ui::Checkbox(ui::Point(0, YRES+5), ui::Point(100, 16), "Blob");
renderModes.push_back(tCheckbox); renderModes.push_back(tCheckbox);
tCheckbox->SetActionCallback(new RenderModeAction(this, RENDER_BLOB));
AddComponent(tCheckbox); AddComponent(tCheckbox);
} }

View File

@@ -23,6 +23,7 @@ class RenderView: public ui::Window {
Renderer * ren; Renderer * ren;
std::vector<ui::Checkbox*> renderModes; std::vector<ui::Checkbox*> renderModes;
public: public:
class RenderModeAction;
RenderView(); RenderView();
void NotifyRendererChanged(RenderModel * sender); void NotifyRendererChanged(RenderModel * sender);
void AttachController(RenderController * c_) { c = c_; } void AttachController(RenderController * c_) { c = c_; }