diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-07-23 19:13:33 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-07-23 19:13:33 +0200 |
| commit | 16a06346aea16ffd6ee84081cedfdb0c75ac0b38 (patch) | |
| tree | 61661f0914f1a19cc7f6a9bd04eabf9f8f6e846a /src/server/scripts/Commands | |
| parent | 82138bec18751eb889f364169cb53481eb90cdbd (diff) | |
Core/Maps: Move terrain data handling out of Map class
Partial port of cmangos/mangos-wotlk@ff5232c64809207b5fa59d62e9870f58a36b6f3f
Diffstat (limited to 'src/server/scripts/Commands')
| -rw-r--r-- | src/server/scripts/Commands/cs_go.cpp | 19 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 7 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_mmaps.cpp | 6 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_tele.cpp | 3 |
4 files changed, 18 insertions, 17 deletions
diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 8977ec55f77..b658023cfd5 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -34,6 +34,7 @@ EndScriptData */ #include "Player.h" #include "RBAC.h" #include "SupportMgr.h" +#include "TerrainMgr.h" #include "Transport.h" #include "Util.h" #include "WorldSession.h" @@ -230,8 +231,8 @@ public: else player->SaveRecallPosition(); // save only in non-flight case - Map* map = sMapMgr->CreateBaseMap(mapId); - float z = std::max(map->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), map->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); + std::shared_ptr<TerrainInfo> terrain = sTerrainMgr.LoadTerrain(mapId); + float z = std::max(terrain->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), terrain->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); player->TeleportTo(mapId, x, y, z, player->GetOrientation()); return true; @@ -289,8 +290,8 @@ public: else player->SaveRecallPosition(); // save only in non-flight case - Map* map = sMapMgr->CreateBaseMap(mapId); - z = std::max(map->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), map->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); + std::shared_ptr<TerrainInfo> terrain = sTerrainMgr.LoadTerrain(mapId); + z = std::max(terrain->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), terrain->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); player->TeleportTo(mapId, x, y, z, 0.0f); return true; @@ -343,10 +344,10 @@ public: x /= 100.0f; y /= 100.0f; - Map* map = sMapMgr->CreateBaseMap(zoneEntry->ContinentID); + std::shared_ptr<TerrainInfo> terrain = sTerrainMgr.LoadTerrain(zoneEntry->ContinentID); if (!sDB2Manager.Zone2MapCoordinates(areaEntry->ParentAreaID ? uint32(areaEntry->ParentAreaID) : areaId, x, y)) { - handler->PSendSysMessage(LANG_INVALID_ZONE_MAP, areaId, areaEntry->AreaName[handler->GetSessionDbcLocale()], map->GetId(), map->GetMapName()); + handler->PSendSysMessage(LANG_INVALID_ZONE_MAP, areaId, areaEntry->AreaName[handler->GetSessionDbcLocale()], terrain->GetId(), terrain->GetMapName()); handler->SetSentErrorMessage(true); return false; } @@ -364,7 +365,7 @@ public: else player->SaveRecallPosition(); // save only in non-flight case - float z = std::max(map->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), map->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); + float z = std::max(terrain->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), terrain->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); player->TeleportTo(zoneEntry->ContinentID, x, y, z, player->GetOrientation()); return true; @@ -392,8 +393,8 @@ public: handler->SetSentErrorMessage(true); return false; } - Map* map = sMapMgr->CreateBaseMap(mapId); - z = std::max(map->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), map->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); + std::shared_ptr<TerrainInfo> terrain = sTerrainMgr.LoadTerrain(mapId); + z = std::max(terrain->GetStaticHeight(PhasingHandler::GetEmptyPhaseShift(), x, y, MAX_HEIGHT), terrain->GetWaterLevel(PhasingHandler::GetEmptyPhaseShift(), x, y)); } return DoTeleport(handler, { x, y, *z, o.value_or(0.0f) }, mapId); diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 9ef49a442ce..38fda7ba51c 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -32,8 +32,6 @@ #include "IPLocation.h" #include "Item.h" #include "Language.h" -#include "Log.h" -#include "MapManager.h" #include "MiscPackets.h" #include "MMapFactory.h" #include "MotionMaster.h" @@ -46,6 +44,7 @@ #include "SpellAuras.h" #include "SpellHistory.h" #include "SpellMgr.h" +#include "TerrainMgr.h" #include "Transport.h" #include "Weather.h" #include "World.h" @@ -262,8 +261,8 @@ public: int gridX = (MAX_NUMBER_OF_GRIDS - 1) - gridCoord.x_coord; int gridY = (MAX_NUMBER_OF_GRIDS - 1) - gridCoord.y_coord; - uint32 haveMap = Map::ExistMap(mapId, gridX, gridY) ? 1 : 0; - uint32 haveVMap = Map::ExistVMap(mapId, gridX, gridY) ? 1 : 0; + uint32 haveMap = TerrainInfo::ExistMap(mapId, gridX, gridY) ? 1 : 0; + uint32 haveVMap = TerrainInfo::ExistVMap(mapId, gridX, gridY) ? 1 : 0; uint32 haveMMap = (DisableMgr::IsPathfindingEnabled(mapId) && MMAP::MMapFactory::createOrGetMMapManager()->GetNavMesh(handler->GetSession()->GetPlayer()->GetMapId())) ? 1 : 0; if (haveVMap) diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp index 2b7f266a2df..ad43389593e 100644 --- a/src/server/scripts/Commands/cs_mmaps.cpp +++ b/src/server/scripts/Commands/cs_mmaps.cpp @@ -142,7 +142,7 @@ public: handler->PSendSysMessage("tileloc [%i, %i]", gy, gx); // calculate navmesh tile location - uint32 terrainMapId = PhasingHandler::GetTerrainMapId(player->GetPhaseShift(), player->GetMap(), x, y); + uint32 terrainMapId = PhasingHandler::GetTerrainMapId(player->GetPhaseShift(), player->GetMap()->GetTerrain(), x, y); dtNavMesh const* navmesh = MMAP::MMapFactory::createOrGetMMapManager()->GetNavMesh(terrainMapId); dtNavMeshQuery const* navmeshquery = MMAP::MMapFactory::createOrGetMMapManager()->GetNavMeshQuery(terrainMapId, player->GetInstanceId()); if (!navmesh || !navmeshquery) @@ -193,7 +193,7 @@ public: static bool HandleMmapLoadedTilesCommand(ChatHandler* handler, char const* /*args*/) { Player* player = handler->GetSession()->GetPlayer(); - uint32 terrainMapId = PhasingHandler::GetTerrainMapId(player->GetPhaseShift(), player->GetMap(), player->GetPositionX(), player->GetPositionY()); + uint32 terrainMapId = PhasingHandler::GetTerrainMapId(player->GetPhaseShift(), player->GetMap()->GetTerrain(), player->GetPositionX(), player->GetPositionY()); dtNavMesh const* navmesh = MMAP::MMapFactory::createOrGetMMapManager()->GetNavMesh(terrainMapId); dtNavMeshQuery const* navmeshquery = MMAP::MMapFactory::createOrGetMMapManager()->GetNavMeshQuery(terrainMapId, player->GetInstanceId()); if (!navmesh || !navmeshquery) @@ -219,7 +219,7 @@ public: static bool HandleMmapStatsCommand(ChatHandler* handler, char const* /*args*/) { Player* player = handler->GetSession()->GetPlayer(); - uint32 terrainMapId = PhasingHandler::GetTerrainMapId(player->GetPhaseShift(), player->GetMap(), player->GetPositionX(), player->GetPositionY()); + uint32 terrainMapId = PhasingHandler::GetTerrainMapId(player->GetPhaseShift(), player->GetMap()->GetTerrain(), player->GetPositionX(), player->GetPositionY()); handler->PSendSysMessage("mmap stats:"); handler->PSendSysMessage(" global mmap pathfinding is %sabled", DisableMgr::IsPathfindingEnabled(player->GetMapId()) ? "en" : "dis"); diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index 6469a31249d..b538507732e 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -34,6 +34,7 @@ EndScriptData */ #include "PhasingHandler.h" #include "Player.h" #include "RBAC.h" +#include "TerrainMgr.h" #include "WorldSession.h" using namespace Trinity::ChatCommands; @@ -166,7 +167,7 @@ public: handler->PSendSysMessage(LANG_TELEPORTING_TO, nameLink.c_str(), handler->GetTrinityString(LANG_OFFLINE), locationName.c_str()); - Player::SavePositionInDB({ mapId, pos }, sMapMgr->GetZoneId(PhasingHandler::GetEmptyPhaseShift(), { mapId, pos }), player.GetGUID(), nullptr); + Player::SavePositionInDB({ mapId, pos }, sTerrainMgr.GetZoneId(PhasingHandler::GetEmptyPhaseShift(), { mapId, pos }), player.GetGUID(), nullptr); } return true; |
