diff --git a/src/object/client/CGObject_C.cpp b/src/object/client/CGObject_C.cpp index 3a7b0a6..e9cd9a2 100644 --- a/src/object/client/CGObject_C.cpp +++ b/src/object/client/CGObject_C.cpp @@ -95,7 +95,7 @@ void CGObject_C::Disable() { this->m_disableTimeMs = CWorld::GetCurTimeMs(); } -int32_t CGObject_C::GetModelFileName(const char*& name) { +int32_t CGObject_C::GetModelFileName(const char*& name) const { return false; } diff --git a/src/object/client/CGObject_C.hpp b/src/object/client/CGObject_C.hpp index 46f150b..fdb5813 100644 --- a/src/object/client/CGObject_C.hpp +++ b/src/object/client/CGObject_C.hpp @@ -36,7 +36,7 @@ class CGObject_C : public CGObject, public TSHashObjectCanHighlight(); } +CreatureModelDataRec* CGUnit_C::GetModelData() const { + // TODO + return nullptr; +} + +int32_t CGUnit_C::GetModelFileName(const char*& name) const { + auto modelDataRec = this->GetModelData(); + + // Model data not found + if (!modelDataRec) { + name = "Spells\\ErrorCube.mdx"; + + return true; + } + + name = modelDataRec->m_modelName; + + return modelDataRec->m_modelName ? true : false; +} + void CGUnit_C::PostInit(uint32_t time, const CClientObjCreate& init, bool a4) { // TODO diff --git a/src/object/client/CGUnit_C.hpp b/src/object/client/CGUnit_C.hpp index b3103ff..8df4b75 100644 --- a/src/object/client/CGUnit_C.hpp +++ b/src/object/client/CGUnit_C.hpp @@ -9,6 +9,7 @@ class ChrClassesRec; class ChrRacesRec; +class CreatureModelDataRec; class CGUnit_C : public CGObject_C, public CGUnit { public: @@ -22,12 +23,15 @@ class CGUnit_C : public CGObject_C, public CGUnit { // Virtual public member functions virtual ~CGUnit_C(); // TODO + virtual int32_t GetModelFileName(const char*& name) const; + // TODO virtual int32_t CanHighlight(); virtual int32_t CanBeTargetted(); // TODO // Public member functions CGUnit_C(uint32_t time, CClientObjCreate& objCreate); + CreatureModelDataRec* GetModelData() const; void PostInit(uint32_t time, const CClientObjCreate& init, bool a4); void PostMovementUpdate(const CClientMoveUpdate& move, int32_t activeMover); void SetStorage(uint32_t* storage, uint32_t* saved);