#ifndef OBJECT_CLIENT_CG_UNIT_C_HPP #define OBJECT_CLIENT_CG_UNIT_C_HPP #include "object/client/CClientObjCreate.hpp" #include "object/client/CGObject_C.hpp" #include "object/client/CGUnit.hpp" #include "object/client/CMovement_C.hpp" #include "object/Types.hpp" #include "util/GUID.hpp" class ChrClassesRec; class ChrRacesRec; class CreatureDisplayInfoRec; class CreatureDisplayInfoExtraRec; class CreatureModelDataRec; class CreatureSoundDataRec; class UnitBloodLevelsRec; class CGUnit_C : public CGObject_C, public CGUnit { public: // Public static variables static WOWGUID s_activeMover; // Public static functions 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); // Virtual public member functions virtual ~CGUnit_C(); // TODO virtual C3Vector GetPosition() const; // TODO virtual float GetFacing() const; virtual float GetRawFacing() const; // TODO virtual WOWGUID GetTransportGUID() const; // 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); int32_t GetDisplayID() const; CreatureModelDataRec* GetModelData() const; float GetRawSmoothFacing() 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); protected: // Protected member functions int32_t GetLocalDisplayID() const; void RefreshDataPointers(); private: // Private member variables // TODO CMovement_C m_localMove; // TODO CreatureDisplayInfoRec* m_displayInfo = nullptr; CreatureDisplayInfoExtraRec* m_displayInfoExtra = nullptr; CreatureModelDataRec* m_modelData = nullptr; CreatureSoundDataRec* m_soundData = nullptr; // TODO UnitBloodLevelsRec* m_bloodRec = nullptr; // TODO int32_t m_localDisplayID = 0; // TODO float m_smoothFacing; // TODO }; #endif