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