diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 62a9dfb41..2dfb8d2f5 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -640,15 +640,11 @@ struct MovementInfo class WorldLocation : public Position { public: - explicit WorldLocation(uint32 _mapid = MAPID_INVALID, float _x = 0, float _y = 0, float _z = 0, float _o = 0) - : m_mapId(_mapid) { Relocate(_x, _y, _z, _o); } - WorldLocation(const WorldLocation& loc) : Position () { WorldRelocate(loc); } - /* requried as of C++ 11 */ -#if __cplusplus >= 201103L - WorldLocation(WorldLocation&&) = default; - WorldLocation& operator=(const WorldLocation&) = default; - WorldLocation& operator=(WorldLocation&&) = default; -#endif + explicit WorldLocation(uint32 _mapId = MAPID_INVALID, float x = 0.f, float y = 0.f, float z = 0.f, float o = 0.f) + : Position(x, y, z, o), m_mapId(_mapId) { } + + WorldLocation(uint32 mapId, Position const& position) + : Position(position), m_mapId(mapId) { } void WorldRelocate(const WorldLocation& loc) { diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 580cac54a..0daad63c1 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -1347,6 +1347,8 @@ public: void LoadFactionChangeSpells(); void LoadFactionChangeTitles(); + [[nodiscard]] bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId) != 0; } + private: // first free id for selected id type uint32 _auctionId; // pussywizard: accessed by a single thread diff --git a/src/server/game/Maps/MapManager.h b/src/server/game/Maps/MapManager.h index ec9da8870..127ce2a9a 100644 --- a/src/server/game/Maps/MapManager.h +++ b/src/server/game/Maps/MapManager.h @@ -37,16 +37,22 @@ public: return (iter == i_maps.end() ? nullptr : iter->second); } - uint32 GetAreaId(uint32 mapid, float x, float y, float z) const + [[nodiscard]] uint32 GetAreaId(uint32 mapid, float x, float y, float z) const { Map const* m = const_cast(this)->CreateBaseMap(mapid); return m->GetAreaId(x, y, z); } - uint32 GetZoneId(uint32 mapid, float x, float y, float z) const + [[nodiscard]] uint32 GetAreaId(uint32 mapid, Position const& pos) const { return GetAreaId(mapid, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ()); } + [[nodiscard]] uint32 GetAreaId(WorldLocation const& loc) const { return GetAreaId(loc.GetMapId(), loc); } + + [[nodiscard]] uint32 GetZoneId(uint32 mapid, float x, float y, float z) const { Map const* m = const_cast(this)->CreateBaseMap(mapid); return m->GetZoneId(x, y, z); } + [[nodiscard]] uint32 GetZoneId(uint32 mapid, Position const& pos) const { return GetZoneId(mapid, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ()); } + [[nodiscard]] uint32 GetZoneId(WorldLocation const& loc) const { return GetZoneId(loc.GetMapId(), loc); } + void GetZoneAndAreaId(uint32& zoneid, uint32& areaid, uint32 mapid, float x, float y, float z) { Map const* m = const_cast(this)->CreateBaseMap(mapid); @@ -71,6 +77,11 @@ public: static bool ExistMapAndVMap(uint32 mapid, float x, float y); static bool IsValidMAP(uint32 mapid, bool startUp); + static bool IsValidMapCoord(uint32 mapid, Position const& pos) + { + return IsValidMapCoord(mapid, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation()); + } + static bool IsValidMapCoord(uint32 mapid, float x, float y) { return IsValidMAP(mapid, false) && Acore::IsValidMapCoord(x, y);