diff options
Diffstat (limited to 'tools/mapedit/src/map.cpp')
-rw-r--r-- | tools/mapedit/src/map.cpp | 162 |
1 files changed, 37 insertions, 125 deletions
diff --git a/tools/mapedit/src/map.cpp b/tools/mapedit/src/map.cpp index fb675e8..a099e29 100644 --- a/tools/mapedit/src/map.cpp +++ b/tools/mapedit/src/map.cpp | |||
@@ -21,14 +21,7 @@ Map::Map(const Map& map) | |||
21 | treeItemId = map.treeItemId; | 21 | treeItemId = map.treeItemId; |
22 | children = map.children; | 22 | children = map.children; |
23 | hidden = map.hidden; | 23 | hidden = map.hidden; |
24 | leftType = map.leftType; | 24 | adjacents = map.adjacents; |
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; | ||
32 | } | 25 | } |
33 | 26 | ||
34 | Map::Map(Map&& map) : Map(-1, map.world) | 27 | Map::Map(Map&& map) : Map(-1, map.world) |
@@ -58,14 +51,7 @@ void swap(Map& first, Map& second) | |||
58 | std::swap(first.treeItemId, second.treeItemId); | 51 | std::swap(first.treeItemId, second.treeItemId); |
59 | std::swap(first.children, second.children); | 52 | std::swap(first.children, second.children); |
60 | std::swap(first.hidden, second.hidden); | 53 | std::swap(first.hidden, second.hidden); |
61 | std::swap(first.leftType, second.leftType); | 54 | std::swap(first.adjacents, second.adjacents); |
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 | } | 55 | } |
70 | 56 | ||
71 | std::list<Map::MoveType> Map::listMoveTypes() | 57 | std::list<Map::MoveType> Map::listMoveTypes() |
@@ -78,9 +64,9 @@ std::string Map::stringForMoveType(MoveType type) | |||
78 | switch (type) | 64 | switch (type) |
79 | { | 65 | { |
80 | case MoveType::Wall: return "Wall"; | 66 | case MoveType::Wall: return "Wall"; |
81 | case MoveType::Warp: return "Warp"; | 67 | case MoveType::Warp: return "Teleport"; |
82 | case MoveType::Wrap: return "Wrap"; | 68 | case MoveType::Wrap: return "Wrap"; |
83 | case MoveType::ReverseWarp: return "Reverse Warp"; | 69 | case MoveType::ReverseWarp: return "Reverse Teleport"; |
84 | } | 70 | } |
85 | } | 71 | } |
86 | 72 | ||
@@ -106,6 +92,17 @@ std::string Map::shortForMoveType(MoveType type) | |||
106 | } | 92 | } |
107 | } | 93 | } |
108 | 94 | ||
95 | std::string Map::shortForMoveDir(MoveDir dir) | ||
96 | { | ||
97 | switch (dir) | ||
98 | { | ||
99 | case MoveDir::Left: return "left"; | ||
100 | case MoveDir::Right: return "right"; | ||
101 | case MoveDir::Up: return "up"; | ||
102 | case MoveDir::Down: return "down"; | ||
103 | } | ||
104 | } | ||
105 | |||
109 | Map::MoveType Map::moveTypeForShort(std::string str) | 106 | Map::MoveType Map::moveTypeForShort(std::string str) |
110 | { | 107 | { |
111 | if (str == "wrap") return MoveType::Wrap; | 108 | if (str == "wrap") return MoveType::Wrap; |
@@ -115,6 +112,15 @@ Map::MoveType Map::moveTypeForShort(std::string str) | |||
115 | return MoveType::Wall; | 112 | return MoveType::Wall; |
116 | } | 113 | } |
117 | 114 | ||
115 | Map::MoveDir Map::moveDirForShort(std::string str) | ||
116 | { | ||
117 | if (str == "right") return MoveDir::Right; | ||
118 | if (str == "up") return MoveDir::Up; | ||
119 | if (str == "down") return MoveDir::Down; | ||
120 | |||
121 | return MoveDir::Left; | ||
122 | } | ||
123 | |||
118 | int Map::getID() const | 124 | int Map::getID() const |
119 | { | 125 | { |
120 | return id; | 126 | return id; |
@@ -167,47 +173,21 @@ bool Map::getHidden() const | |||
167 | return hidden; | 173 | return hidden; |
168 | } | 174 | } |
169 | 175 | ||
170 | Map::MoveType Map::getLeftMoveType() const | 176 | const std::map<Map::MoveDir, Map::Adjacent>& Map::getAdjacents() const |
171 | { | ||
172 | return leftType; | ||
173 | } | ||
174 | |||
175 | Map::MoveType Map::getRightMoveType() const | ||
176 | { | ||
177 | return rightType; | ||
178 | } | ||
179 | |||
180 | Map::MoveType Map::getUpMoveType() const | ||
181 | { | 177 | { |
182 | return upType; | 178 | return adjacents; |
183 | } | 179 | } |
184 | 180 | ||
185 | Map::MoveType Map::getDownMoveType() const | 181 | const Map::Adjacent& Map::getAdjacent(MoveDir direction) const |
186 | { | 182 | { |
187 | return downType; | 183 | if (adjacents.count(direction) > 0) |
188 | } | 184 | { |
189 | 185 | return adjacents.at(direction); | |
190 | int Map::getLeftMoveMapID() const | 186 | } else { |
191 | { | 187 | return defaultAdjacent; |
192 | return leftMap; | 188 | } |
193 | } | ||
194 | |||
195 | int Map::getRightMoveMapID() const | ||
196 | { | ||
197 | return rightMap; | ||
198 | } | ||
199 | |||
200 | int Map::getUpMoveMapID() const | ||
201 | { | ||
202 | return upMap; | ||
203 | } | ||
204 | |||
205 | int Map::getDownMoveMapID() const | ||
206 | { | ||
207 | return downMap; | ||
208 | } | 189 | } |
209 | 190 | ||
210 | |||
211 | void Map::setTitle(std::string title, bool dirty) | 191 | void Map::setTitle(std::string title, bool dirty) |
212 | { | 192 | { |
213 | this->title = title; | 193 | this->title = title; |
@@ -279,79 +259,11 @@ void Map::setHidden(bool hid) | |||
279 | hidden = hid; | 259 | hidden = hid; |
280 | } | 260 | } |
281 | 261 | ||
282 | void Map::setLeftMoveType(Map::MoveType move, bool dirty) | 262 | void Map::setAdjacent(MoveDir direction, MoveType type, int map, bool dirty) |
283 | { | ||
284 | leftType = move; | ||
285 | |||
286 | if (dirty) | ||
287 | { | ||
288 | world->setDirty(true); | ||
289 | } | ||
290 | } | ||
291 | |||
292 | void Map::setRightMoveType(Map::MoveType move, bool dirty) | ||
293 | { | ||
294 | rightType = move; | ||
295 | |||
296 | if (dirty) | ||
297 | { | ||
298 | world->setDirty(true); | ||
299 | } | ||
300 | } | ||
301 | |||
302 | void Map::setUpMoveType(Map::MoveType move, bool dirty) | ||
303 | { | ||
304 | upType = move; | ||
305 | |||
306 | if (dirty) | ||
307 | { | ||
308 | world->setDirty(true); | ||
309 | } | ||
310 | } | ||
311 | |||
312 | void Map::setDownMoveType(Map::MoveType move, bool dirty) | ||
313 | { | ||
314 | downType = move; | ||
315 | |||
316 | if (dirty) | ||
317 | { | ||
318 | world->setDirty(true); | ||
319 | } | ||
320 | } | ||
321 | |||
322 | void Map::setLeftMoveMapID(int id, bool dirty) | ||
323 | { | ||
324 | leftMap = id; | ||
325 | |||
326 | if (dirty) | ||
327 | { | ||
328 | world->setDirty(true); | ||
329 | } | ||
330 | } | ||
331 | |||
332 | void Map::setRightMoveMapID(int id, bool dirty) | ||
333 | { | ||
334 | rightMap = id; | ||
335 | |||
336 | if (dirty) | ||
337 | { | ||
338 | world->setDirty(true); | ||
339 | } | ||
340 | } | ||
341 | |||
342 | void Map::setUpMoveMapID(int id, bool dirty) | ||
343 | { | ||
344 | upMap = id; | ||
345 | |||
346 | if (dirty) | ||
347 | { | ||
348 | world->setDirty(true); | ||
349 | } | ||
350 | } | ||
351 | |||
352 | void Map::setDownMoveMapID(int id, bool dirty) | ||
353 | { | 263 | { |
354 | downMap = id; | 264 | Adjacent& cur = adjacents[direction]; |
265 | cur.type = type; | ||
266 | if (map != -1) cur.map = map; | ||
355 | 267 | ||
356 | if (dirty) | 268 | if (dirty) |
357 | { | 269 | { |