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