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 | { |
