summaryrefslogtreecommitdiffstats
path: root/src/View
diff options
context:
space:
mode:
Diffstat (limited to 'src/View')
-rw-r--r--src/View/MapView.cpp13
-rw-r--r--src/View/TopView.cpp14
-rw-r--r--src/View/TopView.h17
3 files changed, 24 insertions, 20 deletions
diff --git a/src/View/MapView.cpp b/src/View/MapView.cpp
index 224cd37..2569a3c 100644
--- a/src/View/MapView.cpp
+++ b/src/View/MapView.cpp
@@ -19,10 +19,13 @@
#include "MapView.h"
#include "TopView.h"
+
+#include <Instance.h>
#include <Data/Level.h>
#include <Data/Room.h>
#include <Data/Triangle.h>
#include <Gui/RenderArea.h>
+
#include <GL/gl.h>
#include <cmath>
#include <list>
@@ -96,7 +99,7 @@ void MapView::click(float x, float y, unsigned int button) {
void MapView::render() {
glClear(GL_COLOR_BUFFER_BIT);
- if(!mainView || !mainView->getLevel())
+ if(!mainView || !mainView->getInstance()->getLevel())
return;
float minX, maxX, minY, maxY;
@@ -116,10 +119,10 @@ void MapView::render() {
glScalef(scale, scale, 1);
glTranslatef(-xCenter, -yCenter, 0);
- const std::list<Data::Room*> &rooms = mainView->getLevel()->getRooms();
+ const std::list<Data::Room*> &rooms = mainView->getInstance()->getLevel()->getRooms();
for(std::list<Data::Room*>::const_iterator room = rooms.begin(); room != rooms.end(); ++room)
- TopView::renderRoom(*room);
+ TopView::renderRoom(*room, (*room == mainView->getInstance()->getSelectedRoom()));
float mainXCenter = mainView->getXCenter(), mainYCenter = mainView->getYCenter();
float mainScale = mainView->getScale();
@@ -163,10 +166,10 @@ void MapView::getBounds(float *minX, float *maxX, float *minY, float *maxY) {
if(maxY)
*maxY = 0;
- if(!mainView || !mainView->getLevel())
+ if(!mainView || !mainView->getInstance()->getLevel())
return;
- const std::list<Data::Room*> &rooms = mainView->getLevel()->getRooms();
+ const std::list<Data::Room*> &rooms = mainView->getInstance()->getLevel()->getRooms();
for(std::list<Data::Room*>::const_iterator room = rooms.begin(); room != rooms.end(); ++room) {
const std::list<Data::Triangle*> &triangles = (*room)->getTriangles();
diff --git a/src/View/TopView.cpp b/src/View/TopView.cpp
index 12bbe4a..7e649cc 100644
--- a/src/View/TopView.cpp
+++ b/src/View/TopView.cpp
@@ -18,11 +18,14 @@
*/
#include "TopView.h"
+
+#include <Instance.h>
#include <Data/Level.h>
#include <Data/Room.h>
#include <Data/Triangle.h>
#include <Gui/RenderArea.h>
#include <Math/Triangle2D.h>
+
#include <GL/gl.h>
#include <cmath>
#include <set>
@@ -218,13 +221,13 @@ void TopView::render() {
drawGrid();
- if(!level)
+ if(!instance->getLevel())
return;
- const std::list<Data::Room*> &rooms = level->getRooms();
+ const std::list<Data::Room*> &rooms = instance->getLevel()->getRooms();
for(std::list<Data::Room*>::const_iterator room = rooms.begin(); room != rooms.end(); ++room)
- renderRoom(*room, *room == selectedRoom);
+ renderRoom(*room, *room == instance->getSelectedRoom());
}
void TopView::click(float x, float y, unsigned int button) {
@@ -233,9 +236,9 @@ void TopView::click(float x, float y, unsigned int button) {
vmml::vec2f v(xCenter + x/scale, yCenter + y/scale);
- selectedRoom = 0;
+ Data::Room *selectedRoom = 0;
- const std::list<Data::Room*>& rooms = level->getRooms();
+ const std::list<Data::Room*> &rooms = instance->getLevel()->getRooms();
for(std::list<Data::Room*>::const_iterator room = rooms.begin(); room != rooms.end(); ++room) {
const std::list<Data::Triangle*>& triangles = (*room)->getTriangles();
@@ -255,6 +258,7 @@ void TopView::click(float x, float y, unsigned int button) {
break;
}
+ instance->setSelectedRoom(selectedRoom);
signalUpdate().emit();
}
diff --git a/src/View/TopView.h b/src/View/TopView.h
index c164f31..085d244 100644
--- a/src/View/TopView.h
+++ b/src/View/TopView.h
@@ -27,6 +27,8 @@
namespace ZoomEdit {
+class Instance;
+
namespace Data {
class Level;
class Room;
@@ -45,7 +47,7 @@ class TopView : public View {
bool operator<(const Edge &e) const;
};
- Data::Level *level;
+ Instance *instance;
float viewWidth, viewHeight;
@@ -54,14 +56,14 @@ class TopView : public View {
int zoomLevel;
float scale;
- Data::Room *selectedRoom;
-
void drawGrid();
public:
- TopView(Data::Level *level0 = 0)
- : level(level0), viewWidth(0), viewHeight(0), xCenter(0), yCenter(0), zoomLevel(0), scale(100), selectedRoom(0) {}
+ TopView(Instance *instance0)
+ : instance(instance0), viewWidth(0), viewHeight(0), xCenter(0), yCenter(0), zoomLevel(0), scale(100) {}
+ Instance* getInstance() {return instance;}
+
float getWidth() const {return viewWidth;}
float getHeight() const {return viewHeight;}
@@ -72,11 +74,6 @@ class TopView : public View {
float getScale() const {return scale;}
- Data::Room* getSelectedRoom() {return selectedRoom;}
-
- Data::Level* getLevel() {return level;}
- void setLevel(Data::Level *level0) {level = level0; signalUpdate().emit();}
-
virtual void init();
virtual void resize(float width, float height);