From 87ae3b512b19bd65cfb9f9835ad9be0019a15bdf Mon Sep 17 00:00:00 2001 From: fallenoak Date: Mon, 2 Feb 2026 08:47:50 -0600 Subject: [PATCH] feat(object): clean up data struct visibility --- src/object/client/CGContainer.cpp | 4 ++++ src/object/client/CGContainer.hpp | 6 +++++- src/object/client/CGCorpse.cpp | 4 ++++ src/object/client/CGCorpse.hpp | 6 +++++- src/object/client/CGDynamicObject.cpp | 4 ++++ src/object/client/CGDynamicObject.hpp | 6 +++++- src/object/client/CGGameObject.cpp | 4 ++++ src/object/client/CGGameObject.hpp | 6 +++++- src/object/client/CGItem.cpp | 4 ++++ src/object/client/CGItem.hpp | 6 +++++- src/object/client/CGObject.cpp | 12 ++++++++++++ src/object/client/CGObject.hpp | 14 +++++++++++--- src/object/client/CGPlayer.cpp | 4 ++++ src/object/client/CGPlayer.hpp | 6 +++++- src/object/client/CGUnit.cpp | 4 ++++ src/object/client/CGUnit.hpp | 6 +++++- src/object/client/MessageHandlers.cpp | 8 ++++---- src/object/client/Mirror.cpp | 6 +++--- src/object/client/ObjMgr.cpp | 12 ++++++------ src/object/client/Util.cpp | 4 ++-- 20 files changed, 101 insertions(+), 25 deletions(-) diff --git a/src/object/client/CGContainer.cpp b/src/object/client/CGContainer.cpp index 0c9b943..b6080fa 100644 --- a/src/object/client/CGContainer.cpp +++ b/src/object/client/CGContainer.cpp @@ -24,3 +24,7 @@ uint32_t CGContainer::TotalFields() { uint32_t CGContainer::TotalFieldsSaved() { return CGContainer::GetBaseOffsetSaved() + 72; } + +CGContainerData* CGContainer::Container() const { + return this->m_cont; +} diff --git a/src/object/client/CGContainer.hpp b/src/object/client/CGContainer.hpp index 2134814..d0bd262 100644 --- a/src/object/client/CGContainer.hpp +++ b/src/object/client/CGContainer.hpp @@ -20,9 +20,13 @@ class CGContainer { static uint32_t TotalFields(); static uint32_t TotalFieldsSaved(); - // Public member variables + protected: + // Protected member variables CGContainerData* m_cont; uint32_t* m_contSaved; + + // Protected member functions + CGContainerData* Container() const; }; #endif diff --git a/src/object/client/CGCorpse.cpp b/src/object/client/CGCorpse.cpp index 3dd6ec2..2838f94 100644 --- a/src/object/client/CGCorpse.cpp +++ b/src/object/client/CGCorpse.cpp @@ -24,3 +24,7 @@ uint32_t CGCorpse::TotalFields() { uint32_t CGCorpse::TotalFieldsSaved() { return CGCorpse::GetBaseOffsetSaved() + 3; } + +CGCorpseData* CGCorpse::Corpse() const { + return this->m_corpse; +} diff --git a/src/object/client/CGCorpse.hpp b/src/object/client/CGCorpse.hpp index be7add3..93d19e7 100644 --- a/src/object/client/CGCorpse.hpp +++ b/src/object/client/CGCorpse.hpp @@ -17,9 +17,13 @@ class CGCorpse { static uint32_t TotalFields(); static uint32_t TotalFieldsSaved(); - // Public member variables + protected: + // Protected member variables CGCorpseData* m_corpse; uint32_t* m_corpseSaved; + + // Protected member functions + CGCorpseData* Corpse() const; }; #endif diff --git a/src/object/client/CGDynamicObject.cpp b/src/object/client/CGDynamicObject.cpp index f55ca10..bec80ac 100644 --- a/src/object/client/CGDynamicObject.cpp +++ b/src/object/client/CGDynamicObject.cpp @@ -24,3 +24,7 @@ uint32_t CGDynamicObject::TotalFields() { uint32_t CGDynamicObject::TotalFieldsSaved() { return CGDynamicObject::GetBaseOffsetSaved() + 0; } + +CGDynamicObjectData* CGDynamicObject::DynamicObject() const { + return this->m_dynamicObj; +} diff --git a/src/object/client/CGDynamicObject.hpp b/src/object/client/CGDynamicObject.hpp index 8f68718..1292973 100644 --- a/src/object/client/CGDynamicObject.hpp +++ b/src/object/client/CGDynamicObject.hpp @@ -17,9 +17,13 @@ class CGDynamicObject { static uint32_t TotalFields(); static uint32_t TotalFieldsSaved(); - // Public member variables + protected: + // Protected member variables CGDynamicObjectData* m_dynamicObj; uint32_t* m_dynamicObjSaved; + + // Protected member functions + CGDynamicObjectData* DynamicObject() const; }; #endif diff --git a/src/object/client/CGGameObject.cpp b/src/object/client/CGGameObject.cpp index 5a498f5..76b81c6 100644 --- a/src/object/client/CGGameObject.cpp +++ b/src/object/client/CGGameObject.cpp @@ -24,3 +24,7 @@ uint32_t CGGameObject::TotalFields() { uint32_t CGGameObject::TotalFieldsSaved() { return CGGameObject::GetBaseOffsetSaved() + 4; } + +CGGameObjectData* CGGameObject::GameObject() const { + return this->m_gameObj; +} diff --git a/src/object/client/CGGameObject.hpp b/src/object/client/CGGameObject.hpp index 5469f1f..1f19c12 100644 --- a/src/object/client/CGGameObject.hpp +++ b/src/object/client/CGGameObject.hpp @@ -17,9 +17,13 @@ class CGGameObject { static uint32_t TotalFields(); static uint32_t TotalFieldsSaved(); - // Public member variables + protected: + // Protected member variables CGGameObjectData* m_gameObj; uint32_t* m_gameObjSaved; + + // Protected member functions + CGGameObjectData* GameObject() const; }; #endif diff --git a/src/object/client/CGItem.cpp b/src/object/client/CGItem.cpp index 5c849cb..7a012c0 100644 --- a/src/object/client/CGItem.cpp +++ b/src/object/client/CGItem.cpp @@ -24,3 +24,7 @@ uint32_t CGItem::TotalFields() { uint32_t CGItem::TotalFieldsSaved() { return CGItem::GetBaseOffsetSaved() + 47; } + +CGItemData* CGItem::Item() const { + return this->m_item; +} diff --git a/src/object/client/CGItem.hpp b/src/object/client/CGItem.hpp index 2fda058..ec22654 100644 --- a/src/object/client/CGItem.hpp +++ b/src/object/client/CGItem.hpp @@ -38,9 +38,13 @@ class CGItem { static uint32_t TotalFields(); static uint32_t TotalFieldsSaved(); - // Public member variables + protected: + // Protected member variables CGItemData* m_item; uint32_t* m_itemSaved; + + // Protected member functions + CGItemData* Item() const; }; #endif diff --git a/src/object/client/CGObject.cpp b/src/object/client/CGObject.cpp index 97bf379..41236cf 100644 --- a/src/object/client/CGObject.cpp +++ b/src/object/client/CGObject.cpp @@ -27,3 +27,15 @@ uint32_t CGObject::TotalFieldsSaved() { WOWGUID CGObject::GetGUID() const { return this->m_obj->m_guid; } + +OBJECT_TYPE CGObject::GetType() const { + return this->m_obj->m_type; +} + +OBJECT_TYPE_ID CGObject::GetTypeID() const { + return this->m_typeID; +} + +CGObjectData* CGObject::Obj() const { + return this->m_obj; +} diff --git a/src/object/client/CGObject.hpp b/src/object/client/CGObject.hpp index 1d1bfd7..55f4514 100644 --- a/src/object/client/CGObject.hpp +++ b/src/object/client/CGObject.hpp @@ -25,13 +25,21 @@ class CGObject { // Public member variables uint32_t uint0; // TODO what is this? - CGObjectData* m_obj; - uint32_t* m_objSaved; uint32_t m_memHandle; - OBJECT_TYPE_ID m_typeID; // Public member functions WOWGUID GetGUID() const; + OBJECT_TYPE GetType() const; + OBJECT_TYPE_ID GetTypeID() const; + + protected: + // Protected member variables + CGObjectData* m_obj; + uint32_t* m_objSaved; + OBJECT_TYPE_ID m_typeID; + + // Protected member functions + CGObjectData* Obj() const; }; #endif diff --git a/src/object/client/CGPlayer.cpp b/src/object/client/CGPlayer.cpp index 5f30bcb..1e44711 100644 --- a/src/object/client/CGPlayer.cpp +++ b/src/object/client/CGPlayer.cpp @@ -40,3 +40,7 @@ uint32_t CGPlayer::TotalFieldsSaved() { uint32_t CGPlayer::TotalRemoteFieldsSaved() { return CGPlayer::GetBaseOffsetSaved() + 173; } + +CGPlayerData* CGPlayer::Player() const { + return this->m_player; +} diff --git a/src/object/client/CGPlayer.hpp b/src/object/client/CGPlayer.hpp index c20fd0c..707f39f 100644 --- a/src/object/client/CGPlayer.hpp +++ b/src/object/client/CGPlayer.hpp @@ -148,9 +148,13 @@ class CGPlayer { static uint32_t TotalFieldsSaved(); static uint32_t TotalRemoteFieldsSaved(); - // Public member variables + protected: + // Protected member variables CGPlayerData* m_player; uint32_t* m_playerSaved; + + // Protected member functions + CGPlayerData* Player() const; }; #endif diff --git a/src/object/client/CGUnit.cpp b/src/object/client/CGUnit.cpp index 05b42e2..4f525c8 100644 --- a/src/object/client/CGUnit.cpp +++ b/src/object/client/CGUnit.cpp @@ -24,3 +24,7 @@ uint32_t CGUnit::TotalFields() { uint32_t CGUnit::TotalFieldsSaved() { return CGUnit::GetBaseOffsetSaved() + 123; } + +CGUnitData* CGUnit::Unit() const { + return this->m_unit; +} diff --git a/src/object/client/CGUnit.hpp b/src/object/client/CGUnit.hpp index 0577be0..3fb6ddb 100644 --- a/src/object/client/CGUnit.hpp +++ b/src/object/client/CGUnit.hpp @@ -82,9 +82,13 @@ class CGUnit { static uint32_t TotalFields(); static uint32_t TotalFieldsSaved(); - // Public member variables + protected: + // Protected member variables CGUnitData* m_unit; uint32_t* m_unitSaved; + + // Protected member functions + CGUnitData* Unit() const; }; #endif diff --git a/src/object/client/MessageHandlers.cpp b/src/object/client/MessageHandlers.cpp index 72124ae..86679e6 100644 --- a/src/object/client/MessageHandlers.cpp +++ b/src/object/client/MessageHandlers.cpp @@ -61,7 +61,7 @@ int32_t PostInitObject(CDataStore* msg, uint32_t time, bool a3) { return 0; } - if (object->m_inReenable && object->m_obj->m_type & TYPE_UNIT) { + if (object->m_inReenable && object->GetType() & TYPE_UNIT) { // TODO } @@ -139,7 +139,7 @@ void PostMovementUpdate(CDataStore* msg) { return; } - unit->PostMovementUpdate(move, unit->m_obj->m_guid == CGUnit_C::s_activeMover); + unit->PostMovementUpdate(move, unit->GetGUID() == CGUnit_C::s_activeMover); if (reenable) { unit->Reenable(); @@ -201,7 +201,7 @@ int32_t UpdateObject(CDataStore* msg) { auto object = GetUpdateObject(guid, &reenable); if (object) { - if (!FillInPartialObjectData(object, object->m_obj->m_guid, msg, false, false)) { + if (!FillInPartialObjectData(object, object->GetGUID(), msg, false, false)) { return 0; } @@ -329,7 +329,7 @@ int32_t CreateObject(CDataStore* msg, uint32_t time) { if (existingObject) { CClientObjCreate::Skip(msg); - if (!FillInPartialObjectData(existingObject, existingObject->m_obj->m_guid, msg, false, true)) { + if (!FillInPartialObjectData(existingObject, existingObject->GetGUID(), msg, false, true)) { return 0; } diff --git a/src/object/client/Mirror.cpp b/src/object/client/Mirror.cpp index 762cefa..75554a5 100644 --- a/src/object/client/Mirror.cpp +++ b/src/object/client/Mirror.cpp @@ -91,7 +91,7 @@ uint32_t GetNumDwordBlocks(OBJECT_TYPE type, WOWGUID guid) { * to indicate the end of the hierarchy. */ OBJECT_TYPE_ID IncTypeID(CGObject_C* object, OBJECT_TYPE_ID curTypeID) { - switch (object->m_obj->m_type) { + switch (object->GetType()) { // ID_OBJECT -> ID_ITEM -> ID_CONTAINER case HIER_TYPE_ITEM: case HIER_TYPE_CONTAINER: @@ -173,7 +173,7 @@ int32_t CallMirrorHandlers(CDataStore* msg, bool a2, WOWGUID guid) { OBJECT_TYPE_ID typeID = ID_OBJECT; uint32_t blockOffset = 0; - uint32_t numBlocks = GetNumDwordBlocks(object->m_obj->m_type, guid); + uint32_t numBlocks = GetNumDwordBlocks(object->GetType(), guid); for (int32_t block = 0; block < numBlocks; block++) { if (block >= s_objMirrorBlocks[typeID]) { @@ -203,7 +203,7 @@ int32_t FillInPartialObjectData(CGObject_C* object, WOWGUID guid, CDataStore* ms OBJECT_TYPE_ID typeID = ID_OBJECT; uint32_t blockOffset = 0; - uint32_t numBlocks = GetNumDwordBlocks(object->m_obj->m_type, guid); + uint32_t numBlocks = GetNumDwordBlocks(object->GetType(), guid); for (int32_t block = 0; block < numBlocks; block++) { if (block >= s_objMirrorBlocks[typeID]) { diff --git a/src/object/client/ObjMgr.cpp b/src/object/client/ObjMgr.cpp index bcdb488..c817841 100644 --- a/src/object/client/ObjMgr.cpp +++ b/src/object/client/ObjMgr.cpp @@ -93,9 +93,9 @@ CGObject_C* ClntObjMgrAllocObject(OBJECT_TYPE_ID typeID, WOWGUID guid) { void ClntObjMgrFreeObject(CGObject_C* object) { auto playerGUID = ClntObjMgrGetActivePlayer(); - auto isActivePlayer = object->m_obj->m_guid == playerGUID; + auto isActivePlayer = object->GetGUID() == playerGUID; - switch (object->m_obj->m_type) { + switch (object->GetType()) { case TYPE_OBJECT: case HIER_TYPE_ITEM: case HIER_TYPE_CONTAINER: @@ -117,7 +117,7 @@ void ClntObjMgrFreeObject(CGObject_C* object) { if (isActivePlayer) { STORM_FREE(object); } else { - ObjectFree(s_objHeapId[object->m_typeID], object->m_memHandle); + ObjectFree(s_objHeapId[object->GetTypeID()], object->m_memHandle); } } @@ -171,8 +171,8 @@ void ClntObjMgrInitializeStd(uint32_t mapID) { } void ClntObjMgrLinkInNewObject(CGObject_C* object) { - CHashKeyGUID key(object->m_obj->m_guid); - s_curMgr->m_objects.Insert(object, object->m_obj->m_guid, key); + CHashKeyGUID key(object->GetGUID()); + s_curMgr->m_objects.Insert(object, object->GetGUID(), key); } CGObject_C* ClntObjMgrObjectPtr(WOWGUID guid, OBJECT_TYPE type, const char* fileName, int32_t lineNumber) { @@ -186,7 +186,7 @@ CGObject_C* ClntObjMgrObjectPtr(WOWGUID guid, OBJECT_TYPE type, const char* file return nullptr; } - if (!(object->m_obj->m_type & type)) { + if (!(object->GetType() & type)) { return nullptr; } diff --git a/src/object/client/Util.cpp b/src/object/client/Util.cpp index 5ac8c52..1d6f076 100644 --- a/src/object/client/Util.cpp +++ b/src/object/client/Util.cpp @@ -107,11 +107,11 @@ void HandleObjectOutOfRangePass2(CGObject_C* object) { } ClntObjMgrGetCurrent()->m_lazyCleanupObjects.Insert(object, object->m_hashval, CHashKeyGUID(object->m_key)); - ClntObjMgrGetCurrent()->m_lazyCleanupFifo[object->m_typeID - 1].LinkToTail(object); + ClntObjMgrGetCurrent()->m_lazyCleanupFifo[object->GetTypeID() - 1].LinkToTail(object); } void InitObject(CGObject_C* object, uint32_t time, CClientObjCreate& objCreate) { - switch (object->m_typeID) { + switch (object->GetTypeID()) { case ID_ITEM: { new (object) CGItem_C(time, objCreate);