Project SkyFire Core
SkyFire 5.4.8 server core API documentation
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
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)
27 HIGHGUID_GUILD = 0x1FF // new 4.x
28};
29
30// used for creating values for respawn for example
31inline uint64 MAKE_PAIR64(uint32 l, uint32 h);
34inline uint16 MAKE_PAIR16(uint8 l, uint8 h);
35inline uint32 MAKE_PAIR32(uint16 l, uint16 h);
38
39inline bool IS_EMPTY_GUID(uint64 guid);
40inline bool IS_CREATURE_GUID(uint64 guid);
41inline bool IS_PET_GUID(uint64 guid);
42inline bool IS_VEHICLE_GUID(uint64 guid);
43inline bool IS_CRE_OR_VEH_GUID(uint64 guid);
44inline bool IS_CRE_OR_VEH_OR_PET_GUID(uint64 guid);
45inline bool IS_PLAYER_GUID(uint64 guid);
46inline bool IS_GUILD_GUID(uint64 guid);
47inline bool IS_UNIT_GUID(uint64 guid);
48inline bool IS_ITEM_GUID(uint64 guid);
49inline bool IS_GAMEOBJECT_GUID(uint64 guid);
50inline bool IS_DYNAMICOBJECT_GUID(uint64 guid);
51inline bool IS_CORPSE_GUID(uint64 guid);
52inline bool IS_TRANSPORT_GUID(uint64 guid);
53inline bool IS_MO_TRANSPORT_GUID(uint64 guid);
54inline bool IS_GROUP_GUID(uint64 guid);
55inline 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
61
62//#define GUID_HIPART(x) (uint32)((uint64(x) >> 52)) & 0x0000FFFF)
63inline uint32 GUID_HIPART(uint64 guid);
64inline uint32 GUID_ENPART(uint64 x);
65inline uint32 GUID_LOPART(uint64 x);
66
67inline bool IsGuidHaveEnPart(uint64 guid);
68inline char const* GetLogNameForGuid(uint64 guid);
69
71{
72 return uint64(l | (uint64(h) << 32));
73}
74
76{
77 return (uint32)((x >> 32) & UI64LIT(0x00000000FFFFFFFF));
78}
79
81{
82 return (uint32)(x & UI64LIT(0x00000000FFFFFFFF));
83}
84
86{
87 return uint16(l | (uint16(h) << 8));
88}
89
91{
92 return uint32(l | (uint32(h) << 16));
93}
94
96{
97 return (uint16)((x >> 16) & 0x0000FFFF);
98}
99
101{
102 return (uint16)(x & 0x0000FFFF);
103}
104
106{
107 return guid == 0;
108}
109
111{
112 return GUID_HIPART(guid) == HIGHGUID_UNIT;
113}
114
116{
117 return GUID_HIPART(guid) == HIGHGUID_PET;
118}
119
121{
122 return GUID_HIPART(guid) == HIGHGUID_VEHICLE;
123}
124
126{
127 return IS_CREATURE_GUID(guid) || IS_VEHICLE_GUID(guid);
128}
129
131{
132 return IS_CRE_OR_VEH_GUID(guid) || IS_PET_GUID(guid);
133}
134
136{
137 return guid != 0 && GUID_HIPART(guid) == HIGHGUID_PLAYER;
138}
139
141{
142 return GUID_HIPART(guid) == HIGHGUID_GUILD;
143}
144
146{
147 return IS_CRE_OR_VEH_OR_PET_GUID(guid) || IS_PLAYER_GUID(guid);
148}
149
151{
152 return GUID_HIPART(guid) == HIGHGUID_ITEM;
153}
154
156{
157 return GUID_HIPART(guid) == HIGHGUID_GAMEOBJECT;
158}
159
161{
162 return GUID_HIPART(guid) == HIGHGUID_DYNAMICOBJECT;
163}
164
166{
167 return GUID_HIPART(guid) == HIGHGUID_CORPSE;
168}
169
171{
172 return GUID_HIPART(guid) == HIGHGUID_TRANSPORT;
173}
174
176{
177 return GUID_HIPART(guid) == HIGHGUID_MO_TRANSPORT;
178}
179
181{
182 return GUID_HIPART(guid) == HIGHGUID_GROUP;
183}
184
186{
187 return GUID_HIPART(guid) == HIGHGUID_AREATRIGGER;
188}
189
191{
192 return uint64(uint64(l) | (uint64(e) << 32) | (uint64(h) << ((h == HIGHGUID_CORPSE || h == HIGHGUID_AREATRIGGER) ? 48 : 52)));
193}
194
196{
197 uint32 t = ((uint64(guid) >> 48) & 0x0000FFFF);
198 return (t == HIGHGUID_CORPSE || t == HIGHGUID_AREATRIGGER) ? t : ((t >> 4) & 0x00000FFF);
199}
200
202{
203 return IsGuidHaveEnPart(x)
204 ? ((uint32)((x >> 32) & UI64LIT(0x00000000000FFFFF)))
205 : 0;
206}
207
209{
210 // _GUID_LOPART_3 and _GUID_LOPART_2 were both equal to PAIR64_LOPART
211 return PAIR64_LOPART(x);
212}
213
215{
216 switch (GUID_HIPART(guid))
217 {
218 case HIGHGUID_ITEM:
219 case HIGHGUID_PLAYER:
221 case HIGHGUID_CORPSE:
222 case HIGHGUID_GROUP:
223 case HIGHGUID_GUILD:
224 return false;
227 case HIGHGUID_UNIT:
228 case HIGHGUID_PET:
229 case HIGHGUID_VEHICLE:
232 default:
233 return true;
234 }
235}
236
237char 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
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
#define UI64LIT(N)
Definition Define.h:65
std::uint64_t uint64
Definition Define.h:76
std::uint16_t uint16
Definition Define.h:78
uint32 PAIR64_LOPART(uint64 x)
uint32 GUID_LOPART(uint64 x)
bool IS_GAMEOBJECT_GUID(uint64 guid)
bool IS_AREATRIGGER_GUID(uint64 guid)
bool IS_UNIT_GUID(uint64 guid)
char const * GetLogNameForGuid(uint64 guid)
uint32 MAKE_PAIR32(uint16 l, uint16 h)
bool IS_CRE_OR_VEH_OR_PET_GUID(uint64 guid)
uint32 GUID_ENPART(uint64 x)
uint16 PAIR32_HIPART(uint32 x)
bool IS_ITEM_GUID(uint64 guid)
bool IS_PET_GUID(uint64 guid)
bool IS_EMPTY_GUID(uint64 guid)
bool IS_CRE_OR_VEH_GUID(uint64 guid)
bool IS_GROUP_GUID(uint64 guid)
bool IS_MO_TRANSPORT_GUID(uint64 guid)
bool IS_CREATURE_GUID(uint64 guid)
HighGuid
@ HIGHGUID_PET
@ HIGHGUID_AREATRIGGER
@ HIGHGUID_CONTAINER
@ HIGHGUID_DYNAMICOBJECT
@ HIGHGUID_GAMEOBJECT
@ HIGHGUID_TRANSPORT
@ HIGHGUID_BATTLEGROUND
@ HIGHGUID_GUILD
@ HIGHGUID_CORPSE
@ HIGHGUID_PLAYER
@ HIGHGUID_MO_TRANSPORT
@ HIGHGUID_UNIT
@ HIGHGUID_GROUP
@ HIGHGUID_ITEM
@ HIGHGUID_VEHICLE
uint64 MAKE_PAIR64(uint32 l, uint32 h)
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
bool IS_DYNAMICOBJECT_GUID(uint64 guid)
uint16 MAKE_PAIR16(uint8 l, uint8 h)
uint32 GUID_HIPART(uint64 guid)
bool IS_CORPSE_GUID(uint64 guid)
bool IS_TRANSPORT_GUID(uint64 guid)
uint32 PAIR64_HIPART(uint64 x)
uint16 PAIR32_LOPART(uint32 x)
bool IS_PLAYER_GUID(uint64 guid)
bool IS_VEHICLE_GUID(uint64 guid)
bool IsGuidHaveEnPart(uint64 guid)
bool IS_GUILD_GUID(uint64 guid)