mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-08-09 09:56:35 +02:00
Functional checkbox on render options screen
This commit is contained in:
@@ -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();
|
||||||
|
@@ -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();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
|
@@ -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_ */
|
||||||
|
@@ -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;
|
||||||
|
@@ -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();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -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_; }
|
||||||
|
Reference in New Issue
Block a user