summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-23 11:44:20 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-23 11:44:20 (GMT)
commit27755b2f277f14a5428219fe2b7eceddcdfc17fe (patch)
treebad17fcea3fec6132374f783acc8fc9cce92c6fd /src/render
parent8a65c395f490baea3b55f1418207c4ee172a2b3a (diff)
downloadpowder-27755b2f277f14a5428219fe2b7eceddcdfc17fe.zip
powder-27755b2f277f14a5428219fe2b7eceddcdfc17fe.tar.gz
Render options
Diffstat (limited to 'src/render')
-rw-r--r--src/render/RenderController.cpp24
-rw-r--r--src/render/RenderController.h26
-rw-r--r--src/render/RenderModel.cpp42
-rw-r--r--src/render/RenderModel.h30
-rw-r--r--src/render/RenderView.cpp38
-rw-r--r--src/render/RenderView.h29
6 files changed, 189 insertions, 0 deletions
diff --git a/src/render/RenderController.cpp b/src/render/RenderController.cpp
new file mode 100644
index 0000000..6f7f72e
--- /dev/null
+++ b/src/render/RenderController.cpp
@@ -0,0 +1,24 @@
+/*
+ * RenderController.cpp
+ *
+ * Created on: Jan 23, 2012
+ * Author: Simon
+ */
+
+#include "RenderController.h"
+
+RenderController::RenderController(Renderer * ren) {
+ renderView = new RenderView();
+ renderModel = new RenderModel();
+
+ renderView->AttachController(this);
+ renderModel->AddObserver(renderView);
+
+ renderModel->SetRenderer(ren);
+}
+
+RenderController::~RenderController() {
+ delete renderView;
+ delete renderModel;
+}
+
diff --git a/src/render/RenderController.h b/src/render/RenderController.h
new file mode 100644
index 0000000..1c574c1
--- /dev/null
+++ b/src/render/RenderController.h
@@ -0,0 +1,26 @@
+/*
+ * RenderController.h
+ *
+ * Created on: Jan 23, 2012
+ * Author: Simon
+ */
+
+#ifndef RENDERCONTROLLER_H_
+#define RENDERCONTROLLER_H_
+
+#include "RenderView.h"
+#include "RenderModel.h"
+#include "Renderer.h"
+
+class RenderView;
+class RenderModel;
+class RenderController {
+ RenderView * renderView;
+ RenderModel * renderModel;
+public:
+ RenderController(Renderer * ren);
+ RenderView * GetView() { return renderView; }
+ virtual ~RenderController();
+};
+
+#endif /* RENDERCONTROLLER_H_ */
diff --git a/src/render/RenderModel.cpp b/src/render/RenderModel.cpp
new file mode 100644
index 0000000..6bd9bdd
--- /dev/null
+++ b/src/render/RenderModel.cpp
@@ -0,0 +1,42 @@
+/*
+ * RenderModel.cpp
+ *
+ * Created on: Jan 23, 2012
+ * Author: Simon
+ */
+
+#include "RenderModel.h"
+
+RenderModel::RenderModel() {
+ // TODO Auto-generated constructor stub
+
+}
+
+void RenderModel::AddObserver(RenderView * observer)
+{
+ observers.push_back(observer);
+ observer->NotifyRendererChanged(this);
+}
+
+void RenderModel::SetRenderer(Renderer * ren)
+{
+ renderer = ren;
+ notifyRendererChanged();
+}
+
+Renderer * RenderModel::GetRenderer()
+{
+ return renderer;
+}
+
+void RenderModel::notifyRendererChanged()
+{
+ for(int i = 0; i < observers.size(); i++)
+ {
+ observers[i]->NotifyRendererChanged(this);
+ }
+}
+
+RenderModel::~RenderModel() {
+ // TODO Auto-generated destructor stub
+}
diff --git a/src/render/RenderModel.h b/src/render/RenderModel.h
new file mode 100644
index 0000000..b4f9ee8
--- /dev/null
+++ b/src/render/RenderModel.h
@@ -0,0 +1,30 @@
+/*
+ * RenderModel.h
+ *
+ * Created on: Jan 23, 2012
+ * Author: Simon
+ */
+
+#ifndef RENDERMODEL_H_
+#define RENDERMODEL_H_
+
+#include <vector>
+#include "RenderView.h"
+#include "Renderer.h"
+
+using namespace std;
+
+class RenderView;
+class RenderModel {
+ vector<RenderView*> observers;
+ Renderer * renderer;
+ void notifyRendererChanged();
+public:
+ RenderModel();
+ Renderer * GetRenderer();
+ void AddObserver(RenderView * observer);
+ void SetRenderer(Renderer * ren);
+ virtual ~RenderModel();
+};
+
+#endif /* RENDERMODEL_H_ */
diff --git a/src/render/RenderView.cpp b/src/render/RenderView.cpp
new file mode 100644
index 0000000..93c0dec
--- /dev/null
+++ b/src/render/RenderView.cpp
@@ -0,0 +1,38 @@
+/*
+ * RenderView.cpp
+ *
+ * Created on: Jan 23, 2012
+ * Author: Simon
+ */
+
+#include "RenderView.h"
+#include "Graphics.h"
+
+RenderView::RenderView():
+ ui::Window(ui::Point(0, 0), ui::Point(XRES, YRES+MENUSIZE)),
+ ren(NULL)
+{
+ // TODO Auto-generated constructor stub
+
+}
+
+void RenderView::NotifyRendererChanged(RenderModel * sender)
+{
+ ren = sender->GetRenderer();
+}
+
+void RenderView::OnDraw()
+{
+ Graphics * g = ui::Engine::Ref().g;
+ g->clearrect(0, 0, XRES, YRES+MENUSIZE);
+ g->draw_line(XRES-1, 0, XRES-1, YRES+MENUSIZE, 255, 255, 255, XRES+BARSIZE);
+ if(ren)
+ {
+ ren->render_parts();
+ ren->render_fire();
+ }
+}
+
+RenderView::~RenderView() {
+ // TODO Auto-generated destructor stub
+}
diff --git a/src/render/RenderView.h b/src/render/RenderView.h
new file mode 100644
index 0000000..37f023a
--- /dev/null
+++ b/src/render/RenderView.h
@@ -0,0 +1,29 @@
+/*
+ * RenderView.h
+ *
+ * Created on: Jan 23, 2012
+ * Author: Simon
+ */
+
+#ifndef RENDERVIEW_H_
+#define RENDERVIEW_H_
+
+#include "interface/Window.h"
+#include "RenderController.h"
+#include "RenderModel.h"
+#include "Renderer.h"
+
+class RenderController;
+class RenderModel;
+class RenderView: public ui::Window {
+ RenderController * c;
+ Renderer * ren;
+public:
+ RenderView();
+ void NotifyRendererChanged(RenderModel * sender);
+ void AttachController(RenderController * c_) { c = c_; }
+ virtual void OnDraw();
+ virtual ~RenderView();
+};
+
+#endif /* RENDERVIEW_H_ */