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 --- ToolAddPolygon.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) (limited to 'ToolAddPolygon.cpp') diff --git a/ToolAddPolygon.cpp b/ToolAddPolygon.cpp index 37613bf..184d107 100644 --- a/ToolAddPolygon.cpp +++ b/ToolAddPolygon.cpp @@ -1,7 +1,8 @@ #include "ToolAddPolygon.h" +#include -ToolAddPolygon::ToolAddPolygon(EditManager *editManager) { +ToolAddPolygon::ToolAddPolygon(EditManager *editManager) : Renderer(editManager), sidebar(editManager) { this->editManager = editManager; image = gtk_image_new_from_stock(GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_BUTTON); @@ -13,9 +14,54 @@ ToolAddPolygon::~ToolAddPolygon() { } void ToolAddPolygon::activate() { - editManager->addRoom(); + newRoom = Room(); + + editManager->setSelectedObject(NULL); } void ToolAddPolygon::deactivate() { - editManager->finishRoom(); + editManager->addRoom(newRoom); +} + +void ToolAddPolygon::render(const Level &level, const Rectangle &rect, float scale) { + if(editManager->polygonOk(newRoom)) + glColor4f(0.0f, 0.7f, 1.0f, 0.2f); + else + glColor4f(1.0f, 0.3f, 0.3f, 0.2f); + + fillPolygon(newRoom); + + glLineWidth(2.0f); + glColor4f(0.0f, 0.7f, 1.0f, 0.7f); + drawPolygon(newRoom, false); + + if(!newRoom.empty() && editManager->getHoveredVertex()) { + if(!editManager->vertexOk(newRoom, *editManager->getHoveredVertex())) + glColor4f(1.0f, 0.3f, 0.3f, 0.7f); + + glBegin(GL_LINES); + + glVertex2f(newRoom.back().getX(), newRoom.back().getY()); + glVertex2f(editManager->getHoveredVertex()->getX(), editManager->getHoveredVertex()->getY()); + + glEnd(); + } +} + +bool ToolAddPolygon::buttonPress(unsigned int button) { + if(button != 1) + return false; + + if(!editManager->getHoveredVertex()) + return false; + + if(!editManager->vertexOk(newRoom, *editManager->getHoveredVertex())) + return false; + + newRoom.push_back(*editManager->getHoveredVertex()); + + editManager->redraw(); + sidebar.update(); + + return true; } -- cgit v1.2.3