summary refs log tree commit diff stats
path: root/src/map.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/map.cpp')
-rw-r--r--src/map.cpp22
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
186CharacterMedium 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}