diff options
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/map.cpp b/src/map.cpp index 4781231..0425962 100644 --- a/src/map.cpp +++ b/src/map.cpp | |||
@@ -44,6 +44,10 @@ Map::Map(std::string_view name) : name_(name) { | |||
44 | tile.blocked = true; | 44 | tile.blocked = true; |
45 | } else if (property.getName() == "runSound") { | 45 | } else if (property.getName() == "runSound") { |
46 | tile.step = stepTypeFromString(property.getStringValue()); | 46 | tile.step = stepTypeFromString(property.getStringValue()); |
47 | } else if (property.getName() == "medium") { | ||
48 | if (property.getStringValue() == "ladder") { | ||
49 | tile.medium = CharacterMedium::Ladder; | ||
50 | } | ||
47 | } | 51 | } |
48 | } | 52 | } |
49 | 53 | ||
@@ -178,3 +182,21 @@ StepType Map::getStepType(int x, int y) const { | |||
178 | 182 | ||
179 | return StepType::none; | 183 | return StepType::none; |
180 | } | 184 | } |
185 | |||
186 | CharacterMedium Map::getMedium(int x, int y) const { | ||
187 | CharacterMedium ret = CharacterMedium::Normal; | ||
188 | |||
189 | if (x < 0 || y < 0 || x >= mapSize_.w() || y >= mapSize_.h()) { | ||
190 | return ret; | ||
191 | } | ||
192 | |||
193 | int i = x + y * mapSize_.w(); | ||
194 | |||
195 | for (const std::vector<Tile>& layer : lowerLayers_) { | ||
196 | if (layer.at(i).medium > ret) { | ||
197 | ret = layer.at(i).medium; | ||
198 | } | ||
199 | } | ||
200 | |||
201 | return ret; | ||
202 | } | ||