Render options

This commit is contained in:
Simon Robertshaw 2012-01-23 11:44:20 +00:00
parent 8a65c395f4
commit 27755b2f27
7 changed files with 192 additions and 1 deletions

View File

@ -5,6 +5,7 @@
#include "GameController.h"
#include "GameModel.h"
#include "search/SearchController.h"
#include "render/RenderController.h"
#include "interface/Point.h"
using namespace std;
@ -134,7 +135,8 @@ void GameController::OpenDisplayOptions()
void GameController::OpenRenderOptions()
{
//TODO: Implement
RenderController * renderController = new RenderController(gameModel->GetRenderer());
ui::Engine::Ref().ShowWindow(renderController->GetView());
}
void GameController::OpenSaveWindow()

View File

@ -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;
}

View File

@ -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_ */

View File

@ -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
}

30
src/render/RenderModel.h Normal file
View File

@ -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_ */

38
src/render/RenderView.cpp Normal file
View File

@ -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
}

29
src/render/RenderView.h Normal file
View File

@ -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_ */