From 953a6ff48ac6c46a0d81bedb0fbdafe5d637666e Mon Sep 17 00:00:00 2001 From: neoraider Date: Mon, 24 Dec 2007 00:04:02 +0000 Subject: zoomedit: Use tools for event handling and rendering --- EditManager.cpp | 68 ++++++++++----------------------------------------------- 1 file changed, 12 insertions(+), 56 deletions(-) (limited to 'EditManager.cpp') diff --git a/EditManager.cpp b/EditManager.cpp index bae061d..2d743f5 100644 --- a/EditManager.cpp +++ b/EditManager.cpp @@ -2,7 +2,7 @@ #include "Window.h" -bool EditManager::lineOk(const Line& l) const { +bool EditManager::lineOk(const Room &newRoom, const Line &l) const { Line l2; for(size_t i = 0; i+2 < newRoom.size(); i++) { @@ -30,10 +30,8 @@ bool EditManager::lineOk(const Line& l) const { EditManager::EditManager(Window *window) { this->window = window; - selectedObject = NULL; - mode = VIEW; - hoveredObject = NULL; + selectedObject = NULL; hasHoveredVertex = false; } @@ -42,40 +40,18 @@ void EditManager::redraw() { window->redraw(); } -void EditManager::addRoom() { - if(mode == VIEW) { - newRoom = Room(); - mode = ADD; +bool EditManager::addRoom(const Room &newRoom) { + if(newRoom.size() > 2 && polygonOk(newRoom)) { + Room *room = new Room(newRoom); + room->setName(idManager.generate("room")); - selectedObject = &newRoom; - - window->update(); - } -} - -void EditManager::finishRoom() { - if(mode == ADD) { - mode = VIEW; - - if(newRoom.size() > 2 && polygonOk(newRoom)) { - newRoom.setName(idManager.generate("room")); - window->getLevel().push_back(SharedPtr(new Room(newRoom))); - selectedObject = &*window->getLevel().back(); - } - else { - selectedObject = NULL; - } + window->getLevel().push_back(SharedPtr(room)); + selectedObject = &*window->getLevel().back(); - window->update(); + return true; } -} - -void EditManager::addVertex(const Vertex &v) { - if(mode != ADD) - return; - newRoom.push_back(v); - window->update(); + return false; } Vertex* EditManager::getHoveredVertex() { @@ -107,27 +83,7 @@ void EditManager::setHoveredVertex(Vertex *v) { window->update(); } -void EditManager::buttonPress(unsigned int button) { - switch(button) { - case 1: - if(!hasHoveredVertex) - break; - - switch(mode) { - case VIEW: - selectedObject = hoveredObject; - break; - - case ADD: - if(vertexOk(hoveredVertex)) - addVertex(hoveredVertex); - } - - window->update(); - } -} - -bool EditManager::vertexOk(const Vertex& v) const { +bool EditManager::vertexOk(const Room &newRoom, const Vertex &v) const { Line l; for(Level::iterator room = window->getLevel().begin(); room != window->getLevel().end(); room++) { @@ -140,7 +96,7 @@ bool EditManager::vertexOk(const Vertex& v) const { l.setVertex1(newRoom.back()); l.setVertex2(v); - return lineOk(l); + return lineOk(newRoom, l); } bool EditManager::polygonOk(const Polygon& polygon) const { -- cgit v1.2.3