mirror of
https://github.com/whoahq/whoa.git
synced 2026-02-01 00:02:45 +03:00
chore(util): restructure guid code and add WOWGUID typedef
This commit is contained in:
parent
5e4ca1980d
commit
364fba9f34
@ -1,12 +1,13 @@
|
||||
#ifndef OBJECT_CLIENT_CG_CONTAINER_HPP
|
||||
#define OBJECT_CLIENT_CG_CONTAINER_HPP
|
||||
|
||||
#include "util/GUID.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
struct CGContainerData {
|
||||
uint32_t numSlots;
|
||||
uint32_t pad;
|
||||
uint64_t slots[36];
|
||||
WOWGUID slots[36];
|
||||
};
|
||||
|
||||
class CGContainer {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
#ifndef OBJECT_CLIENT_CG_ITEM_HPP
|
||||
#define OBJECT_CLIENT_CG_ITEM_HPP
|
||||
|
||||
#include "util/GUID.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
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];
|
||||
|
||||
@ -2,10 +2,11 @@
|
||||
#define OBJECT_CLIENT_CG_OBJECT_HPP
|
||||
|
||||
#include "object/Types.hpp"
|
||||
#include "util/GUID.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
struct CGObjectData {
|
||||
uint64_t m_guid;
|
||||
WOWGUID m_guid;
|
||||
OBJECT_TYPE m_type;
|
||||
int32_t m_entryID;
|
||||
float m_scale;
|
||||
|
||||
@ -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 <storm/Hash.hpp>
|
||||
|
||||
class CGObject_C : public CGObject, public TSHashObject<CGObject_C, CHashKeyGUID> {
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#define OBJECT_CLIENT_CG_PLAYER_HPP
|
||||
|
||||
#include "object/Types.hpp"
|
||||
#include "util/GUID.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
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
|
||||
|
||||
@ -1,17 +1,18 @@
|
||||
#ifndef OBJECT_CLIENT_CG_UNIT_HPP
|
||||
#define OBJECT_CLIENT_CG_UNIT_HPP
|
||||
|
||||
#include "util/GUID.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
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;
|
||||
|
||||
@ -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;
|
||||
};
|
||||
|
||||
@ -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)) {
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
#ifndef OBJECT_CLIENT_MIRROR_HPP
|
||||
#define OBJECT_CLIENT_MIRROR_HPP
|
||||
|
||||
#include "util/GUID.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -6,9 +6,9 @@
|
||||
#include "object/Types.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
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();
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
file(GLOB PRIVATE_SOURCES
|
||||
"*.cpp"
|
||||
"guid/*.cpp"
|
||||
)
|
||||
|
||||
if(WHOA_SYSTEM_MAC)
|
||||
|
||||
8
src/util/GUID.hpp
Normal file
8
src/util/GUID.hpp
Normal file
@ -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
|
||||
@ -1,17 +0,0 @@
|
||||
#ifndef UTIL_SMART_GUID_HPP
|
||||
#define UTIL_SMART_GUID_HPP
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class CDataStore;
|
||||
|
||||
struct SmartGUID {
|
||||
uint64_t guid;
|
||||
|
||||
operator uint64_t() const;
|
||||
SmartGUID& operator=(uint64_t value);
|
||||
};
|
||||
|
||||
CDataStore& operator>>(CDataStore& msg, SmartGUID& guid);
|
||||
|
||||
#endif
|
||||
@ -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;
|
||||
}
|
||||
@ -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 <cstdint>
|
||||
|
||||
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
|
||||
@ -1,11 +1,11 @@
|
||||
#include "util/SmartGUID.hpp"
|
||||
#include "util/guid/SmartGUID.hpp"
|
||||
#include <common/DataStore.hpp>
|
||||
|
||||
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;
|
||||
}
|
||||
18
src/util/guid/SmartGUID.hpp
Normal file
18
src/util/guid/SmartGUID.hpp
Normal file
@ -0,0 +1,18 @@
|
||||
#ifndef UTIL_GUID_SMART_GUID_HPP
|
||||
#define UTIL_GUID_SMART_GUID_HPP
|
||||
|
||||
#include "util/guid/Types.hpp"
|
||||
#include <cstdint>
|
||||
|
||||
class CDataStore;
|
||||
|
||||
struct SmartGUID {
|
||||
WOWGUID guid;
|
||||
|
||||
operator WOWGUID() const;
|
||||
SmartGUID& operator=(WOWGUID value);
|
||||
};
|
||||
|
||||
CDataStore& operator>>(CDataStore& msg, SmartGUID& guid);
|
||||
|
||||
#endif
|
||||
8
src/util/guid/Types.hpp
Normal file
8
src/util/guid/Types.hpp
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef UTIL_GUID_TYPES_HPP
|
||||
#define UTIL_GUID_TYPES_HPP
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
typedef uint64_t WOWGUID;
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user