diff options
Diffstat (limited to 'src/resources/map/map.cpp')
-rw-r--r-- | src/resources/map/map.cpp | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/resources/map/map.cpp b/src/resources/map/map.cpp index 097a7a11d..de6090dc2 100644 --- a/src/resources/map/map.cpp +++ b/src/resources/map/map.cpp @@ -680,7 +680,7 @@ const Tileset *Map::getTilesetWithGid(const int gid) const } void Map::addBlockMask(const int x, const int y, - const BlockTypeT type) + const BlockTypeT type) { if (type == BlockType::NONE || !contains(x, y)) return; @@ -712,6 +712,39 @@ void Map::addBlockMask(const int x, const int y, } } +void Map::setBlockMask(const int x, const int y, + const BlockTypeT type) +{ + if (type == BlockType::NONE || !contains(x, y)) + return; + + const int tileNum = x + y * mWidth; + + switch (type) + { + case BlockType::WALL: + mMetaTiles[tileNum].blockmask = BlockMask::WALL; + break; + case BlockType::AIR: + mMetaTiles[tileNum].blockmask = BlockMask::AIR; + break; + case BlockType::WATER: + mMetaTiles[tileNum].blockmask = BlockMask::WATER; + break; + case BlockType::GROUND: + mMetaTiles[tileNum].blockmask = BlockMask::GROUND; + break; + case BlockType::GROUNDTOP: + mMetaTiles[tileNum].blockmask = BlockMask::GROUNDTOP; + break; + default: + case BlockType::NONE: + case BlockType::NB_BLOCKTYPES: + // Do nothing. + break; + } +} + bool Map::getWalk(const int x, const int y, const unsigned char blockWalkMask) const { @@ -781,6 +814,14 @@ const std::string Map::getFilename() const return fileName.substr(lastSlash, fileName.rfind(".") - lastSlash); } +const std::string Map::getGatName() const +{ + const std::string fileName = getProperty("_filename"); + const size_t lastSlash = fileName.rfind("/") + 1; + return fileName.substr(lastSlash, + fileName.rfind(".") - lastSlash).append(".gat"); +} + Path Map::findPath(const int startX, const int startY, const int destX, const int destY, const unsigned char blockWalkMask, |