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