summaryrefslogtreecommitdiffstats
path: root/EditManager.cpp
blob: 34d53be3b42c9e2bc84e63617b20747a6fd81e26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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();
}