TrinityCore
Loading...
Searching...
No Matches
ObjectGuid.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 ObjectGuid_h__
19#define ObjectGuid_h__
20
21#include "Define.h"
22#include "EnumFlag.h"
23#include <functional>
24#include <list>
25#include <set>
26#include <string>
27#include <type_traits>
28#include <vector>
29#include <unordered_set>
30
32{
47};
48
49#define NUM_CLIENT_OBJECT_TYPES 14
50
52{
54 TYPEMASK_ITEM = 0x0002,
58 TYPEMASK_UNIT = 0x0020,
68};
69
70enum class HighGuid
71{
72 Null = 0,
73 Uniq = 1,
74 Player = 2,
75 Item = 3,
77 StaticDoor = 5, //NYI
78 Transport = 6,
79 Conversation = 7,
80 Creature = 8,
81 Vehicle = 9,
82 Pet = 10,
83 GameObject = 11,
84 DynamicObject = 12,
85 AreaTrigger = 13,
86 Corpse = 14,
87 LootObject = 15,
88 SceneObject = 16,
89 Scenario = 17,
90 AIGroup = 18,
91 DynamicDoor = 19,
92 ClientActor = 20, //NYI
93 Vignette = 21,
94 CallForHelp = 22,
95 AIResource = 23,
96 AILock = 24,
97 AILockTicket = 25,
98 ChatChannel = 26,
99 Party = 27,
100 Guild = 28,
101 WowAccount = 29,
102 BNetAccount = 30,
103 GMTask = 31,
104 MobileSession = 32, //NYI
105 RaidGroup = 33,
106 Spell = 34,
107 Mail = 35,
108 WebObj = 36, //NYI
109 LFGObject = 37, //NYI
110 LFGList = 38, //NYI
111 UserRouter = 39,
112 PVPQueueGroup = 40,
113 UserClient = 41,
114 PetBattle = 42, //NYI
115 UniqUserClient = 43,
116 BattlePet = 44,
117 CommerceObj = 45,
118 ClientSession = 46,
119 Cast = 47,
120 ClientConnection = 48,
121 ClubFinder = 49,
122 ToolsClient = 50,
123 WorldLayer = 51,
124 ArenaTeam = 52,
125
126 Count,
127};
128
130{
131 None = 0x0,
132 Global = 0x1,
133 Realm = 0x2,
134 Map = 0x4
135};
136
138
140{
141 Null,
142 Uniq,
143 Player,
144 Item,
146 Transport,
149 Global,
150 Guild,
152 WebObj,
153 LFGObject,
154 LFGList,
155 Client,
159};
160
161template<HighGuid high>
163{
164 static constexpr EnumFlag<ObjectGuidSequenceSource> SequenceSource = ObjectGuidSequenceSource::None;
165 using Format = std::integral_constant<ObjectGuidFormatType, ObjectGuidFormatType::Null>;
166};
167
168#define MAKE_GUID_TRAIT(high, sequence, format) \
169 template<> struct ObjectGuidTraits<high> \
170 { \
171 static constexpr EnumFlag<ObjectGuidSequenceSource> SequenceSource = sequence; \
172 using Format = std::integral_constant<ObjectGuidFormatType, format>; \
173 }
174
228
229class ByteBuffer;
230class ObjectGuid;
231
233{
234public:
235 static ObjectGuid CreateNull();
236 static ObjectGuid CreateUniq(uint64 id);
237 static ObjectGuid CreatePlayer(uint32 realmId, uint64 dbId);
238 static ObjectGuid CreateItem(uint32 realmId, uint64 dbId);
239 static ObjectGuid CreateWorldObject(HighGuid type, uint8 subType, uint32 realmId, uint16 mapId, uint32 serverId, uint32 entry, uint64 counter);
240 static ObjectGuid CreateTransport(HighGuid type, uint32 counter);
241 static ObjectGuid CreateClientActor(uint16 ownerType, uint16 ownerId, uint32 counter);
242 static ObjectGuid CreateChatChannel(uint32 realmId, bool builtIn, bool trade, uint16 zoneId, uint8 factionGroupMask, uint64 counter);
243 static ObjectGuid CreateGlobal(HighGuid type, uint64 dbIdHigh, uint64 dbId);
244 static ObjectGuid CreateGuild(HighGuid type, uint32 realmId, uint64 dbId);
245 static ObjectGuid CreateMobileSession(uint32 realmId, uint16 arg1, uint64 counter);
246 static ObjectGuid CreateWebObj(uint32 realmId, uint8 arg1, uint8 arg2, uint64 counter);
247 static ObjectGuid CreateLFGObject(uint8 arg1, uint8 arg2, uint8 arg3, uint8 arg4, bool arg5, uint8 arg6, uint64 counter);
248 static ObjectGuid CreateLFGList(uint8 arg1, uint64 counter);
249 static ObjectGuid CreateClient(HighGuid type, uint32 realmId, uint32 arg1, uint64 counter);
250 static ObjectGuid CreateClubFinder(uint32 realmId, uint8 type, uint32 clubFinderId, uint64 dbId);
251 static ObjectGuid CreateToolsClient(uint16 mapId, uint32 serverId, uint64 counter);
252 static ObjectGuid CreateWorldLayer(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4);
253};
254
255#pragma pack(push, 1)
256
258{
259 friend class ObjectGuidFactory;
260 friend TC_GAME_API ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid);
262
263 public:
264 static ObjectGuid const Empty;
266 static ObjectGuid const TradeItem;
267
269
270 ObjectGuid() { Clear(); }
271
272 uint64 GetRawValue(std::size_t i) const { return _data[i]; }
273 std::vector<uint8> GetRawValue() const;
274 void SetRawValue(std::vector<uint8> const& guid);
275 void SetRawValue(uint64 high, uint64 low) { _data[0] = low; _data[1] = high; }
276 void Clear() { std::fill(std::begin(_data), std::end(_data), UI64LIT(0)); }
277
278 HighGuid GetHigh() const { return HighGuid((_data[1] >> 58) & 0x3F); }
279 uint32 GetRealmId() const { return uint32((_data[1] >> 42) & 0xFFFF); }
280 uint32 GetMapId() const { return uint32((_data[1] >> 29) & 0x1FFF); }
281 uint32 GetEntry() const { return uint32((_data[1] >> 6) & 0x7FFFFF); }
282 uint32 GetSubType() const { return uint32(_data[1] & 0x3F); }
284 {
285 switch (GetHigh())
286 {
287 case HighGuid::Transport:
288 return (_data[1] >> 38) & UI64LIT(0xFFFFF);
289 default:
290 break;
291 }
292 return _data[0] & UI64LIT(0x000000FFFFFFFFFF);
293 }
294
296 {
297 switch (high)
298 {
299 case HighGuid::Transport:
300 return UI64LIT(0xFFFFF);
301 default:
302 break;
303 }
304 return UI64LIT(0xFFFFFFFFFF);
305 }
306
307 LowType GetMaxCounter() const { return GetMaxCounter(GetHigh()); }
308
309 bool IsEmpty() const { return _data[0] == 0 && _data[1] == 0; }
310 bool IsCreature() const { return GetHigh() == HighGuid::Creature; }
311 bool IsPet() const { return GetHigh() == HighGuid::Pet; }
312 bool IsVehicle() const { return GetHigh() == HighGuid::Vehicle; }
313 bool IsCreatureOrPet() const { return IsCreature() || IsPet(); }
314 bool IsCreatureOrVehicle() const { return IsCreature() || IsVehicle(); }
315 bool IsAnyTypeCreature() const { return IsCreature() || IsPet() || IsVehicle(); }
316 bool IsPlayer() const { return !IsEmpty() && GetHigh() == HighGuid::Player; }
317 bool IsUnit() const { return IsAnyTypeCreature() || IsPlayer(); }
318 bool IsItem() const { return GetHigh() == HighGuid::Item; }
319 bool IsGameObject() const { return GetHigh() == HighGuid::GameObject; }
320 bool IsDynamicObject() const { return GetHigh() == HighGuid::DynamicObject; }
321 bool IsCorpse() const { return GetHigh() == HighGuid::Corpse; }
322 bool IsAreaTrigger() const { return GetHigh() == HighGuid::AreaTrigger; }
323 bool IsMOTransport() const { return GetHigh() == HighGuid::Transport; }
324 bool IsAnyTypeGameObject() const { return IsGameObject() || IsMOTransport(); }
325 bool IsParty() const { return GetHigh() == HighGuid::Party; }
326 bool IsGuild() const { return GetHigh() == HighGuid::Guild; }
327 bool IsSceneObject() const { return GetHigh() == HighGuid::SceneObject; }
328 bool IsConversation() const { return GetHigh() == HighGuid::Conversation; }
329 bool IsCast() const { return GetHigh() == HighGuid::Cast; }
330
331 bool operator!() const { return IsEmpty(); }
332 bool operator== (ObjectGuid const& guid) const { return _data[0] == guid._data[0] && _data[1] == guid._data[1]; }
333 bool operator!= (ObjectGuid const& guid) const { return !(*this == guid); }
334 bool operator< (ObjectGuid const& guid) const
335 {
336 if (_data[1] < guid._data[1])
337 return true;
338 else if (_data[1] > guid._data[1])
339 return false;
340
341 return _data[0] < guid._data[0];
342 }
343
344 static char const* GetTypeName(HighGuid high);
345 char const* GetTypeName() const { return !IsEmpty() ? GetTypeName(GetHigh()) : "None"; }
346 std::string ToString() const;
347 std::string ToHexString() const;
348 static ObjectGuid FromString(std::string const& guidString);
349 std::size_t GetHash() const;
350
351 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Null, ObjectGuid> Create() { return ObjectGuidFactory::CreateNull(); }
352 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Uniq, ObjectGuid> Create(ObjectGuid::LowType id) { return ObjectGuidFactory::CreateUniq(id); }
353 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Player, ObjectGuid> Create(ObjectGuid::LowType dbId) { return ObjectGuidFactory::CreatePlayer(0, dbId); }
354 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Item, ObjectGuid> Create(ObjectGuid::LowType dbId) { return ObjectGuidFactory::CreateItem(0, dbId); }
355 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::WorldObject, ObjectGuid> Create(uint16 mapId, uint32 entry, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateWorldObject(type, 0, 0, mapId, 0, entry, counter); }
356 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::WorldObject, ObjectGuid> Create(uint8 subType, uint16 mapId, uint32 entry, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateWorldObject(type, subType, 0, mapId, 0, entry, counter); }
357 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Transport, ObjectGuid> Create(uint32 counter) { return ObjectGuidFactory::CreateTransport(type, counter); }
358 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::ClientActor, ObjectGuid> Create(uint16 ownerType, uint16 ownerId, uint32 counter) { return ObjectGuidFactory::CreateClientActor(ownerType, ownerId, counter); }
359 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::ChatChannel, ObjectGuid> Create(bool builtIn, bool trade, uint16 zoneId, uint8 factionGroupMask, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateChatChannel(0, builtIn, trade, zoneId, factionGroupMask, counter); }
360 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Global, ObjectGuid> Create(ObjectGuid::LowType dbId) { return ObjectGuidFactory::CreateGlobal(type, UI64LIT(0), dbId); }
361 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Guild, ObjectGuid> Create(ObjectGuid::LowType dbId) { return ObjectGuidFactory::CreateGuild(type, 0, dbId); }
362 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::MobileSession, ObjectGuid> Create(uint16 arg1, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateMobileSession(0, arg1, counter); }
363 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::WebObj, ObjectGuid> Create(uint8 arg1, uint8 arg2, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateWebObj(0, arg1, arg2, counter); }
364 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::LFGObject, ObjectGuid> Create(uint8 arg1, uint8 arg2, uint8 arg3, uint8 arg4, bool arg5, uint8 arg6, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateLFGObject(arg1, arg2, arg3, arg4, arg5, arg6, counter); }
365 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::LFGList, ObjectGuid> Create(uint8 arg1, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateLFGList(arg1, counter); }
366 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::Client, ObjectGuid> Create(uint32 arg1, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateClient(type, 0, arg1, counter); }
367 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::ClubFinder, ObjectGuid> Create(uint8 clubType, uint32 clubFinderId, ObjectGuid::LowType dbId) { return ObjectGuidFactory::CreateClubFinder(0, clubType, clubFinderId, dbId); }
368 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::ToolsClient, ObjectGuid> Create(uint16 mapId, uint32 serverId, ObjectGuid::LowType counter) { return ObjectGuidFactory::CreateToolsClient(mapId, serverId, counter); }
369 template<HighGuid type> static std::enable_if_t<ObjectGuidTraits<type>::Format::value == ObjectGuidFormatType::WorldLayer, ObjectGuid> Create(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4) { return ObjectGuidFactory::CreateWorldLayer(arg1, arg2, arg3, arg4); }
370
371 protected:
373 {
374 _data[0] = low;
375 _data[1] = high;
376 }
377
378 uint64 _data[2];
379};
380
381#pragma pack(pop)
382
383// Some Shared defines
384using GuidSet = std::set<ObjectGuid>;
385using GuidList = std::list<ObjectGuid>;
386using GuidVector = std::vector<ObjectGuid>;
387using GuidUnorderedSet = std::unordered_set<ObjectGuid>;
388
390{
391public:
392 explicit ObjectGuidGenerator(HighGuid high, ObjectGuid::LowType start = UI64LIT(1)) : _high(high), _nextGuid(start) { }
394
395 void Set(ObjectGuid::LowType val) { _nextGuid = val; }
396 ObjectGuid::LowType Generate();
397 ObjectGuid::LowType GetNextAfterMaxUsed() const { return _nextGuid; }
398
399protected:
400 void HandleCounterOverflow();
401 void CheckGuidTrigger();
404};
405
408
409namespace std
410{
411 template<>
412 struct hash<ObjectGuid>
413 {
414 public:
415 size_t operator()(ObjectGuid const& key) const noexcept
416 {
417 return key.GetHash();
418 }
419 };
420}
421
422namespace Trinity
423{
424 namespace Legacy
425 {
426 enum class TypeID
427 {
428 Object = 0,
429 Item = 1,
430 Container = 2,
431 Unit = 3,
432 Player = 4,
433 GameObject = 5,
434 DynamicObject = 6,
435 Corpse = 7,
436 AreaTrigger = 8,
437 SceneObject = 9,
438 Conversation = 10,
439 Max
440 };
441
442 constexpr inline ::TypeID ConvertLegacyTypeID(TypeID legacyTypeID)
443 {
444 switch (legacyTypeID)
445 {
446 case TypeID::Object:
447 return TYPEID_OBJECT;
448 case TypeID::Item:
449 return TYPEID_ITEM;
451 return TYPEID_CONTAINER;
452 case TypeID::Unit:
453 return TYPEID_UNIT;
454 case TypeID::Player:
455 return TYPEID_PLAYER;
457 return TYPEID_GAMEOBJECT;
460 case TypeID::Corpse:
461 return TYPEID_CORPSE;
463 return TYPEID_AREATRIGGER;
465 return TYPEID_SCENEOBJECT;
467 return TYPEID_CONVERSATION;
468 default:
469 return TYPEID_OBJECT;
470 }
471 }
472
473 constexpr inline TypeMask ConvertLegacyTypeMask(uint32 legacyTypeMask)
474 {
475 uint32 typeMask = 0;
476 for (TypeID i = TypeID::Object; i < TypeID::Max; i = TypeID(uint32(i) + 1))
477 if (legacyTypeMask & (1 << uint32(i)))
478 typeMask |= 1u << ConvertLegacyTypeID(i);
479
480 return TypeMask(typeMask);
481 }
482 }
483}
484
485#endif // ObjectGuid_h__
bool operator==(AreaTriggerId const &left, AreaTriggerId const &right)
Definition: AreaTriggerDataStore.cpp:30
bool operator<(AuctionsBucketKey const &left, AuctionsBucketKey const &right)
Definition: AuctionHouseMgr.cpp:90
#define TC_GAME_API
Definition: Define.h:124
uint8_t uint8
Definition: Define.h:145
uint64_t uint64
Definition: Define.h:142
#define UI64LIT(N)
Definition: Define.h:128
uint16_t uint16
Definition: Define.h:144
uint32_t uint32
Definition: Define.h:143
#define DEFINE_ENUM_FLAG(enumType)
Definition: EnumFlag.h:26
bool operator!=(const CoordPair< LIMIT > &p1, const CoordPair< LIMIT > &p2)
Definition: GridDefines.h:182
ByteBuffer & operator<<(ByteBuffer &buf, ObjectGuid const &guid)
Definition: ObjectGuid.cpp:725
ByteBuffer & operator>>(ByteBuffer &buf, ObjectGuid &guid)
Definition: ObjectGuid.cpp:746
std::list< ObjectGuid > GuidList
Definition: ObjectGuid.h:385
std::unordered_set< ObjectGuid > GuidUnorderedSet
Definition: ObjectGuid.h:387
TypeID
Definition: ObjectGuid.h:32
@ TYPEID_AZERITE_ITEM
Definition: ObjectGuid.h:37
@ TYPEID_OBJECT
Definition: ObjectGuid.h:33
@ TYPEID_AREATRIGGER
Definition: ObjectGuid.h:44
@ TYPEID_ACTIVE_PLAYER
Definition: ObjectGuid.h:40
@ TYPEID_DYNAMICOBJECT
Definition: ObjectGuid.h:42
@ TYPEID_GAMEOBJECT
Definition: ObjectGuid.h:41
@ TYPEID_UNIT
Definition: ObjectGuid.h:38
@ TYPEID_CORPSE
Definition: ObjectGuid.h:43
@ TYPEID_ITEM
Definition: ObjectGuid.h:34
@ TYPEID_SCENEOBJECT
Definition: ObjectGuid.h:45
@ TYPEID_CONVERSATION
Definition: ObjectGuid.h:46
@ TYPEID_PLAYER
Definition: ObjectGuid.h:39
@ TYPEID_AZERITE_EMPOWERED_ITEM
Definition: ObjectGuid.h:36
@ TYPEID_CONTAINER
Definition: ObjectGuid.h:35
TC_GAME_API ByteBuffer & operator>>(ByteBuffer &buf, ObjectGuid &guid)
Definition: ObjectGuid.cpp:746
std::set< ObjectGuid > GuidSet
Definition: ObjectGuid.h:384
#define MAKE_GUID_TRAIT(high, sequence, format)
Definition: ObjectGuid.h:168
HighGuid
Definition: ObjectGuid.h:71
@ UniqUserClient
@ WorldTransaction
@ ClientConnection
TypeMask
Definition: ObjectGuid.h:52
@ TYPEMASK_OBJECT
Definition: ObjectGuid.h:53
@ TYPEMASK_ITEM
Definition: ObjectGuid.h:54
@ TYPEMASK_SCENEOBJECT
Definition: ObjectGuid.h:65
@ TYPEMASK_DYNAMICOBJECT
Definition: ObjectGuid.h:62
@ TYPEMASK_SEER
Definition: ObjectGuid.h:67
@ TYPEMASK_AZERITE_ITEM
Definition: ObjectGuid.h:57
@ TYPEMASK_UNIT
Definition: ObjectGuid.h:58
@ TYPEMASK_CONVERSATION
Definition: ObjectGuid.h:66
@ TYPEMASK_CONTAINER
Definition: ObjectGuid.h:55
@ TYPEMASK_CORPSE
Definition: ObjectGuid.h:63
@ TYPEMASK_GAMEOBJECT
Definition: ObjectGuid.h:61
@ TYPEMASK_PLAYER
Definition: ObjectGuid.h:59
@ TYPEMASK_AREATRIGGER
Definition: ObjectGuid.h:64
@ TYPEMASK_ACTIVE_PLAYER
Definition: ObjectGuid.h:60
@ TYPEMASK_AZERITE_EMPOWERED_ITEM
Definition: ObjectGuid.h:56
ObjectGuidSequenceSource
Definition: ObjectGuid.h:130
ObjectGuidFormatType
Definition: ObjectGuid.h:140
TC_GAME_API ByteBuffer & operator<<(ByteBuffer &buf, ObjectGuid const &guid)
Definition: ObjectGuid.cpp:725
std::vector< ObjectGuid > GuidVector
Definition: ObjectGuid.h:386
Definition: AreaTrigger.h:43
Definition: ArenaTeam.h:112
Definition: ByteBuffer.h:62
Definition: Conversation.h:30
Definition: Corpse.h:53
Definition: Creature.h:70
Definition: DynamicObject.h:37
Definition: EnumFlag.h:66
Definition: GameObject.h:125
Definition: Guild.h:306
Definition: Item.h:170
Definition: Map.h:185
Definition: ObjectGuid.h:233
static ObjectGuid CreateTransport(HighGuid type, uint32 counter)
Definition: ObjectGuid.cpp:611
static ObjectGuid CreateGlobal(HighGuid type, uint64 dbIdHigh, uint64 dbId)
Definition: ObjectGuid.cpp:637
static ObjectGuid CreateItem(uint32 realmId, uint64 dbId)
Definition: ObjectGuid.cpp:593
static ObjectGuid CreateWorldLayer(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4)
Definition: ObjectGuid.cpp:712
static ObjectGuid CreateMobileSession(uint32 realmId, uint16 arg1, uint64 counter)
Definition: ObjectGuid.cpp:651
static ObjectGuid CreateClubFinder(uint32 realmId, uint8 type, uint32 clubFinderId, uint64 dbId)
Definition: ObjectGuid.cpp:695
static ObjectGuid CreateClient(HighGuid type, uint32 realmId, uint32 arg1, uint64 counter)
Definition: ObjectGuid.cpp:687
static ObjectGuid CreateClientActor(uint16 ownerType, uint16 ownerId, uint32 counter)
Definition: ObjectGuid.cpp:618
static ObjectGuid CreateToolsClient(uint16 mapId, uint32 serverId, uint64 counter)
Definition: ObjectGuid.cpp:704
static ObjectGuid CreateGuild(HighGuid type, uint32 realmId, uint64 dbId)
Definition: ObjectGuid.cpp:644
static ObjectGuid CreateUniq(uint64 id)
Definition: ObjectGuid.cpp:580
static ObjectGuid CreateWorldObject(HighGuid type, uint8 subType, uint32 realmId, uint16 mapId, uint32 serverId, uint32 entry, uint64 counter)
Definition: ObjectGuid.cpp:600
static ObjectGuid CreateChatChannel(uint32 realmId, bool builtIn, bool trade, uint16 zoneId, uint8 factionGroupMask, uint64 counter)
Definition: ObjectGuid.cpp:626
static ObjectGuid CreatePlayer(uint32 realmId, uint64 dbId)
Definition: ObjectGuid.cpp:586
static ObjectGuid CreateNull()
Definition: ObjectGuid.cpp:575
static ObjectGuid CreateLFGList(uint8 arg1, uint64 counter)
Definition: ObjectGuid.cpp:680
static ObjectGuid CreateLFGObject(uint8 arg1, uint8 arg2, uint8 arg3, uint8 arg4, bool arg5, uint8 arg6, uint64 counter)
Definition: ObjectGuid.cpp:668
static ObjectGuid CreateWebObj(uint32 realmId, uint8 arg1, uint8 arg2, uint64 counter)
Definition: ObjectGuid.cpp:659
Definition: ObjectGuid.h:390
ObjectGuidGenerator(HighGuid high, ObjectGuid::LowType start=UI64LIT(1))
Definition: ObjectGuid.h:392
HighGuid _high
Definition: ObjectGuid.h:402
ObjectGuid::LowType _nextGuid
Definition: ObjectGuid.h:403
ObjectGuid::LowType GetNextAfterMaxUsed() const
Definition: ObjectGuid.h:397
~ObjectGuidGenerator()=default
void Set(ObjectGuid::LowType val)
Definition: ObjectGuid.h:395
Definition: ObjectGuid.h:258
uint32 GetMapId() const
Definition: ObjectGuid.h:280
static LowType GetMaxCounter(HighGuid high)
Definition: ObjectGuid.h:295
LowType GetCounter() const
Definition: ObjectGuid.h:283
static ObjectGuid const Empty
Definition: ObjectGuid.h:264
bool IsAnyTypeGameObject() const
Definition: ObjectGuid.h:324
ObjectGuid()
Definition: ObjectGuid.h:270
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Client, ObjectGuid > Create(uint32 arg1, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:366
bool IsCorpse() const
Definition: ObjectGuid.h:321
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::WorldObject, ObjectGuid > Create(uint16 mapId, uint32 entry, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:355
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Uniq, ObjectGuid > Create(ObjectGuid::LowType id)
Definition: ObjectGuid.h:352
bool IsEmpty() const
Definition: ObjectGuid.h:309
ObjectGuid(uint64 high, uint64 low)
Definition: ObjectGuid.h:372
bool IsAreaTrigger() const
Definition: ObjectGuid.h:322
uint64 GetRawValue(std::size_t i) const
Definition: ObjectGuid.h:272
void SetRawValue(uint64 high, uint64 low)
Definition: ObjectGuid.h:275
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::ChatChannel, ObjectGuid > Create(bool builtIn, bool trade, uint16 zoneId, uint8 factionGroupMask, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:359
bool IsSceneObject() const
Definition: ObjectGuid.h:327
static ObjectGuid const FromStringFailed
Definition: ObjectGuid.h:265
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::LFGObject, ObjectGuid > Create(uint8 arg1, uint8 arg2, uint8 arg3, uint8 arg4, bool arg5, uint8 arg6, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:364
bool IsMOTransport() const
Definition: ObjectGuid.h:323
bool IsItem() const
Definition: ObjectGuid.h:318
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::WorldLayer, ObjectGuid > Create(uint32 arg1, uint16 arg2, uint8 arg3, uint32 arg4)
Definition: ObjectGuid.h:369
bool IsPlayer() const
Definition: ObjectGuid.h:316
bool IsUnit() const
Definition: ObjectGuid.h:317
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::ToolsClient, ObjectGuid > Create(uint16 mapId, uint32 serverId, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:368
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::LFGList, ObjectGuid > Create(uint8 arg1, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:365
bool IsVehicle() const
Definition: ObjectGuid.h:312
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Transport, ObjectGuid > Create(uint32 counter)
Definition: ObjectGuid.h:357
bool IsCast() const
Definition: ObjectGuid.h:329
uint64 _data[2]
Definition: ObjectGuid.h:378
bool IsDynamicObject() const
Definition: ObjectGuid.h:320
LowType GetMaxCounter() const
Definition: ObjectGuid.h:307
bool IsGameObject() const
Definition: ObjectGuid.h:319
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::WorldObject, ObjectGuid > Create(uint8 subType, uint16 mapId, uint32 entry, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:356
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Item, ObjectGuid > Create(ObjectGuid::LowType dbId)
Definition: ObjectGuid.h:354
bool IsCreatureOrPet() const
Definition: ObjectGuid.h:313
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::MobileSession, ObjectGuid > Create(uint16 arg1, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:362
bool IsParty() const
Definition: ObjectGuid.h:325
bool operator!() const
Definition: ObjectGuid.h:331
uint32 GetEntry() const
Definition: ObjectGuid.h:281
static ObjectGuid const TradeItem
Definition: ObjectGuid.h:266
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Player, ObjectGuid > Create(ObjectGuid::LowType dbId)
Definition: ObjectGuid.h:353
bool IsGuild() const
Definition: ObjectGuid.h:326
uint32 GetSubType() const
Definition: ObjectGuid.h:282
char const * GetTypeName() const
Definition: ObjectGuid.h:345
bool IsAnyTypeCreature() const
Definition: ObjectGuid.h:315
uint64 LowType
Definition: ObjectGuid.h:268
bool IsCreatureOrVehicle() const
Definition: ObjectGuid.h:314
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::ClientActor, ObjectGuid > Create(uint16 ownerType, uint16 ownerId, uint32 counter)
Definition: ObjectGuid.h:358
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Guild, ObjectGuid > Create(ObjectGuid::LowType dbId)
Definition: ObjectGuid.h:361
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::ClubFinder, ObjectGuid > Create(uint8 clubType, uint32 clubFinderId, ObjectGuid::LowType dbId)
Definition: ObjectGuid.h:367
uint32 GetRealmId() const
Definition: ObjectGuid.h:279
HighGuid GetHigh() const
Definition: ObjectGuid.h:278
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Null, ObjectGuid > Create()
Definition: ObjectGuid.h:351
bool IsCreature() const
Definition: ObjectGuid.h:310
bool IsPet() const
Definition: ObjectGuid.h:311
void Clear()
Definition: ObjectGuid.h:276
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::Global, ObjectGuid > Create(ObjectGuid::LowType dbId)
Definition: ObjectGuid.h:360
static std::enable_if_t< ObjectGuidTraits< type >::Format::value==ObjectGuidFormatType::WebObj, ObjectGuid > Create(uint8 arg1, uint8 arg2, ObjectGuid::LowType counter)
Definition: ObjectGuid.h:363
bool IsConversation() const
Definition: ObjectGuid.h:328
Definition: Object.h:148
Definition: Pet.h:46
Definition: Player.h:1125
Definition: Scenario.h:51
Definition: SceneObject.h:33
Definition: Spell.h:239
Definition: Transport.h:30
Definition: Unit.h:739
Definition: Vehicle.h:31
TypeID
Definition: ObjectGuid.h:427
constexpr TypeMask ConvertLegacyTypeMask(uint32 legacyTypeMask)
Definition: ObjectGuid.h:473
constexpr ::TypeID ConvertLegacyTypeID(TypeID legacyTypeID)
Definition: ObjectGuid.h:442
Definition: AsioHacksFwd.h:53
STL namespace.
Definition: Mail.h:173
Definition: ObjectGuid.h:163
std::integral_constant< ObjectGuidFormatType, ObjectGuidFormatType::Null > Format
Definition: ObjectGuid.h:165
static constexpr EnumFlag< ObjectGuidSequenceSource > SequenceSource
Definition: ObjectGuid.h:164
Definition: Realm.h:79
size_t operator()(ObjectGuid const &key) const noexcept
Definition: ObjectGuid.h:415