Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
ObjectDefines.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
6
#ifndef SKYFIRE_OBJECTDEFINES_H
7
#define SKYFIRE_OBJECTDEFINES_H
8
9
#include "
Define.h
"
10
11
enum
HighGuid
12
{
13
HIGHGUID_ITEM
= 0x400,
// blizz 4000
14
HIGHGUID_CONTAINER
= 0x400,
// blizz 4000
15
HIGHGUID_PLAYER
= 0x000,
// blizz 0000
16
HIGHGUID_GAMEOBJECT
= 0xF11,
// blizz F110
17
HIGHGUID_TRANSPORT
= 0xF12,
// blizz F120 (for GAMEOBJECT_TYPE_TRANSPORT)
18
HIGHGUID_UNIT
= 0xF13,
// blizz F130
19
HIGHGUID_PET
= 0xF14,
// blizz F140
20
HIGHGUID_VEHICLE
= 0xF15,
// blizz F550
21
HIGHGUID_DYNAMICOBJECT
= 0xF10,
// blizz F100
22
HIGHGUID_CORPSE
= 0xF101,
// blizz F100
23
HIGHGUID_AREATRIGGER
= 0xF102,
// blizz F100
24
HIGHGUID_BATTLEGROUND
= 0x1F1,
// new 4.x
25
HIGHGUID_MO_TRANSPORT
= 0x1FC,
// blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
26
HIGHGUID_GROUP
= 0x1F5,
27
HIGHGUID_GUILD
= 0x1FF
// new 4.x
28
};
29
30
// used for creating values for respawn for example
31
inline
uint64
MAKE_PAIR64
(
uint32
l,
uint32
h);
32
inline
uint32
PAIR64_HIPART
(
uint64
x);
33
inline
uint32
PAIR64_LOPART
(
uint64
x);
34
inline
uint16
MAKE_PAIR16
(
uint8
l,
uint8
h);
35
inline
uint32
MAKE_PAIR32
(
uint16
l,
uint16
h);
36
inline
uint16
PAIR32_HIPART
(
uint32
x);
37
inline
uint16
PAIR32_LOPART
(
uint32
x);
38
39
inline
bool
IS_EMPTY_GUID
(
uint64
guid);
40
inline
bool
IS_CREATURE_GUID
(
uint64
guid);
41
inline
bool
IS_PET_GUID
(
uint64
guid);
42
inline
bool
IS_VEHICLE_GUID
(
uint64
guid);
43
inline
bool
IS_CRE_OR_VEH_GUID
(
uint64
guid);
44
inline
bool
IS_CRE_OR_VEH_OR_PET_GUID
(
uint64
guid);
45
inline
bool
IS_PLAYER_GUID
(
uint64
guid);
46
inline
bool
IS_GUILD_GUID
(
uint64
guid);
47
inline
bool
IS_UNIT_GUID
(
uint64
guid);
48
inline
bool
IS_ITEM_GUID
(
uint64
guid);
49
inline
bool
IS_GAMEOBJECT_GUID
(
uint64
guid);
50
inline
bool
IS_DYNAMICOBJECT_GUID
(
uint64
guid);
51
inline
bool
IS_CORPSE_GUID
(
uint64
guid);
52
inline
bool
IS_TRANSPORT_GUID
(
uint64
guid);
53
inline
bool
IS_MO_TRANSPORT_GUID
(
uint64
guid);
54
inline
bool
IS_GROUP_GUID
(
uint64
guid);
55
inline
bool
IS_AREATRIGGER_GUID
(
uint64
guid);
56
57
// l - OBJECT_FIELD_GUID
58
// e - OBJECT_FIELD_ENTRY_ID for GO (except GAMEOBJECT_TYPE_MO_TRANSPORT) and creatures or UNIT_FIELD_PET_NUMBER for pets
59
// h - OBJECT_FIELD_GUID + 1
60
inline
uint64
MAKE_NEW_GUID
(
uint32
l,
uint32
e,
uint32
h);
61
62
//#define GUID_HIPART(x) (uint32)((uint64(x) >> 52)) & 0x0000FFFF)
63
inline
uint32
GUID_HIPART
(
uint64
guid);
64
inline
uint32
GUID_ENPART
(
uint64
x);
65
inline
uint32
GUID_LOPART
(
uint64
x);
66
67
inline
bool
IsGuidHaveEnPart
(
uint64
guid);
68
inline
char
const
*
GetLogNameForGuid
(
uint64
guid);
69
70
uint64
MAKE_PAIR64
(
uint32
l,
uint32
h)
71
{
72
return
uint64
(l | (
uint64
(h) << 32));
73
}
74
75
uint32
PAIR64_HIPART
(
uint64
x)
76
{
77
return
(
uint32
)((x >> 32) &
UI64LIT
(0x00000000FFFFFFFF));
78
}
79
80
uint32
PAIR64_LOPART
(
uint64
x)
81
{
82
return
(
uint32
)(x &
UI64LIT
(0x00000000FFFFFFFF));
83
}
84
85
uint16
MAKE_PAIR16
(
uint8
l,
uint8
h)
86
{
87
return
uint16
(l | (
uint16
(h) << 8));
88
}
89
90
uint32
MAKE_PAIR32
(
uint16
l,
uint16
h)
91
{
92
return
uint32
(l | (
uint32
(h) << 16));
93
}
94
95
uint16
PAIR32_HIPART
(
uint32
x)
96
{
97
return
(
uint16
)((x >> 16) & 0x0000FFFF);
98
}
99
100
uint16
PAIR32_LOPART
(
uint32
x)
101
{
102
return
(
uint16
)(x & 0x0000FFFF);
103
}
104
105
bool
IS_EMPTY_GUID
(
uint64
guid)
106
{
107
return
guid == 0;
108
}
109
110
bool
IS_CREATURE_GUID
(
uint64
guid)
111
{
112
return
GUID_HIPART
(guid) ==
HIGHGUID_UNIT
;
113
}
114
115
bool
IS_PET_GUID
(
uint64
guid)
116
{
117
return
GUID_HIPART
(guid) ==
HIGHGUID_PET
;
118
}
119
120
bool
IS_VEHICLE_GUID
(
uint64
guid)
121
{
122
return
GUID_HIPART
(guid) ==
HIGHGUID_VEHICLE
;
123
}
124
125
bool
IS_CRE_OR_VEH_GUID
(
uint64
guid)
126
{
127
return
IS_CREATURE_GUID
(guid) ||
IS_VEHICLE_GUID
(guid);
128
}
129
130
bool
IS_CRE_OR_VEH_OR_PET_GUID
(
uint64
guid)
131
{
132
return
IS_CRE_OR_VEH_GUID
(guid) ||
IS_PET_GUID
(guid);
133
}
134
135
bool
IS_PLAYER_GUID
(
uint64
guid)
136
{
137
return
guid != 0 &&
GUID_HIPART
(guid) ==
HIGHGUID_PLAYER
;
138
}
139
140
bool
IS_GUILD_GUID
(
uint64
guid)
141
{
142
return
GUID_HIPART
(guid) ==
HIGHGUID_GUILD
;
143
}
144
145
bool
IS_UNIT_GUID
(
uint64
guid)
146
{
147
return
IS_CRE_OR_VEH_OR_PET_GUID
(guid) ||
IS_PLAYER_GUID
(guid);
148
}
149
150
bool
IS_ITEM_GUID
(
uint64
guid)
151
{
152
return
GUID_HIPART
(guid) ==
HIGHGUID_ITEM
;
153
}
154
155
bool
IS_GAMEOBJECT_GUID
(
uint64
guid)
156
{
157
return
GUID_HIPART
(guid) ==
HIGHGUID_GAMEOBJECT
;
158
}
159
160
bool
IS_DYNAMICOBJECT_GUID
(
uint64
guid)
161
{
162
return
GUID_HIPART
(guid) ==
HIGHGUID_DYNAMICOBJECT
;
163
}
164
165
bool
IS_CORPSE_GUID
(
uint64
guid)
166
{
167
return
GUID_HIPART
(guid) ==
HIGHGUID_CORPSE
;
168
}
169
170
bool
IS_TRANSPORT_GUID
(
uint64
guid)
171
{
172
return
GUID_HIPART
(guid) ==
HIGHGUID_TRANSPORT
;
173
}
174
175
bool
IS_MO_TRANSPORT_GUID
(
uint64
guid)
176
{
177
return
GUID_HIPART
(guid) ==
HIGHGUID_MO_TRANSPORT
;
178
}
179
180
bool
IS_GROUP_GUID
(
uint64
guid)
181
{
182
return
GUID_HIPART
(guid) ==
HIGHGUID_GROUP
;
183
}
184
185
bool
IS_AREATRIGGER_GUID
(
uint64
guid)
186
{
187
return
GUID_HIPART
(guid) ==
HIGHGUID_AREATRIGGER
;
188
}
189
190
uint64
MAKE_NEW_GUID
(
uint32
l,
uint32
e,
uint32
h)
191
{
192
return
uint64
(
uint64
(l) | (
uint64
(e) << 32) | (
uint64
(h) << ((h ==
HIGHGUID_CORPSE
|| h ==
HIGHGUID_AREATRIGGER
) ? 48 : 52)));
193
}
194
195
uint32
GUID_HIPART
(
uint64
guid)
196
{
197
uint32
t = ((
uint64
(guid) >> 48) & 0x0000FFFF);
198
return
(t ==
HIGHGUID_CORPSE
|| t ==
HIGHGUID_AREATRIGGER
) ? t : ((t >> 4) & 0x00000FFF);
199
}
200
201
uint32
GUID_ENPART
(
uint64
x)
202
{
203
return
IsGuidHaveEnPart
(x)
204
? ((
uint32
)((x >> 32) &
UI64LIT
(0x00000000000FFFFF)))
205
: 0;
206
}
207
208
uint32
GUID_LOPART
(
uint64
x)
209
{
210
// _GUID_LOPART_3 and _GUID_LOPART_2 were both equal to PAIR64_LOPART
211
return
PAIR64_LOPART
(x);
212
}
213
214
bool
IsGuidHaveEnPart
(
uint64
guid)
215
{
216
switch
(
GUID_HIPART
(guid))
217
{
218
case
HIGHGUID_ITEM
:
219
case
HIGHGUID_PLAYER
:
220
case
HIGHGUID_DYNAMICOBJECT
:
221
case
HIGHGUID_CORPSE
:
222
case
HIGHGUID_GROUP
:
223
case
HIGHGUID_GUILD
:
224
return
false
;
225
case
HIGHGUID_GAMEOBJECT
:
226
case
HIGHGUID_TRANSPORT
:
227
case
HIGHGUID_UNIT
:
228
case
HIGHGUID_PET
:
229
case
HIGHGUID_VEHICLE
:
230
case
HIGHGUID_MO_TRANSPORT
:
231
case
HIGHGUID_AREATRIGGER
:
232
default
:
233
return
true
;
234
}
235
}
236
237
char
const
*
GetLogNameForGuid
(
uint64
guid)
238
{
239
switch
(
GUID_HIPART
(guid))
240
{
241
case
HIGHGUID_ITEM
:
return
"item"
;
242
case
HIGHGUID_PLAYER
:
return
guid ?
"player"
:
"none"
;
243
case
HIGHGUID_GAMEOBJECT
:
return
"gameobject"
;
244
case
HIGHGUID_TRANSPORT
:
return
"transport"
;
245
case
HIGHGUID_UNIT
:
return
"creature"
;
246
case
HIGHGUID_PET
:
return
"pet"
;
247
case
HIGHGUID_VEHICLE
:
return
"vehicle"
;
248
case
HIGHGUID_DYNAMICOBJECT
:
return
"dynobject"
;
249
case
HIGHGUID_CORPSE
:
return
"corpse"
;
250
case
HIGHGUID_MO_TRANSPORT
:
return
"mo_transport"
;
251
case
HIGHGUID_GROUP
:
return
"group"
;
252
case
HIGHGUID_GUILD
:
return
"guild"
;
253
case
HIGHGUID_AREATRIGGER
:
return
"areatrigger"
;
254
default
:
255
return
"<unknown>"
;
256
}
257
}
258
259
#endif
Define.h
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
UI64LIT
#define UI64LIT(N)
Definition
Define.h:65
uint64
std::uint64_t uint64
Definition
Define.h:76
uint16
std::uint16_t uint16
Definition
Define.h:78
PAIR64_LOPART
uint32 PAIR64_LOPART(uint64 x)
Definition
ObjectDefines.h:80
GUID_LOPART
uint32 GUID_LOPART(uint64 x)
Definition
ObjectDefines.h:208
IS_GAMEOBJECT_GUID
bool IS_GAMEOBJECT_GUID(uint64 guid)
Definition
ObjectDefines.h:155
IS_AREATRIGGER_GUID
bool IS_AREATRIGGER_GUID(uint64 guid)
Definition
ObjectDefines.h:185
IS_UNIT_GUID
bool IS_UNIT_GUID(uint64 guid)
Definition
ObjectDefines.h:145
GetLogNameForGuid
char const * GetLogNameForGuid(uint64 guid)
Definition
ObjectDefines.h:237
MAKE_PAIR32
uint32 MAKE_PAIR32(uint16 l, uint16 h)
Definition
ObjectDefines.h:90
IS_CRE_OR_VEH_OR_PET_GUID
bool IS_CRE_OR_VEH_OR_PET_GUID(uint64 guid)
Definition
ObjectDefines.h:130
GUID_ENPART
uint32 GUID_ENPART(uint64 x)
Definition
ObjectDefines.h:201
PAIR32_HIPART
uint16 PAIR32_HIPART(uint32 x)
Definition
ObjectDefines.h:95
IS_ITEM_GUID
bool IS_ITEM_GUID(uint64 guid)
Definition
ObjectDefines.h:150
IS_PET_GUID
bool IS_PET_GUID(uint64 guid)
Definition
ObjectDefines.h:115
IS_EMPTY_GUID
bool IS_EMPTY_GUID(uint64 guid)
Definition
ObjectDefines.h:105
IS_CRE_OR_VEH_GUID
bool IS_CRE_OR_VEH_GUID(uint64 guid)
Definition
ObjectDefines.h:125
IS_GROUP_GUID
bool IS_GROUP_GUID(uint64 guid)
Definition
ObjectDefines.h:180
IS_MO_TRANSPORT_GUID
bool IS_MO_TRANSPORT_GUID(uint64 guid)
Definition
ObjectDefines.h:175
IS_CREATURE_GUID
bool IS_CREATURE_GUID(uint64 guid)
Definition
ObjectDefines.h:110
HighGuid
HighGuid
Definition
ObjectDefines.h:12
HIGHGUID_PET
@ HIGHGUID_PET
Definition
ObjectDefines.h:19
HIGHGUID_AREATRIGGER
@ HIGHGUID_AREATRIGGER
Definition
ObjectDefines.h:23
HIGHGUID_CONTAINER
@ HIGHGUID_CONTAINER
Definition
ObjectDefines.h:14
HIGHGUID_DYNAMICOBJECT
@ HIGHGUID_DYNAMICOBJECT
Definition
ObjectDefines.h:21
HIGHGUID_GAMEOBJECT
@ HIGHGUID_GAMEOBJECT
Definition
ObjectDefines.h:16
HIGHGUID_TRANSPORT
@ HIGHGUID_TRANSPORT
Definition
ObjectDefines.h:17
HIGHGUID_BATTLEGROUND
@ HIGHGUID_BATTLEGROUND
Definition
ObjectDefines.h:24
HIGHGUID_GUILD
@ HIGHGUID_GUILD
Definition
ObjectDefines.h:27
HIGHGUID_CORPSE
@ HIGHGUID_CORPSE
Definition
ObjectDefines.h:22
HIGHGUID_PLAYER
@ HIGHGUID_PLAYER
Definition
ObjectDefines.h:15
HIGHGUID_MO_TRANSPORT
@ HIGHGUID_MO_TRANSPORT
Definition
ObjectDefines.h:25
HIGHGUID_UNIT
@ HIGHGUID_UNIT
Definition
ObjectDefines.h:18
HIGHGUID_GROUP
@ HIGHGUID_GROUP
Definition
ObjectDefines.h:26
HIGHGUID_ITEM
@ HIGHGUID_ITEM
Definition
ObjectDefines.h:13
HIGHGUID_VEHICLE
@ HIGHGUID_VEHICLE
Definition
ObjectDefines.h:20
MAKE_PAIR64
uint64 MAKE_PAIR64(uint32 l, uint32 h)
Definition
ObjectDefines.h:70
MAKE_NEW_GUID
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
Definition
ObjectDefines.h:190
IS_DYNAMICOBJECT_GUID
bool IS_DYNAMICOBJECT_GUID(uint64 guid)
Definition
ObjectDefines.h:160
MAKE_PAIR16
uint16 MAKE_PAIR16(uint8 l, uint8 h)
Definition
ObjectDefines.h:85
GUID_HIPART
uint32 GUID_HIPART(uint64 guid)
Definition
ObjectDefines.h:195
IS_CORPSE_GUID
bool IS_CORPSE_GUID(uint64 guid)
Definition
ObjectDefines.h:165
IS_TRANSPORT_GUID
bool IS_TRANSPORT_GUID(uint64 guid)
Definition
ObjectDefines.h:170
PAIR64_HIPART
uint32 PAIR64_HIPART(uint64 x)
Definition
ObjectDefines.h:75
PAIR32_LOPART
uint16 PAIR32_LOPART(uint32 x)
Definition
ObjectDefines.h:100
IS_PLAYER_GUID
bool IS_PLAYER_GUID(uint64 guid)
Definition
ObjectDefines.h:135
IS_VEHICLE_GUID
bool IS_VEHICLE_GUID(uint64 guid)
Definition
ObjectDefines.h:120
IsGuidHaveEnPart
bool IsGuidHaveEnPart(uint64 guid)
Definition
ObjectDefines.h:214
IS_GUILD_GUID
bool IS_GUILD_GUID(uint64 guid)
Definition
ObjectDefines.h:140
src
server
game
Entities
Object
ObjectDefines.h
Generated on
for Project SkyFire Core by
1.17.0