TrinityCore
MapDefines.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef MapDefines_h__
19#define MapDefines_h__
20
21#include "Define.h"
22#include "EnumFlag.h"
23#include "Optional.h"
24#include <array>
25
27using u_map_magic = std::array<char, 4>;
28
34
35// ******************************************
36// Map file format defines
37// ******************************************
39{
51};
52
54{
55 None = 0x0000,
56 NoArea = 0x0001
57};
58
60
62{
66};
67
69{
70 None = 0x0000,
71 NoHeight = 0x0001,
72 HeightAsInt16 = 0x0002,
73 HeightAsInt8 = 0x0004,
74 HasFlightBounds = 0x0008
75};
76
78
80{
85};
86
88{
89 None = 0x0000,
90 NoType = 0x0001,
91 NoHeight = 0x0002
92};
93
95
97{
98 NoWater = 0x00,
99 Water = 0x01,
100 Ocean = 0x02,
101 Magma = 0x04,
102 Slime = 0x08,
103
104 DarkWater = 0x10,
105
107};
108
110
112{
122};
123
125{
131 LIQUID_MAP_OCEAN_FLOOR = 0x00000010
133
134#define MAP_LIQUID_STATUS_SWIMMING (LIQUID_MAP_IN_WATER | LIQUID_MAP_UNDER_WATER)
135#define MAP_LIQUID_STATUS_IN_CONTACT (MAP_LIQUID_STATUS_SWIMMING | LIQUID_MAP_WATER_WALK)
136
138{
141 float level;
143};
144
146{
147 WmoLocation() = default;
148 WmoLocation(int32 groupId, int32 nameSetId, int32 rootId, uint32 uniqueId)
149 : GroupId(groupId), NameSetId(nameSetId), RootId(rootId), UniqueId(uniqueId) { }
150
155};
156
158{
161 float floorZ;
166};
167
168#endif // MapDefines_h__
uint8_t uint8
Definition: Define.h:144
#define TC_COMMON_API
Definition: Define.h:99
int32_t int32
Definition: Define.h:138
uint16_t uint16
Definition: Define.h:143
uint32_t uint32
Definition: Define.h:142
map_areaHeaderFlags
Definition: MapDefines.h:54
TC_COMMON_API u_map_magic const MapMagic
Definition: MapDefines.cpp:20
map_heightHeaderFlags
Definition: MapDefines.h:69
TC_COMMON_API u_map_magic const MapAreaMagic
Definition: MapDefines.cpp:22
map_liquidHeaderFlags
Definition: MapDefines.h:88
std::array< char, 4 > u_map_magic
Represents a map magic value of 4 bytes (used in versions)
Definition: MapDefines.h:27
ZLiquidStatus
Definition: MapDefines.h:125
@ LIQUID_MAP_UNDER_WATER
Definition: MapDefines.h:130
@ LIQUID_MAP_OCEAN_FLOOR
Definition: MapDefines.h:131
@ LIQUID_MAP_NO_WATER
Definition: MapDefines.h:126
@ LIQUID_MAP_IN_WATER
Definition: MapDefines.h:129
@ LIQUID_MAP_ABOVE_WATER
Definition: MapDefines.h:127
@ LIQUID_MAP_WATER_WALK
Definition: MapDefines.h:128
TC_COMMON_API uint32 const MapVersionMagic
Definition: MapDefines.cpp:21
TC_COMMON_API u_map_magic const MapLiquidMagic
Definition: MapDefines.cpp:24
map_liquidHeaderTypeFlags
Definition: MapDefines.h:97
DEFINE_ENUM_FLAG(map_areaHeaderFlags)
TC_COMMON_API u_map_magic const MapHeightMagic
Definition: MapDefines.cpp:23
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:25
uint32 entry
Definition: MapDefines.h:140
EnumFlag< map_liquidHeaderTypeFlags > type_flags
Definition: MapDefines.h:139
float depth_level
Definition: MapDefines.h:142
float level
Definition: MapDefines.h:141
Optional< LiquidData > liquidInfo
Definition: MapDefines.h:165
Optional< WmoLocation > wmoLocation
Definition: MapDefines.h:164
ZLiquidStatus liquidStatus
Definition: MapDefines.h:163
uint32 UniqueId
Definition: MapDefines.h:154
int32 GroupId
Definition: MapDefines.h:151
WmoLocation()=default
int32 RootId
Definition: MapDefines.h:153
int32 NameSetId
Definition: MapDefines.h:152
WmoLocation(int32 groupId, int32 nameSetId, int32 rootId, uint32 uniqueId)
Definition: MapDefines.h:148
EnumFlag< map_areaHeaderFlags > flags
Definition: MapDefines.h:64
uint16 gridArea
Definition: MapDefines.h:65
u_map_magic areaMagic
Definition: MapDefines.h:63
u_map_magic mapMagic
Definition: MapDefines.h:40
uint32 holesSize
Definition: MapDefines.h:50
uint32 liquidMapSize
Definition: MapDefines.h:48
uint32 areaMapOffset
Definition: MapDefines.h:43
uint32 heightMapSize
Definition: MapDefines.h:46
uint32 heightMapOffset
Definition: MapDefines.h:45
uint32 buildMagic
Definition: MapDefines.h:42
uint32 holesOffset
Definition: MapDefines.h:49
uint32 versionMagic
Definition: MapDefines.h:41
uint32 liquidMapOffset
Definition: MapDefines.h:47
uint32 areaMapSize
Definition: MapDefines.h:44
float gridMaxHeight
Definition: MapDefines.h:84
EnumFlag< map_heightHeaderFlags > flags
Definition: MapDefines.h:82
u_map_magic heightMagic
Definition: MapDefines.h:81
u_map_magic liquidMagic
Definition: MapDefines.h:113
EnumFlag< map_liquidHeaderFlags > flags
Definition: MapDefines.h:114
EnumFlag< map_liquidHeaderTypeFlags > liquidFlags
Definition: MapDefines.h:115