diff --git a/src/object/client/CGContainer.hpp b/src/object/client/CGContainer.hpp index e8fe574..2134814 100644 --- a/src/object/client/CGContainer.hpp +++ b/src/object/client/CGContainer.hpp @@ -1,12 +1,13 @@ #ifndef OBJECT_CLIENT_CG_CONTAINER_HPP #define OBJECT_CLIENT_CG_CONTAINER_HPP +#include "util/GUID.hpp" #include struct CGContainerData { uint32_t numSlots; uint32_t pad; - uint64_t slots[36]; + WOWGUID slots[36]; }; class CGContainer { diff --git a/src/object/client/CGItem.hpp b/src/object/client/CGItem.hpp index 7c9b52b..2fda058 100644 --- a/src/object/client/CGItem.hpp +++ b/src/object/client/CGItem.hpp @@ -1,6 +1,7 @@ #ifndef OBJECT_CLIENT_CG_ITEM_HPP #define OBJECT_CLIENT_CG_ITEM_HPP +#include "util/GUID.hpp" #include struct ItemEnchantment { @@ -10,10 +11,10 @@ struct ItemEnchantment { }; struct CGItemData { - uint64_t owner; - uint64_t containedIn; - uint64_t creator; - uint64_t giftCreator; + WOWGUID owner; + WOWGUID containedIn; + WOWGUID creator; + WOWGUID giftCreator; uint32_t stackCount; int32_t expiration; int32_t spellCharges[5]; diff --git a/src/object/client/CGObject.hpp b/src/object/client/CGObject.hpp index bcbde33..91b868e 100644 --- a/src/object/client/CGObject.hpp +++ b/src/object/client/CGObject.hpp @@ -2,10 +2,11 @@ #define OBJECT_CLIENT_CG_OBJECT_HPP #include "object/Types.hpp" +#include "util/GUID.hpp" #include struct CGObjectData { - uint64_t m_guid; + WOWGUID m_guid; OBJECT_TYPE m_type; int32_t m_entryID; float m_scale; diff --git a/src/object/client/CGObject_C.hpp b/src/object/client/CGObject_C.hpp index ea1b64b..8526a5e 100644 --- a/src/object/client/CGObject_C.hpp +++ b/src/object/client/CGObject_C.hpp @@ -1,9 +1,9 @@ #ifndef OBJECT_CLIENT_CG_OBJECT_C_HPP #define OBJECT_CLIENT_CG_OBJECT_C_HPP -#include "object/client/CGObject.hpp" #include "object/Types.hpp" -#include "util/CHashKeyGUID.hpp" +#include "object/client/CGObject.hpp" +#include "util/GUID.hpp" #include class CGObject_C : public CGObject, public TSHashObject { diff --git a/src/object/client/CGPlayer.hpp b/src/object/client/CGPlayer.hpp index f8dbb25..7ef380b 100644 --- a/src/object/client/CGPlayer.hpp +++ b/src/object/client/CGPlayer.hpp @@ -2,6 +2,7 @@ #define OBJECT_CLIENT_CG_PLAYER_HPP #include "object/Types.hpp" +#include "util/GUID.hpp" #include struct CQuestLogData { @@ -19,7 +20,7 @@ struct CVisibleItemData { }; struct CGPlayerData { - uint64_t duelArbiter; + WOWGUID duelArbiter; uint32_t flags; uint32_t guildID; uint32_t guildRank; @@ -33,18 +34,18 @@ struct CGPlayerData { int32_t chosenTitle; int32_t fakeInebriation; int32_t pad4; - uint64_t invSlots[NUM_INVENTORY_SLOTS]; - uint64_t packSlots[16]; - uint64_t bankSlots[28]; - uint64_t bankBagSlots[7]; - uint64_t vendorBuybackSlots[12]; - uint64_t keyringSlots[32]; - uint64_t currencyTokenSlots[32]; - uint64_t farsightObject; - uint64_t knownTitles; - uint64_t knownTitles2; - uint64_t knownTitles3; - uint64_t knownCurrencies; + WOWGUID invSlots[NUM_INVENTORY_SLOTS]; + WOWGUID packSlots[16]; + WOWGUID bankSlots[28]; + WOWGUID bankBagSlots[7]; + WOWGUID vendorBuybackSlots[12]; + WOWGUID keyringSlots[32]; + WOWGUID currencyTokenSlots[32]; + WOWGUID farsightObject; + WOWGUID knownTitles; + WOWGUID knownTitles2; + WOWGUID knownTitles3; + WOWGUID knownCurrencies; uint32_t xp; uint32_t nextLevelXP; // TODO diff --git a/src/object/client/CGUnit.hpp b/src/object/client/CGUnit.hpp index 55bba2d..6ca29fa 100644 --- a/src/object/client/CGUnit.hpp +++ b/src/object/client/CGUnit.hpp @@ -1,17 +1,18 @@ #ifndef OBJECT_CLIENT_CG_UNIT_HPP #define OBJECT_CLIENT_CG_UNIT_HPP +#include "util/GUID.hpp" #include struct CGUnitData { - uint64_t charm; - uint64_t summon; - uint64_t critter; - uint64_t charmedBy; - uint64_t summonedBy; - uint64_t createdBy; - uint64_t target; - uint64_t channelObject; + WOWGUID charm; + WOWGUID summon; + WOWGUID critter; + WOWGUID charmedBy; + WOWGUID summonedBy; + WOWGUID createdBy; + WOWGUID target; + WOWGUID channelObject; int32_t channelSpell; int32_t pad1; int32_t health; diff --git a/src/object/client/ClntObjMgr.hpp b/src/object/client/ClntObjMgr.hpp index 781345e..80793be 100644 --- a/src/object/client/ClntObjMgr.hpp +++ b/src/object/client/ClntObjMgr.hpp @@ -8,7 +8,7 @@ class ClientConnection; class ClntObjMgr { public: // Member variables - uint64_t m_activePlayer = 0; + WOWGUID m_activePlayer = 0; uint32_t m_mapID = 0; ClientConnection* m_net = nullptr; }; diff --git a/src/object/client/Mirror.cpp b/src/object/client/Mirror.cpp index 0bb60f6..c4f25da 100644 --- a/src/object/client/Mirror.cpp +++ b/src/object/client/Mirror.cpp @@ -53,7 +53,7 @@ int32_t ExtractDirtyMasks(CDataStore* msg, uint8_t* maskCount, uint32_t* masks) * Given an object type hierarchy and GUID, return the number of DWORD blocks backing the object's * data storage. */ -uint32_t GetNumDwordBlocks(OBJECT_TYPE type, uint64_t guid) { +uint32_t GetNumDwordBlocks(OBJECT_TYPE type, WOWGUID guid) { switch (type) { case HIER_TYPE_OBJECT: return CGObject::TotalFields(); @@ -150,7 +150,7 @@ int32_t IsMaskBitSet(uint32_t* masks, uint32_t block) { return masks[block / 32] & (1 << (block % 32)); } -int32_t FillInPartialObjectData(CGObject_C* object, uint64_t guid, CDataStore* msg, bool forFullUpdate, bool zeroZeroBits) { +int32_t FillInPartialObjectData(CGObject_C* object, WOWGUID guid, CDataStore* msg, bool forFullUpdate, bool zeroZeroBits) { uint8_t changeMaskCount; uint32_t changeMasks[MAX_CHANGE_MASKS]; if (!ExtractDirtyMasks(msg, &changeMaskCount, changeMasks)) { diff --git a/src/object/client/Mirror.hpp b/src/object/client/Mirror.hpp index b582039..899db97 100644 --- a/src/object/client/Mirror.hpp +++ b/src/object/client/Mirror.hpp @@ -1,11 +1,12 @@ #ifndef OBJECT_CLIENT_MIRROR_HPP #define OBJECT_CLIENT_MIRROR_HPP +#include "util/GUID.hpp" #include class CDataStore; class CGObject_C; -int32_t FillInPartialObjectData(CGObject_C* object, uint64_t guid, CDataStore* msg, bool forFullUpdate, bool zeroZeroBits); +int32_t FillInPartialObjectData(CGObject_C* object, WOWGUID guid, CDataStore* msg, bool forFullUpdate, bool zeroZeroBits); #endif diff --git a/src/object/client/ObjMgr.cpp b/src/object/client/ObjMgr.cpp index cb8452f..440366c 100644 --- a/src/object/client/ObjMgr.cpp +++ b/src/object/client/ObjMgr.cpp @@ -66,7 +66,7 @@ void MirrorInitialize() { // TODO } -void* ClntObjMgrAllocObject(OBJECT_TYPE_ID typeID, uint64_t guid) { +void* ClntObjMgrAllocObject(OBJECT_TYPE_ID typeID, WOWGUID guid) { auto playerGUID = ClntObjMgrGetActivePlayer(); // Heap allocate player object for current player @@ -89,7 +89,7 @@ void* ClntObjMgrAllocObject(OBJECT_TYPE_ID typeID, uint64_t guid) { return mem; } -uint64_t ClntObjMgrGetActivePlayer() { +WOWGUID ClntObjMgrGetActivePlayer() { if (!s_curMgr) { return 0; } @@ -156,7 +156,7 @@ void ClntObjMgrPush(ClntObjMgr* mgr) { s_curMgr = mgr; } -void ClntObjMgrSetActivePlayer(uint64_t guid) { +void ClntObjMgrSetActivePlayer(WOWGUID guid) { s_curMgr->m_activePlayer = guid; } diff --git a/src/object/client/ObjMgr.hpp b/src/object/client/ObjMgr.hpp index 6d3b6ca..295f5e6 100644 --- a/src/object/client/ObjMgr.hpp +++ b/src/object/client/ObjMgr.hpp @@ -6,9 +6,9 @@ #include "object/Types.hpp" #include -void* ClntObjMgrAllocObject(OBJECT_TYPE_ID typeID, uint64_t guid); +void* ClntObjMgrAllocObject(OBJECT_TYPE_ID typeID, WOWGUID guid); -uint64_t ClntObjMgrGetActivePlayer(); +WOWGUID ClntObjMgrGetActivePlayer(); ClntObjMgr* ClntObjMgrGetCurrent(); @@ -22,7 +22,7 @@ void ClntObjMgrPop(); void ClntObjMgrPush(ClntObjMgr* mgr); -void ClntObjMgrSetActivePlayer(uint64_t guid); +void ClntObjMgrSetActivePlayer(WOWGUID guid); void ClntObjMgrSetHandlers(); diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 07e3a2f..a0696b6 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -1,5 +1,6 @@ file(GLOB PRIVATE_SOURCES "*.cpp" + "guid/*.cpp" ) if(WHOA_SYSTEM_MAC) diff --git a/src/util/GUID.hpp b/src/util/GUID.hpp new file mode 100644 index 0000000..06967f8 --- /dev/null +++ b/src/util/GUID.hpp @@ -0,0 +1,8 @@ +#ifndef UTIL_GUID_HPP +#define UTIL_GUID_HPP + +#include "util/guid/CHashKeyGUID.hpp" +#include "util/guid/SmartGUID.hpp" +#include "util/guid/Types.hpp" + +#endif diff --git a/src/util/SmartGUID.hpp b/src/util/SmartGUID.hpp deleted file mode 100644 index fef46c8..0000000 --- a/src/util/SmartGUID.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef UTIL_SMART_GUID_HPP -#define UTIL_SMART_GUID_HPP - -#include - -class CDataStore; - -struct SmartGUID { - uint64_t guid; - - operator uint64_t() const; - SmartGUID& operator=(uint64_t value); -}; - -CDataStore& operator>>(CDataStore& msg, SmartGUID& guid); - -#endif diff --git a/src/util/CHashKeyGUID.cpp b/src/util/guid/CHashKeyGUID.cpp similarity index 50% rename from src/util/CHashKeyGUID.cpp rename to src/util/guid/CHashKeyGUID.cpp index efcaef2..7418c57 100644 --- a/src/util/CHashKeyGUID.cpp +++ b/src/util/guid/CHashKeyGUID.cpp @@ -1,9 +1,9 @@ -#include "util/CHashKeyGUID.hpp" +#include "util/guid/CHashKeyGUID.hpp" CHashKeyGUID::CHashKeyGUID() { this->m_guid = 0; } -CHashKeyGUID::CHashKeyGUID(uint64_t guid) { +CHashKeyGUID::CHashKeyGUID(WOWGUID guid) { this->m_guid = guid; } diff --git a/src/util/CHashKeyGUID.hpp b/src/util/guid/CHashKeyGUID.hpp similarity index 51% rename from src/util/CHashKeyGUID.hpp rename to src/util/guid/CHashKeyGUID.hpp index be0a8cb..5ba0e4a 100644 --- a/src/util/CHashKeyGUID.hpp +++ b/src/util/guid/CHashKeyGUID.hpp @@ -1,17 +1,18 @@ -#ifndef UTIL_C_HASH_KEY_GUID_HPP -#define UTIL_C_HASH_KEY_GUID_HPP +#ifndef UTIL_GUID_C_HASH_KEY_GUID_HPP +#define UTIL_GUID_C_HASH_KEY_GUID_HPP +#include "util/guid/Types.hpp" #include class CHashKeyGUID { public: // Public member functions CHashKeyGUID(); - CHashKeyGUID(uint64_t guid); + CHashKeyGUID(WOWGUID guid); private: // Private member variables - uint64_t m_guid; + WOWGUID m_guid; }; #endif diff --git a/src/util/SmartGUID.cpp b/src/util/guid/SmartGUID.cpp similarity index 78% rename from src/util/SmartGUID.cpp rename to src/util/guid/SmartGUID.cpp index b165e35..038d2f5 100644 --- a/src/util/SmartGUID.cpp +++ b/src/util/guid/SmartGUID.cpp @@ -1,11 +1,11 @@ -#include "util/SmartGUID.hpp" +#include "util/guid/SmartGUID.hpp" #include -SmartGUID::operator uint64_t() const { +SmartGUID::operator WOWGUID() const { return this->guid; } -SmartGUID& SmartGUID::operator=(uint64_t guid) { +SmartGUID& SmartGUID::operator=(WOWGUID guid) { this->guid = guid; return *this; } diff --git a/src/util/guid/SmartGUID.hpp b/src/util/guid/SmartGUID.hpp new file mode 100644 index 0000000..99427ac --- /dev/null +++ b/src/util/guid/SmartGUID.hpp @@ -0,0 +1,18 @@ +#ifndef UTIL_GUID_SMART_GUID_HPP +#define UTIL_GUID_SMART_GUID_HPP + +#include "util/guid/Types.hpp" +#include + +class CDataStore; + +struct SmartGUID { + WOWGUID guid; + + operator WOWGUID() const; + SmartGUID& operator=(WOWGUID value); +}; + +CDataStore& operator>>(CDataStore& msg, SmartGUID& guid); + +#endif diff --git a/src/util/guid/Types.hpp b/src/util/guid/Types.hpp new file mode 100644 index 0000000..4824aa9 --- /dev/null +++ b/src/util/guid/Types.hpp @@ -0,0 +1,8 @@ +#ifndef UTIL_GUID_TYPES_HPP +#define UTIL_GUID_TYPES_HPP + +#include + +typedef uint64_t WOWGUID; + +#endif