From 2c20a869299e34bf994466000912f3c1e99b6ed1 Mon Sep 17 00:00:00 2001 From: Shard <30301841+Shard-MW@users.noreply.github.com> Date: Tue, 10 Nov 2020 13:06:26 +0100 Subject: [PATCH] feat(MMAPS/mapbuilder): restore ability to work with custom MapIDs >= 1000 (#3671) --- src/tools/mmaps_generator/MapBuilder.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index 7164441d2..34df17ad5 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -89,14 +89,14 @@ namespace MMAP void MapBuilder::discoverTiles() { std::vector files; - uint32 mapID, tileX, tileY, tileID, count = 0; + uint32 mapID, tileX, tileY, tileID, count = 0, fsize = 0; char filter[12]; printf("Discovering maps... "); getDirContents(files, "maps"); for (uint32 i = 0; i < files.size(); ++i) { - mapID = uint32(atoi(files[i].substr(0, 3).c_str())); + mapID = uint32(atoi(files[i].substr(0, files[i].size() - 8).c_str())); if (std::find(m_tiles.begin(), m_tiles.end(), mapID) == m_tiles.end()) { m_tiles.emplace_back(MapTiles(mapID, new std::set)); @@ -108,7 +108,7 @@ namespace MMAP getDirContents(files, "vmaps", "*.vmtree"); for (uint32 i = 0; i < files.size(); ++i) { - mapID = uint32(atoi(files[i].substr(0, 3).c_str())); + mapID = uint32(atoi(files[i].substr(0, files[i].size() - 7).c_str())); if (std::find(m_tiles.begin(), m_tiles.end(), mapID) == m_tiles.end()) { m_tiles.emplace_back(MapTiles(mapID, new std::set)); @@ -129,8 +129,10 @@ namespace MMAP getDirContents(files, "vmaps", filter); for (uint32 i = 0; i < files.size(); ++i) { - tileX = uint32(atoi(files[i].substr(7, 2).c_str())); - tileY = uint32(atoi(files[i].substr(4, 2).c_str())); + fsize = files[i].size(); + + tileY = uint32(atoi(files[i].substr(fsize - 12, 2).c_str())); + tileX = uint32(atoi(files[i].substr(fsize - 9, 2).c_str())); tileID = StaticMapTree::packTileID(tileY, tileX); tiles->insert(tileID); @@ -142,8 +144,10 @@ namespace MMAP getDirContents(files, "maps", filter); for (uint32 i = 0; i < files.size(); ++i) { - tileY = uint32(atoi(files[i].substr(3, 2).c_str())); - tileX = uint32(atoi(files[i].substr(5, 2).c_str())); + fsize = files[i].size(); + + tileY = uint32(atoi(files[i].substr(fsize - 8, 2).c_str())); + tileX = uint32(atoi(files[i].substr(fsize - 6, 2).c_str())); tileID = StaticMapTree::packTileID(tileX, tileY); if (tiles->insert(tileID).second)