diff options
| author | Giacomo Pozzoni <giacomopoz@gmail.com> | 2020-01-09 19:38:45 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-12-20 20:35:37 +0100 |
| commit | dd929665e564e01b5346844adb96d8fd0eb710c4 (patch) | |
| tree | 7dd195d37d2902bec87823b13910db349a8911d7 /src/tools | |
| parent | fd265269720e64bf39dae205b670b25a677a3938 (diff) | |
Core/PathGenerator: Fix path generator returning shortcuts when start and end are on the same polygon (#24036)
* Core/PathGenerator: Fix path generator returning shortcuts when start and end are on the same polygon
Fix path generator returning shortcuts when start and end are on the same polygon by handling this case as if start and end were on 2 different polygons. This will ensure BuildPointPath() gets called which calls FindSmoothPath(), making sure each step is not longer than SMOOTH_PATH_STEP_SIZE (4 yards)
* Change ingame cast error message to SPELL_FAILED_NOPATH from SPELL_FAILED_OUT_OF_RANGE if the generated path is too long
(cherry picked from commit 29bf280e3496cf13c24ccb20e37da29d3bfa74d9)
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/mmaps_generator/MapBuilder.cpp | 35 | ||||
| -rw-r--r-- | src/tools/mmaps_generator/MapBuilder.h | 1 |
2 files changed, 23 insertions, 13 deletions
diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index a36503e5750..f7f5dcc3102 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -876,19 +876,8 @@ namespace MMAP return static_cast<uint32>(m_mapid) != mapID; if (m_skipContinents) - switch (mapID) - { - case 0: - case 1: - case 530: - case 571: - case 870: - case 1116: - case 1220: - return true; - default: - break; - } + if (isContinentMap(mapID)) + return true; if (m_skipJunkMaps) switch (mapID) @@ -1054,6 +1043,26 @@ namespace MMAP } } + bool MapBuilder::isContinentMap(uint32 mapID) + { + switch (mapID) + { + case 0: + case 1: + case 530: + case 571: + case 870: + case 1116: + case 1220: + case 1642: + case 1643: + case 2222: + return true; + default: + return false; + } + } + /**************************************************************************/ bool MapBuilder::shouldSkipTile(uint32 mapID, uint32 tileX, uint32 tileY) { diff --git a/src/tools/mmaps_generator/MapBuilder.h b/src/tools/mmaps_generator/MapBuilder.h index 8181f4e9b55..8942ad68d11 100644 --- a/src/tools/mmaps_generator/MapBuilder.h +++ b/src/tools/mmaps_generator/MapBuilder.h @@ -145,6 +145,7 @@ namespace MMAP bool shouldSkipMap(uint32 mapID); bool isTransportMap(uint32 mapID); + bool isContinentMap(uint32 mapID); bool shouldSkipTile(uint32 mapID, uint32 tileX, uint32 tileY); rcConfig GetMapSpecificConfig(uint32 mapID, float bmin[3], float bmax[3], const TileConfig &tileConfig); |
