diff options
| -rw-r--r-- | src/game.cpp | 2 | ||||
| -rw-r--r-- | src/map.cpp | 15 | ||||
| -rw-r--r-- | src/map.h | 3 |
3 files changed, 19 insertions, 1 deletions
| diff --git a/src/game.cpp b/src/game.cpp index 68c0a13..a36c56f 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
| @@ -151,7 +151,7 @@ void Game::playerDie(Entity& player, const Map& curMap) | |||
| 151 | playSound("../res/Hit_Hurt5.wav", 0.25); | 151 | playSound("../res/Hit_Hurt5.wav", 0.25); |
| 152 | 152 | ||
| 153 | schedule(0.75, [&] () { | 153 | schedule(0.75, [&] () { |
| 154 | if (&curMap != save.map) | 154 | if (curMap != *(save.map)) |
| 155 | { | 155 | { |
| 156 | loadMap(*(save.map)); | 156 | loadMap(*(save.map)); |
| 157 | } | 157 | } |
| diff --git a/src/map.cpp b/src/map.cpp index 2be5071..5119d85 100644 --- a/src/map.cpp +++ b/src/map.cpp | |||
| @@ -17,6 +17,8 @@ Map::Map() | |||
| 17 | 17 | ||
| 18 | Map::Map(const std::string name) | 18 | Map::Map(const std::string name) |
| 19 | { | 19 | { |
| 20 | this->name = name; | ||
| 21 | |||
| 20 | xmlDocPtr doc = xmlParseFile(("../maps/" + name + ".xml").c_str()); | 22 | xmlDocPtr doc = xmlParseFile(("../maps/" + name + ".xml").c_str()); |
| 21 | if (doc == nullptr) | 23 | if (doc == nullptr) |
| 22 | { | 24 | { |
| @@ -108,6 +110,8 @@ Map::Map(const Map& map) | |||
| 108 | rightMap = map.rightMap; | 110 | rightMap = map.rightMap; |
| 109 | 111 | ||
| 110 | entities = map.entities; | 112 | entities = map.entities; |
| 113 | |||
| 114 | name = map.name; | ||
| 111 | } | 115 | } |
| 112 | 116 | ||
| 113 | Map::Map(Map&& map) : Map() | 117 | Map::Map(Map&& map) : Map() |
| @@ -135,6 +139,7 @@ void swap(Map& first, Map& second) | |||
| 135 | std::swap(first.leftMap, second.leftMap); | 139 | std::swap(first.leftMap, second.leftMap); |
| 136 | std::swap(first.rightMap, second.rightMap); | 140 | std::swap(first.rightMap, second.rightMap); |
| 137 | std::swap(first.entities, second.entities); | 141 | std::swap(first.entities, second.entities); |
| 142 | std::swap(first.name, second.name); | ||
| 138 | } | 143 | } |
| 139 | 144 | ||
| 140 | const int* Map::getMapdata() const | 145 | const int* Map::getMapdata() const |
| @@ -178,6 +183,16 @@ void Map::createEntities(std::list<std::shared_ptr<Entity>>& entities) const | |||
| 178 | } | 183 | } |
| 179 | } | 184 | } |
| 180 | 185 | ||
| 186 | bool Map::operator==(const Map& other) const | ||
| 187 | { | ||
| 188 | return name == other.name; | ||
| 189 | } | ||
| 190 | |||
| 191 | bool Map::operator!=(const Map& other) const | ||
| 192 | { | ||
| 193 | return name != other.name; | ||
| 194 | } | ||
| 195 | |||
| 181 | Map& Map::getNamedMap(const std::string name) | 196 | Map& Map::getNamedMap(const std::string name) |
| 182 | { | 197 | { |
| 183 | if (maps.count(name) == 0) | 198 | if (maps.count(name) == 0) |
| diff --git a/src/map.h b/src/map.h index fa2edcc..a562bec 100644 --- a/src/map.h +++ b/src/map.h | |||
| @@ -25,6 +25,8 @@ class Map { | |||
| 25 | void setLeftMap(const Map* m); | 25 | void setLeftMap(const Map* m); |
| 26 | void setRightMap(const Map* m); | 26 | void setRightMap(const Map* m); |
| 27 | void createEntities(std::list<std::shared_ptr<Entity>>& entities) const; | 27 | void createEntities(std::list<std::shared_ptr<Entity>>& entities) const; |
| 28 | bool operator==(const Map& other) const; | ||
| 29 | bool operator!=(const Map& other) const; | ||
| 28 | private: | 30 | private: |
| 29 | struct EntityData { | 31 | struct EntityData { |
| 30 | std::string name; | 32 | std::string name; |
| @@ -33,6 +35,7 @@ class Map { | |||
| 33 | 35 | ||
| 34 | int* mapdata; | 36 | int* mapdata; |
| 35 | char* title; | 37 | char* title; |
| 38 | std::string name; | ||
| 36 | const Map* leftMap = nullptr; | 39 | const Map* leftMap = nullptr; |
| 37 | const Map* rightMap = nullptr; | 40 | const Map* rightMap = nullptr; |
| 38 | std::list<EntityData> entities; | 41 | std::list<EntityData> entities; |
