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/common/Collision/Maps/MapDefines.h | |
parent | 82138bec18751eb889f364169cb53481eb90cdbd (diff) |
Core/Maps: Move terrain data handling out of Map class
Partial port of cmangos/mangos-wotlk@ff5232c64809207b5fa59d62e9870f58a36b6f3f
Diffstat (limited to 'src/common/Collision/Maps/MapDefines.h')
-rw-r--r-- | src/common/Collision/Maps/MapDefines.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/common/Collision/Maps/MapDefines.h b/src/common/Collision/Maps/MapDefines.h index c95fa1ede2a..ced17e3c25a 100644 --- a/src/common/Collision/Maps/MapDefines.h +++ b/src/common/Collision/Maps/MapDefines.h @@ -20,6 +20,7 @@ #include "Define.h" #include "EnumFlag.h" +#include "Optional.h" #include <array> /// Represents a map magic value of 4 bytes (used in versions) @@ -120,4 +121,44 @@ struct map_liquidHeader float liquidLevel; }; +enum ZLiquidStatus : uint32 +{ + LIQUID_MAP_NO_WATER = 0x00000000, + LIQUID_MAP_ABOVE_WATER = 0x00000001, + LIQUID_MAP_WATER_WALK = 0x00000002, + LIQUID_MAP_IN_WATER = 0x00000004, + LIQUID_MAP_UNDER_WATER = 0x00000008 +}; + +#define MAP_LIQUID_STATUS_SWIMMING (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER) +#define MAP_LIQUID_STATUS_IN_CONTACT (MAP_LIQUID_STATUS_SWIMMING | LIQUID_MAP_WATER_WALK) + +struct LiquidData +{ + EnumFlag<map_liquidHeaderTypeFlags> type_flags = map_liquidHeaderTypeFlags::NoWater; + uint32 entry; + float level; + float depth_level; +}; + +struct PositionFullTerrainStatus +{ + struct AreaInfo + { + AreaInfo(int32 _adtId, int32 _rootId, int32 _groupId, uint32 _flags) : adtId(_adtId), rootId(_rootId), groupId(_groupId), mogpFlags(_flags) { } + int32 const adtId; + int32 const rootId; + int32 const groupId; + uint32 const mogpFlags; + }; + + PositionFullTerrainStatus() : areaId(0), floorZ(0.0f), outdoors(true), liquidStatus(LIQUID_MAP_NO_WATER) { } + uint32 areaId; + float floorZ; + bool outdoors; + ZLiquidStatus liquidStatus; + Optional<AreaInfo> areaInfo; + Optional<LiquidData> liquidInfo; +}; + #endif // MapDefines_h__ |