feat(object): add storage management functions to base object classes

This commit is contained in:
fallenoak 2026-01-10 23:05:43 -06:00
parent 2d5d97f34a
commit 0c3bbc4336
No known key found for this signature in database
GPG Key ID: 7628F8E61AEA070D
33 changed files with 389 additions and 36 deletions

View File

@ -1,10 +1,26 @@
#include "object/client/CGContainer.hpp" #include "object/client/CGContainer.hpp"
#include "object/client/CGItem.hpp" #include "object/client/CGItem.hpp"
uint32_t CGContainer::GetBaseOffset() {
return CGItem::TotalFields();
}
uint32_t CGContainer::GetBaseOffsetSaved() {
return CGItem::TotalFieldsSaved();
}
uint32_t CGContainer::GetDataSize() {
return CGContainer::TotalFields() * sizeof(uint32_t);
}
uint32_t CGContainer::GetDataSizeSaved() {
return CGContainer::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGContainer::TotalFields() { uint32_t CGContainer::TotalFields() {
return CGItem::TotalFields() + 74; return CGContainer::GetBaseOffset() + 74;
} }
uint32_t CGContainer::TotalFieldsSaved() { uint32_t CGContainer::TotalFieldsSaved() {
return CGItem::TotalFieldsSaved() + 72; return CGContainer::GetBaseOffsetSaved() + 72;
} }

View File

@ -4,14 +4,24 @@
#include <cstdint> #include <cstdint>
struct CGContainerData { struct CGContainerData {
// TODO uint32_t numSlots;
uint32_t pad;
uint64_t slots[36];
}; };
class CGContainer { class CGContainer {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();
// Public member variables
CGContainerData* m_cont;
uint32_t* m_contSaved;
}; };
#endif #endif

View File

@ -0,0 +1,8 @@
#include "object/client/CGContainer_C.hpp"
void CGContainer_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->CGItem_C::SetStorage(storage, saved);
this->m_cont = reinterpret_cast<CGContainerData*>(&storage[CGContainer::GetBaseOffset()]);
this->m_contSaved = &saved[CGContainer::GetBaseOffsetSaved()];
}

View File

@ -6,7 +6,8 @@
class CGContainer_C : public CGItem_C, public CGContainer { class CGContainer_C : public CGItem_C, public CGContainer {
public: public:
// TODO // Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
}; };
#endif #endif

View File

@ -1,10 +1,26 @@
#include "object/client/CGCorpse.hpp" #include "object/client/CGCorpse.hpp"
#include "object/client/CGObject.hpp" #include "object/client/CGObject.hpp"
uint32_t CGCorpse::GetBaseOffset() {
return CGObject::TotalFields();
}
uint32_t CGCorpse::GetBaseOffsetSaved() {
return CGObject::TotalFieldsSaved();
}
uint32_t CGCorpse::GetDataSize() {
return CGCorpse::TotalFields() * sizeof(uint32_t);
}
uint32_t CGCorpse::GetDataSizeSaved() {
return CGCorpse::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGCorpse::TotalFields() { uint32_t CGCorpse::TotalFields() {
return CGObject::TotalFields() + 30; return CGCorpse::GetBaseOffset() + 30;
} }
uint32_t CGCorpse::TotalFieldsSaved() { uint32_t CGCorpse::TotalFieldsSaved() {
return CGObject::TotalFieldsSaved() + 3; return CGCorpse::GetBaseOffsetSaved() + 3;
} }

View File

@ -10,8 +10,16 @@ struct CGCorpseData {
class CGCorpse { class CGCorpse {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();
// Public member variables
CGCorpseData* m_corpse;
uint32_t* m_corpseSaved;
}; };
#endif #endif

View File

@ -0,0 +1,8 @@
#include "object/client/CGCorpse_C.hpp"
void CGCorpse_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->CGObject_C::SetStorage(storage, saved);
this->m_corpse = reinterpret_cast<CGCorpseData*>(&storage[CGCorpse::GetBaseOffset()]);
this->m_corpseSaved = &saved[CGCorpse::GetBaseOffsetSaved()];
}

View File

@ -6,7 +6,8 @@
class CGCorpse_C : public CGObject_C, public CGCorpse { class CGCorpse_C : public CGObject_C, public CGCorpse {
public: public:
// TODO // Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
}; };
#endif #endif

View File

@ -1,10 +1,26 @@
#include "object/client/CGDynamicObject.hpp" #include "object/client/CGDynamicObject.hpp"
#include "object/client/CGObject.hpp" #include "object/client/CGObject.hpp"
uint32_t CGDynamicObject::GetBaseOffset() {
return CGObject::TotalFields();
}
uint32_t CGDynamicObject::GetBaseOffsetSaved() {
return CGObject::TotalFieldsSaved();
}
uint32_t CGDynamicObject::GetDataSize() {
return CGDynamicObject::TotalFields() * sizeof(uint32_t);
}
uint32_t CGDynamicObject::GetDataSizeSaved() {
return CGDynamicObject::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGDynamicObject::TotalFields() { uint32_t CGDynamicObject::TotalFields() {
return CGObject::TotalFields() + 6; return CGDynamicObject::GetBaseOffset() + 6;
} }
uint32_t CGDynamicObject::TotalFieldsSaved() { uint32_t CGDynamicObject::TotalFieldsSaved() {
return CGObject::TotalFieldsSaved(); return CGDynamicObject::GetBaseOffsetSaved() + 0;
} }

View File

@ -10,8 +10,16 @@ struct CGDynamicObjectData {
class CGDynamicObject { class CGDynamicObject {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();
// Public member variables
CGDynamicObjectData* m_dynamicObj;
uint32_t* m_dynamicObjSaved;
}; };
#endif #endif

View File

@ -0,0 +1,8 @@
#include "object/client/CGDynamicObject_C.hpp"
void CGDynamicObject_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->CGObject_C::SetStorage(storage, saved);
this->m_dynamicObj = reinterpret_cast<CGDynamicObjectData*>(&storage[CGDynamicObject::GetBaseOffset()]);
this->m_dynamicObjSaved = &saved[CGDynamicObject::GetBaseOffsetSaved()];
}

View File

@ -6,7 +6,8 @@
class CGDynamicObject_C : public CGObject_C, public CGDynamicObject { class CGDynamicObject_C : public CGObject_C, public CGDynamicObject {
public: public:
// TODO // Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
}; };
#endif #endif

View File

@ -1,10 +1,26 @@
#include "object/client/CGGameObject.hpp" #include "object/client/CGGameObject.hpp"
#include "object/client/CGObject.hpp" #include "object/client/CGObject.hpp"
uint32_t CGGameObject::GetBaseOffset() {
return CGObject::TotalFields();
}
uint32_t CGGameObject::GetBaseOffsetSaved() {
return CGObject::TotalFieldsSaved();
}
uint32_t CGGameObject::GetDataSize() {
return CGGameObject::TotalFields() * sizeof(uint32_t);
}
uint32_t CGGameObject::GetDataSizeSaved() {
return CGGameObject::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGGameObject::TotalFields() { uint32_t CGGameObject::TotalFields() {
return CGObject::TotalFields() + 12; return CGGameObject::GetBaseOffset() + 12;
} }
uint32_t CGGameObject::TotalFieldsSaved() { uint32_t CGGameObject::TotalFieldsSaved() {
return CGObject::TotalFieldsSaved() + 4; return CGGameObject::GetBaseOffsetSaved() + 4;
} }

View File

@ -10,8 +10,16 @@ struct CGGameObjectData {
class CGGameObject { class CGGameObject {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();
// Public member variables
CGGameObjectData* m_gameObj;
uint32_t* m_gameObjSaved;
}; };
#endif #endif

View File

@ -0,0 +1,8 @@
#include "object/client/CGGameObject_C.hpp"
void CGGameObject_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->CGObject_C::SetStorage(storage, saved);
this->m_gameObj = reinterpret_cast<CGGameObjectData*>(&storage[CGGameObject::GetBaseOffset()]);
this->m_gameObjSaved = &saved[CGGameObject::GetBaseOffsetSaved()];
}

View File

@ -6,7 +6,8 @@
class CGGameObject_C : public CGObject_C, public CGGameObject { class CGGameObject_C : public CGObject_C, public CGGameObject {
public: public:
// TODO // Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
}; };
#endif #endif

View File

@ -1,10 +1,26 @@
#include "object/client/CGItem.hpp" #include "object/client/CGItem.hpp"
#include "object/client/CGObject.hpp" #include "object/client/CGObject.hpp"
uint32_t CGItem::GetBaseOffset() {
return CGObject::TotalFields();
}
uint32_t CGItem::GetBaseOffsetSaved() {
return CGObject::TotalFieldsSaved();
}
uint32_t CGItem::GetDataSize() {
return CGItem::TotalFields() * sizeof(uint32_t);
}
uint32_t CGItem::GetDataSizeSaved() {
return CGItem::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGItem::TotalFields() { uint32_t CGItem::TotalFields() {
return CGObject::TotalFields() + 58; return CGItem::GetBaseOffset() + 58;
} }
uint32_t CGItem::TotalFieldsSaved() { uint32_t CGItem::TotalFieldsSaved() {
return CGObject::TotalFieldsSaved() + 47; return CGItem::GetBaseOffsetSaved() + 47;
} }

View File

@ -3,15 +3,43 @@
#include <cstdint> #include <cstdint>
struct ItemEnchantment {
int32_t id;
int32_t expiration;
int32_t chargesRemaining;
};
struct CGItemData { struct CGItemData {
// TODO uint64_t owner;
uint64_t containedIn;
uint64_t creator;
uint64_t giftCreator;
uint32_t stackCount;
int32_t expiration;
int32_t spellCharges[5];
uint32_t flags;
ItemEnchantment enchantments[12];
int32_t propertySeed;
int32_t randomPropertiesID;
int32_t durability;
int32_t maxDurability;
int32_t createPlayedTime;
int32_t pad;
}; };
class CGItem { class CGItem {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();
// Public member variables
CGItemData* m_item;
uint32_t* m_itemSaved;
}; };
#endif #endif

View File

@ -0,0 +1,8 @@
#include "object/client/CGItem_C.hpp"
void CGItem_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->CGObject_C::SetStorage(storage, saved);
this->m_item = reinterpret_cast<CGItemData*>(&storage[CGItem::GetBaseOffset()]);
this->m_itemSaved = &saved[CGItem::GetBaseOffsetSaved()];
}

View File

@ -6,7 +6,8 @@
class CGItem_C : public CGObject_C, public CGItem { class CGItem_C : public CGObject_C, public CGItem {
public: public:
// TODO // Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
}; };
#endif #endif

View File

@ -1,9 +1,25 @@
#include "object/client/CGObject.hpp" #include "object/client/CGObject.hpp"
uint32_t CGObject::GetBaseOffset() {
return 0;
}
uint32_t CGObject::GetBaseOffsetSaved() {
return 0;
}
uint32_t CGObject::GetDataSize() {
return CGObject::TotalFields() * sizeof(uint32_t);
}
uint32_t CGObject::GetDataSizeSaved() {
return CGObject::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGObject::TotalFields() { uint32_t CGObject::TotalFields() {
return 6; return CGObject::GetBaseOffset() + 6;
} }
uint32_t CGObject::TotalFieldsSaved() { uint32_t CGObject::TotalFieldsSaved() {
return 3; return CGObject::GetBaseOffsetSaved() + 3;
} }

View File

@ -15,6 +15,10 @@ struct CGObjectData {
class CGObject { class CGObject {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();

View File

@ -1,5 +1,10 @@
#include "object/client/CGObject_C.hpp" #include "object/client/CGObject_C.hpp"
void CGObject_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->m_obj = reinterpret_cast<CGObjectData*>(&storage[CGObject::GetBaseOffset()]);
this->m_objSaved = &saved[CGObject::GetBaseOffsetSaved()];
}
void CGObject_C::SetTypeID(OBJECT_TYPE_ID typeID) { void CGObject_C::SetTypeID(OBJECT_TYPE_ID typeID) {
this->m_typeID = typeID; this->m_typeID = typeID;

View File

@ -9,6 +9,7 @@
class CGObject_C : public CGObject, public TSHashObject<CGObject_C, CHashKeyGUID> { class CGObject_C : public CGObject, public TSHashObject<CGObject_C, CHashKeyGUID> {
public: public:
// Public member functions // Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
void SetTypeID(OBJECT_TYPE_ID typeID); void SetTypeID(OBJECT_TYPE_ID typeID);
}; };

View File

@ -1,18 +1,42 @@
#include "object/client/CGPlayer.hpp" #include "object/client/CGPlayer.hpp"
#include "object/client/CGUnit.hpp" #include "object/client/CGUnit.hpp"
uint32_t CGPlayer::GetBaseOffset() {
return CGUnit::TotalFields();
}
uint32_t CGPlayer::GetBaseOffsetSaved() {
return CGUnit::TotalFieldsSaved();
}
uint32_t CGPlayer::GetDataSize() {
return CGPlayer::TotalFields() * sizeof(uint32_t);
}
uint32_t CGPlayer::GetDataSizeSaved() {
return CGPlayer::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGPlayer::GetRemoteDataSize() {
return CGPlayer::TotalRemoteFields() * sizeof(uint32_t);
}
uint32_t CGPlayer::GetRemoteDataSizeSaved() {
return CGPlayer::TotalRemoteFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGPlayer::TotalFields() { uint32_t CGPlayer::TotalFields() {
return CGUnit::TotalFields() + 1178; return CGPlayer::GetBaseOffset() + 1178;
} }
uint32_t CGPlayer::TotalRemoteFields() { uint32_t CGPlayer::TotalRemoteFields() {
return CGUnit::TotalFields() + 176; return CGPlayer::GetBaseOffset() + 176;
} }
uint32_t CGPlayer::TotalFieldsSaved() { uint32_t CGPlayer::TotalFieldsSaved() {
return CGUnit::TotalFieldsSaved() + 1043; return CGPlayer::GetBaseOffsetSaved() + 1043;
} }
uint32_t CGPlayer::TotalRemoteFieldsSaved() { uint32_t CGPlayer::TotalRemoteFieldsSaved() {
return CGUnit::TotalFieldsSaved() + 173; return CGPlayer::GetBaseOffsetSaved() + 173;
} }

View File

@ -10,10 +10,20 @@ struct CGPlayerData {
class CGPlayer { class CGPlayer {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t GetRemoteDataSize();
static uint32_t GetRemoteDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalRemoteFields(); static uint32_t TotalRemoteFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();
static uint32_t TotalRemoteFieldsSaved(); static uint32_t TotalRemoteFieldsSaved();
// Public member variables
CGPlayerData* m_player;
uint32_t* m_playerSaved;
}; };
#endif #endif

View File

@ -3,6 +3,13 @@
#include "object/Types.hpp" #include "object/Types.hpp"
#include <storm/Error.hpp> #include <storm/Error.hpp>
void CGPlayer_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->CGUnit_C::SetStorage(storage, saved);
this->m_player = reinterpret_cast<CGPlayerData*>(&storage[CGPlayer::GetBaseOffset()]);
this->m_playerSaved = &saved[CGPlayer::GetBaseOffsetSaved()];
}
uint32_t Player_C_GetDisplayId(uint32_t race, uint32_t sex) { uint32_t Player_C_GetDisplayId(uint32_t race, uint32_t sex) {
STORM_ASSERT(sex < UNITSEX_LAST); STORM_ASSERT(sex < UNITSEX_LAST);

View File

@ -9,7 +9,8 @@ class CreatureModelDataRec;
class CGPlayer_C : public CGUnit_C, public CGPlayer { class CGPlayer_C : public CGUnit_C, public CGPlayer {
public: public:
// TODO // Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
}; };
uint32_t Player_C_GetDisplayId(uint32_t race, uint32_t sex); uint32_t Player_C_GetDisplayId(uint32_t race, uint32_t sex);

View File

@ -1,10 +1,26 @@
#include "object/client/CGUnit.hpp" #include "object/client/CGUnit.hpp"
#include "object/client/CGObject.hpp" #include "object/client/CGObject.hpp"
uint32_t CGUnit::GetBaseOffset() {
return CGObject::TotalFields();
}
uint32_t CGUnit::GetBaseOffsetSaved() {
return CGObject::TotalFieldsSaved();
}
uint32_t CGUnit::GetDataSize() {
return CGUnit::TotalFields() * sizeof(uint32_t);
}
uint32_t CGUnit::GetDataSizeSaved() {
return CGUnit::TotalFieldsSaved() * sizeof(uint32_t);
}
uint32_t CGUnit::TotalFields() { uint32_t CGUnit::TotalFields() {
return CGObject::TotalFields() + 142; return CGUnit::GetBaseOffset() + 142;
} }
uint32_t CGUnit::TotalFieldsSaved() { uint32_t CGUnit::TotalFieldsSaved() {
return CGObject::TotalFieldsSaved() + 123; return CGUnit::GetBaseOffsetSaved() + 123;
} }

View File

@ -4,14 +4,86 @@
#include <cstdint> #include <cstdint>
struct CGUnitData { struct CGUnitData {
// TODO uint64_t charm;
uint64_t summon;
uint64_t critter;
uint64_t charmedBy;
uint64_t summonedBy;
uint64_t createdBy;
uint64_t target;
uint64_t channelObject;
int32_t channelSpell;
int32_t pad1;
int32_t health;
int32_t power[7];
int32_t maxHealth;
int32_t maxPower[7];
int32_t powerRegenFlatModifier[7];
int32_t powerRegenInterruptedFlatModifier[7];
int32_t level;
int32_t factionTemplate;
int32_t virtualItemSlotID[3];
uint32_t flags;
uint32_t flags2;
uint32_t auraState;
uint32_t attackRoundBaseTime[2];
uint32_t rangedAttackTime;
float boundingRadius;
float combatReach;
int32_t displayID;
int32_t nativeDisplayID;
int32_t mountDisplayID;
uint32_t minDamage;
uint32_t maxDamage;
uint32_t minOffhandDamage;
uint32_t maxOffhandDamage;
int32_t pad2;
uint32_t petNumber;
uint32_t petNameTimestamp;
uint32_t petExperience;
uint32_t petNextLevelExperience;
uint32_t dynamicFlags;
int32_t modCastingSpeed;
int32_t createdBySpell;
uint32_t npcFlags;
uint32_t emoteState;
int32_t stats[5];
int32_t posStats[5];
int32_t negStats[5];
int32_t resistance[7];
int32_t resistanceBuffModsPositive[7];
int32_t resistanceBuffModsNegative[7];
int32_t baseMana;
int32_t baseHealth;
int32_t pad3;
int32_t attackPower;
int32_t attackPowerMods;
int32_t attackPowerMultiplier;
int32_t rangedAttackPower;
int32_t rangedAttackPowerMods;
int32_t rangedAttackPowerMultiplier;
int32_t minRangedDamage;
int32_t maxRangedDamage;
int32_t powerCostModifier[7];
int32_t powerCostMultiplier[7];
int32_t maxHealthModifier;
int32_t hoverHeight;
int32_t pad4;
}; };
class CGUnit { class CGUnit {
public: public:
// Public static functions // Public static functions
static uint32_t GetBaseOffset();
static uint32_t GetBaseOffsetSaved();
static uint32_t GetDataSize();
static uint32_t GetDataSizeSaved();
static uint32_t TotalFields(); static uint32_t TotalFields();
static uint32_t TotalFieldsSaved(); static uint32_t TotalFieldsSaved();
// Public member variables
CGUnitData* m_unit;
uint32_t* m_unitSaved;
}; };
#endif #endif

View File

@ -88,3 +88,10 @@ const char* CGUnit_C::GetDisplayRaceNameFromRecord(const ChrRacesRec* raceRec, U
return raceRec->m_name; return raceRec->m_name;
} }
void CGUnit_C::SetStorage(uint32_t* storage, uint32_t* saved) {
this->CGObject_C::SetStorage(storage, saved);
this->m_unit = reinterpret_cast<CGUnitData*>(&storage[CGUnit::GetBaseOffset()]);
this->m_unitSaved = &saved[CGUnit::GetBaseOffsetSaved()];
}

View File

@ -13,6 +13,9 @@ class CGUnit_C : public CGObject_C, public CGUnit {
// Public static functions // Public static functions
static const char* GetDisplayClassNameFromRecord(const ChrClassesRec* classRec, UNIT_SEX sex, UNIT_SEX* displaySex); static const char* GetDisplayClassNameFromRecord(const ChrClassesRec* classRec, UNIT_SEX sex, UNIT_SEX* displaySex);
static const char* GetDisplayRaceNameFromRecord(const ChrRacesRec* raceRec, UNIT_SEX sex, UNIT_SEX* displaySex); static const char* GetDisplayRaceNameFromRecord(const ChrRacesRec* raceRec, UNIT_SEX sex, UNIT_SEX* displaySex);
// Public member functions
void SetStorage(uint32_t* storage, uint32_t* saved);
}; };
#endif #endif

View File

@ -26,14 +26,14 @@ static ClntObjMgr* s_curMgr;
#endif #endif
static uint32_t s_objTotalSize[] = { static uint32_t s_objTotalSize[] = {
static_cast<uint32_t>(sizeof(CGObject_C) + sizeof(CGObjectData) + (sizeof(uint32_t) * CGObject::TotalFieldsSaved())), static_cast<uint32_t>(sizeof(CGObject_C) + CGObject::GetDataSize() + CGObject::GetDataSizeSaved()),
static_cast<uint32_t>(sizeof(CGItem_C) + sizeof(CGItemData) + (sizeof(uint32_t) * CGItem::TotalFieldsSaved())), static_cast<uint32_t>(sizeof(CGItem_C) + CGItem::GetDataSize() + CGItem::GetDataSizeSaved()),
static_cast<uint32_t>(sizeof(CGContainer_C) + sizeof(CGContainerData) + (sizeof(uint32_t) * CGContainer::TotalFieldsSaved())), static_cast<uint32_t>(sizeof(CGContainer_C) + CGContainer::GetDataSize() + CGContainer::GetDataSizeSaved()),
static_cast<uint32_t>(sizeof(CGUnit_C) + sizeof(CGUnitData) + (sizeof(uint32_t) * CGUnit::TotalFieldsSaved())), static_cast<uint32_t>(sizeof(CGUnit_C) + CGUnit::GetDataSize() + CGUnit::GetDataSizeSaved()),
static_cast<uint32_t>(sizeof(CGPlayer_C) + sizeof(CGPlayerData) + (sizeof(uint32_t) * CGPlayer::TotalRemoteFieldsSaved())), static_cast<uint32_t>(sizeof(CGPlayer_C) + CGPlayer::GetRemoteDataSize() + CGPlayer::GetRemoteDataSizeSaved()),
static_cast<uint32_t>(sizeof(CGGameObject_C) + sizeof(CGGameObjectData) + (sizeof(uint32_t) * CGGameObject::TotalFieldsSaved())), static_cast<uint32_t>(sizeof(CGGameObject_C) + CGGameObject::GetDataSize() + CGGameObject::GetDataSizeSaved()),
static_cast<uint32_t>(sizeof(CGDynamicObject_C) + sizeof(CGDynamicObjectData) + (sizeof(uint32_t) * CGDynamicObject::TotalFieldsSaved())), static_cast<uint32_t>(sizeof(CGDynamicObject_C) + CGDynamicObject::GetDataSize() + CGDynamicObject::GetDataSizeSaved()),
static_cast<uint32_t>(sizeof(CGCorpse_C) + sizeof(CGCorpseData) + (sizeof(uint32_t) * CGCorpse::TotalFieldsSaved())), static_cast<uint32_t>(sizeof(CGCorpse_C) + CGCorpse::GetDataSize() + CGCorpse::GetDataSizeSaved()),
}; };
static const char* s_objNames[] = { static const char* s_objNames[] = {
@ -71,7 +71,7 @@ void* ClntObjMgrAllocObject(OBJECT_TYPE_ID typeID, uint64_t guid) {
// Heap allocate player object for current player // Heap allocate player object for current player
if (guid == playerGUID) { if (guid == playerGUID) {
return STORM_ALLOC(sizeof(CGPlayer_C) + sizeof(CGPlayerData) + (sizeof(uint32_t) * CGPlayer::TotalFieldsSaved())); return STORM_ALLOC(sizeof(CGPlayer_C) + CGPlayer::GetDataSize() + CGPlayer::GetDataSizeSaved());
} }
// TODO GarbageCollect(typeID, 10000); // TODO GarbageCollect(typeID, 10000);