summary refs log tree commit diff stats
path: root/tools/mapedit/src/map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mapedit/src/map.cpp')
-rw-r--r--tools/mapedit/src/map.cpp216
1 files changed, 180 insertions, 36 deletions
diff --git a/tools/mapedit/src/map.cpp b/tools/mapedit/src/map.cpp index 0db7031..fb675e8 100644 --- a/tools/mapedit/src/map.cpp +++ b/tools/mapedit/src/map.cpp
@@ -1,5 +1,8 @@
1#include "map.h" 1#include "map.h"
2#include "frame.h" 2#include "frame.h"
3#include "object.h"
4#include "world.h"
5#include "consts.h"
3 6
4Map::Map(int id, World* world) : id(id), world(world) 7Map::Map(int id, World* world) : id(id), world(world)
5{ 8{
@@ -13,13 +16,19 @@ Map::Map(const Map& map)
13 16
14 id = map.id; 17 id = map.id;
15 title = map.title; 18 title = map.title;
16 leftmap = map.leftmap;
17 rightmap = map.rightmap;
18 objects = map.objects; 19 objects = map.objects;
19 world = map.world; 20 world = map.world;
20 treeItemId = map.treeItemId; 21 treeItemId = map.treeItemId;
21 children = map.children; 22 children = map.children;
22 hidden = map.hidden; 23 hidden = map.hidden;
24 leftType = map.leftType;
25 rightType = map.rightType;
26 upType = map.upType;
27 downType = map.downType;
28 leftMap = map.leftMap;
29 rightMap = map.rightMap;
30 downMap = map.downMap;
31 upMap = map.upMap;
23} 32}
24 33
25Map::Map(Map&& map) : Map(-1, map.world) 34Map::Map(Map&& map) : Map(-1, map.world)
@@ -43,14 +52,67 @@ void swap(Map& first, Map& second)
43{ 52{
44 std::swap(first.mapdata, second.mapdata); 53 std::swap(first.mapdata, second.mapdata);
45 std::swap(first.title, second.title); 54 std::swap(first.title, second.title);
46 std::swap(first.leftmap, second.leftmap);
47 std::swap(first.rightmap, second.rightmap);
48 std::swap(first.objects, second.objects); 55 std::swap(first.objects, second.objects);
49 std::swap(first.id, second.id); 56 std::swap(first.id, second.id);
50 std::swap(first.world, second.world); 57 std::swap(first.world, second.world);
51 std::swap(first.treeItemId, second.treeItemId); 58 std::swap(first.treeItemId, second.treeItemId);
52 std::swap(first.children, second.children); 59 std::swap(first.children, second.children);
53 std::swap(first.hidden, second.hidden); 60 std::swap(first.hidden, second.hidden);
61 std::swap(first.leftType, second.leftType);
62 std::swap(first.rightType, second.rightType);
63 std::swap(first.upType, second.upType);
64 std::swap(first.downType, second.downType);
65 std::swap(first.leftMap, second.leftMap);
66 std::swap(first.rightMap, second.rightMap);
67 std::swap(first.downMap, second.downMap);
68 std::swap(first.upMap, second.upMap);
69}
70
71std::list<Map::MoveType> Map::listMoveTypes()
72{
73 return {MoveType::Wall, MoveType::Wrap, MoveType::Warp, MoveType::ReverseWarp};
74}
75
76std::string Map::stringForMoveType(MoveType type)
77{
78 switch (type)
79 {
80 case MoveType::Wall: return "Wall";
81 case MoveType::Warp: return "Warp";
82 case MoveType::Wrap: return "Wrap";
83 case MoveType::ReverseWarp: return "Reverse Warp";
84 }
85}
86
87bool Map::moveTypeTakesMap(MoveType type)
88{
89 switch (type)
90 {
91 case MoveType::Wall: return false;
92 case MoveType::Wrap: return false;
93 case MoveType::Warp: return true;
94 case MoveType::ReverseWarp: return true;
95 }
96}
97
98std::string Map::shortForMoveType(MoveType type)
99{
100 switch (type)
101 {
102 case MoveType::Wall: return "wall";
103 case MoveType::Wrap: return "wrap";
104 case MoveType::Warp: return "warp";
105 case MoveType::ReverseWarp: return "reverseWarp";
106 }
107}
108
109Map::MoveType Map::moveTypeForShort(std::string str)
110{
111 if (str == "wrap") return MoveType::Wrap;
112 if (str == "warp") return MoveType::Warp;
113 if (str == "reverseWarp") return MoveType::ReverseWarp;
114
115 return MoveType::Wall;
54} 116}
55 117
56int Map::getID() const 118int Map::getID() const
@@ -73,26 +135,6 @@ const std::list<std::shared_ptr<MapObjectEntry>>& Map::getObjects() const
73 return objects; 135 return objects;
74} 136}
75 137
76std::shared_ptr<Map> Map::getLeftmap() const
77{
78 if (leftmap == -1)
79 {
80 return std::shared_ptr<Map>();
81 } else {
82 return world->getMap(leftmap);
83 }
84}
85
86std::shared_ptr<Map> Map::getRightmap() const
87{
88 if (rightmap == -1)
89 {
90 return std::shared_ptr<Map>();
91 } else {
92 return world->getMap(rightmap);
93 }
94}
95
96wxTreeItemId Map::getTreeItemId() const 138wxTreeItemId Map::getTreeItemId() const
97{ 139{
98 return treeItemId; 140 return treeItemId;
@@ -125,6 +167,47 @@ bool Map::getHidden() const
125 return hidden; 167 return hidden;
126} 168}
127 169
170Map::MoveType Map::getLeftMoveType() const
171{
172 return leftType;
173}
174
175Map::MoveType Map::getRightMoveType() const
176{
177 return rightType;
178}
179
180Map::MoveType Map::getUpMoveType() const
181{
182 return upType;
183}
184
185Map::MoveType Map::getDownMoveType() const
186{
187 return downType;
188}
189
190int Map::getLeftMoveMapID() const
191{
192 return leftMap;
193}
194
195int Map::getRightMoveMapID() const
196{
197 return rightMap;
198}
199
200int Map::getUpMoveMapID() const
201{
202 return upMap;
203}
204
205int Map::getDownMoveMapID() const
206{
207 return downMap;
208}
209
210
128void Map::setTitle(std::string title, bool dirty) 211void Map::setTitle(std::string title, bool dirty)
129{ 212{
130 this->title = title; 213 this->title = title;
@@ -176,9 +259,39 @@ void Map::removeObject(std::shared_ptr<MapObjectEntry> obj, bool dirty)
176 } 259 }
177} 260}
178 261
179void Map::setLeftmap(int id, bool dirty) 262void Map::setTreeItemId(wxTreeItemId id)
263{
264 this->treeItemId = id;
265}
266
267void Map::addChild(int id)
268{
269 children.push_back(id);
270}
271
272void Map::setExpanded(bool exp)
273{
274 expanded = exp;
275}
276
277void Map::setHidden(bool hid)
278{
279 hidden = hid;
280}
281
282void Map::setLeftMoveType(Map::MoveType move, bool dirty)
283{
284 leftType = move;
285
286 if (dirty)
287 {
288 world->setDirty(true);
289 }
290}
291
292void Map::setRightMoveType(Map::MoveType move, bool dirty)
180{ 293{
181 leftmap = id; 294 rightType = move;
182 295
183 if (dirty) 296 if (dirty)
184 { 297 {
@@ -186,9 +299,9 @@ void Map::setLeftmap(int id, bool dirty)
186 } 299 }
187} 300}
188 301
189void Map::setRightmap(int id, bool dirty) 302void Map::setUpMoveType(Map::MoveType move, bool dirty)
190{ 303{
191 rightmap = id; 304 upType = move;
192 305
193 if (dirty) 306 if (dirty)
194 { 307 {
@@ -196,22 +309,53 @@ void Map::setRightmap(int id, bool dirty)
196 } 309 }
197} 310}
198 311
199void Map::setTreeItemId(wxTreeItemId id) 312void Map::setDownMoveType(Map::MoveType move, bool dirty)
200{ 313{
201 this->treeItemId = id; 314 downType = move;
315
316 if (dirty)
317 {
318 world->setDirty(true);
319 }
202} 320}
203 321
204void Map::addChild(int id) 322void Map::setLeftMoveMapID(int id, bool dirty)
205{ 323{
206 children.push_back(id); 324 leftMap = id;
325
326 if (dirty)
327 {
328 world->setDirty(true);
329 }
207} 330}
208 331
209void Map::setExpanded(bool exp) 332void Map::setRightMoveMapID(int id, bool dirty)
210{ 333{
211 expanded = exp; 334 rightMap = id;
335
336 if (dirty)
337 {
338 world->setDirty(true);
339 }
212} 340}
213 341
214void Map::setHidden(bool hid) 342void Map::setUpMoveMapID(int id, bool dirty)
215{ 343{
216 hidden = hid; 344 upMap = id;
345
346 if (dirty)
347 {
348 world->setDirty(true);
349 }
217} 350}
351
352void Map::setDownMoveMapID(int id, bool dirty)
353{
354 downMap = id;
355
356 if (dirty)
357 {
358 world->setDirty(true);
359 }
360}
361