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