summaryrefslogtreecommitdiffstats
path: root/EditManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'EditManager.cpp')
-rw-r--r--EditManager.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/EditManager.cpp b/EditManager.cpp
new file mode 100644
index 0000000..34d53be
--- /dev/null
+++ b/EditManager.cpp
@@ -0,0 +1,40 @@
+#include "EditManager.h"
+#include "Window.h"
+#include "edit.h"
+
+
+EditManager::EditManager(Window *window) {
+ this->window = window;
+
+ mode = VIEW;
+}
+
+void EditManager::addRoom() {
+ //newRoom = Room();
+ mode = ADD;
+
+ startAddMode();
+
+ window->update();
+}
+
+void EditManager::finishRoom() {
+ mode = VIEW;
+
+ if(getActiveRoom() && getActiveRoom()->size() > 2 && isPolygonOk(getActiveRoom())) {
+ getLevel()->push_back(*getActiveRoom());
+ setActiveRoom(&getLevel()->back());
+
+ endAddMode();
+ }
+
+ window->update();
+}
+
+void EditManager::addVertex(const Vertex &v) {
+ if(mode != ADD || !getActiveRoom())
+ return;
+
+ getActiveRoom()->push_back(v);
+ window->update();
+}