feat(object): clean up data struct visibility
Some checks are pending
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:cl compiler_name:MSVC cxx:cl os:windows-latest system_name:Windows test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:clang compiler_name:Clang cxx:clang++ os:macos-latest system_name:macOS test_path:WhoaTest]) (push) Waiting to run
Push / ${{ matrix.build.system_name }} / ${{ matrix.build.build_type }} / ${{ matrix.build.compiler_name }} (map[build_type:Release cc:gcc compiler_name:GCC cxx:g++ os:ubuntu-latest system_name:Linux test_path:WhoaTest]) (push) Waiting to run

This commit is contained in:
fallenoak 2026-02-02 08:47:50 -06:00
parent 4d0c48be52
commit 87ae3b512b
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
20 changed files with 101 additions and 25 deletions

View File

@ -24,3 +24,7 @@ uint32_t CGContainer::TotalFields() {
uint32_t CGContainer::TotalFieldsSaved() {
return CGContainer::GetBaseOffsetSaved() + 72;
}
CGContainerData* CGContainer::Container() const {
return this->m_cont;
}

View File

@ -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

View File

@ -24,3 +24,7 @@ uint32_t CGCorpse::TotalFields() {
uint32_t CGCorpse::TotalFieldsSaved() {
return CGCorpse::GetBaseOffsetSaved() + 3;
}
CGCorpseData* CGCorpse::Corpse() const {
return this->m_corpse;
}

View File

@ -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

View File

@ -24,3 +24,7 @@ uint32_t CGDynamicObject::TotalFields() {
uint32_t CGDynamicObject::TotalFieldsSaved() {
return CGDynamicObject::GetBaseOffsetSaved() + 0;
}
CGDynamicObjectData* CGDynamicObject::DynamicObject() const {
return this->m_dynamicObj;
}

View File

@ -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

View File

@ -24,3 +24,7 @@ uint32_t CGGameObject::TotalFields() {
uint32_t CGGameObject::TotalFieldsSaved() {
return CGGameObject::GetBaseOffsetSaved() + 4;
}
CGGameObjectData* CGGameObject::GameObject() const {
return this->m_gameObj;
}

View File

@ -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

View File

@ -24,3 +24,7 @@ uint32_t CGItem::TotalFields() {
uint32_t CGItem::TotalFieldsSaved() {
return CGItem::GetBaseOffsetSaved() + 47;
}
CGItemData* CGItem::Item() const {
return this->m_item;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -40,3 +40,7 @@ uint32_t CGPlayer::TotalFieldsSaved() {
uint32_t CGPlayer::TotalRemoteFieldsSaved() {
return CGPlayer::GetBaseOffsetSaved() + 173;
}
CGPlayerData* CGPlayer::Player() const {
return this->m_player;
}

View File

@ -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

View File

@ -24,3 +24,7 @@ uint32_t CGUnit::TotalFields() {
uint32_t CGUnit::TotalFieldsSaved() {
return CGUnit::GetBaseOffsetSaved() + 123;
}
CGUnitData* CGUnit::Unit() const {
return this->m_unit;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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]) {

View File

@ -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;
}

View File

@ -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);