#pragma once #include "BaseObject_Common.h" #include "Player_Common.h" #include "Monster_Common.h" class cObjectManager; struct sMonsterData; struct sMonsterScript; ////////////////////////////////////////////////////////////////////////// class cObject { public: virtual ~cObject(); inline unsigned char GetType() { return mType; } virtual unsigned long GetObjectID() { return mObjectId; } virtual void Process( unsigned long /*deltaTime*/, unsigned long /*accumTime*/ ) {} NiPoint3 GetPos() { return mTrans.m_Translate; } cObject* GetTargetObject(); sObject* GetTargetInfo() { return &mTarget; } void SetTargetObject( unsigned char type, unsigned long idx ) { mTarget.type = type; mTarget.index=idx; } unsigned int GetState() { return mState; } virtual void SetState( unsigned char state ) { mState = (eOBJECTSTATE)state; } virtual float GetFixedObjectSize() { return 0.0f;} protected: cObject( unsigned char type, cObjectManager* manager ); protected: cObjectManager* mManager; unsigned char mType; unsigned long mObjectId; sObject mTarget; eOBJECTSTATE mState; NiTransform mTrans; }; ////////////////////////////////////////////////////////////////////////// class cPlayer : public cObject { public: cPlayer( cObjectManager* manager ); virtual ~cPlayer(); bool Init( sPlayerInfo* pBaseInfo, sPlayerWearInfo* pWearInfo, sPlayerWeaponInfo* pWeaponInfo, sPlayerExrInfo* pExrInfo, NiPoint3 sPos, NiMatrix3 sRot = NiMatrix3::IDENTITY, float fScale = 1.0f ); virtual void Process( unsigned long deltaTime, unsigned long accumTime ); virtual float GetFixedObjectSize(); void SetFixedObjectSizeScale( unsigned short scalePer, bool init ); protected: /// °´Ã¼ÀÇ Á¤º¸ ±¸Á¶Ã¼ sPlayerInfo mPlayerInfo; sPlayerExrInfo mPlayerExrInfo; sPlayerWearInfo mPlayerWearInfo; /// ¹«±â Á¤º¸ sPlayerWeaponInfo mPlayerWeaponInfo; /// Âø¿ë ¹«±â¿¡ ´ëÇÑ »óÅ Á¤º¸ eWEAPON_STATE mPlayerWeaponState; float mFixedObjectSize; }; ////////////////////////////////////////////////////////////////////////// class cMonster : public cObject { public: cMonster( cObjectManager* manager ); virtual ~cMonster(); virtual void Process( unsigned long deltaTime, unsigned long accumTime ); bool Init( sMonsterData* baseInfo, NiPoint3 pos, NiMatrix3 rotate ); void SetPathArray( NiPoint2* moveArray, unsigned int count ); void HPChange( unsigned long objectHP, unsigned long objectMaxHP ); void HPChangeDie( unsigned long objectMaxHP ); void SetMoveSpeed( unsigned int moveSpeed, eMOVE_SPEED_TYPE moveSpeedType = eMOVESPEED_STOP ); void MoveStop( float x, float y ); virtual void SetState( unsigned char state ); unsigned long GetHP() { return mHP; } unsigned long GetMaxHP() { return mMaxHP; } unsigned char GetLevel() { return mpMonsterInfo->mLevel; } virtual float GetFixedObjectSize(); void SetFixedObjectSizeScale( unsigned short scalePer, bool init ); protected: bool Move( float x, float y ); protected: /// ¸ó½ºÅÍ Á¤º¸ sMonsterScript* mpMonsterInfo; /// À̵¿¼Óµµ unsigned int mMoveSpeed; /// HP/MP °ü·Ã unsigned long mHP; unsigned long mMP; unsigned long mMaxHP; unsigned long mMaxMP; /// À̵¿½Ã ¸ñÀûÁö ÁÂÇ¥ float mGotoX; float mGotoY; /// À̵¿½Ã ÃÖÁ¾À§Ä¡ float mLastGotoX; float mLastGotoY; /// À̵¿½Ã ¹æÇâ ¹× NiPoint3 mDesiredDir; /// À̵¿ÁÂÇ¥ ÃÖÁ¾ ¸ñÀûÁö±î±â °¡±âÀü Á¤ÁöÀÇ ¹üÀ§ float mMoveStopRange; unsigned long mMoveOverTime; /// °æ·Î ¸ñÀûÁö±îÁö À̵¿Áß ÇÁ·Î¼¼½º °£°Ý¿¡ÀÇÇØ ³Ñ¾î°£ ½Ã°£ ///¸ó½ºÅÍ °´Ã¼ »èÁ¦ ½Ã°£ unsigned long mMonsterDieTime; eMOVE_SPEED_TYPE mMoveSpeedType; /// ±æÃ£±â static const unsigned int MAX_PATH_COUNT = 2048; NiPoint2 mPathArray[MAX_PATH_COUNT]; unsigned int mPathIndex; unsigned int mPathCount; unsigned short mFixedObjectSizePer; float mFixedObjectSize; }; ////////////////////////////////////////////////////////////////////////// class cNpc : public cObject { public: cNpc( cObjectManager* manager ); virtual ~cNpc(); bool Init( unsigned long objId, unsigned long npcClassIdx, NiPoint3 sPos, NiMatrix3 sRot ); virtual void Process( unsigned long deltaTime, unsigned long accumTime ); protected: unsigned long mClassId; }; class cPortal : public cObject { public: cPortal( cObjectManager* manager ); virtual ~cPortal(); bool Init( unsigned long posScriptIdx, NiPoint3 pos, NiMatrix3 rot ); virtual void Process( unsigned long deltaTime, unsigned long accumTime ); unsigned long GetPosScriptIdx() { return mPosScriptIdx; } unsigned long GetTargetScriptIdx() { return mTargetScriptIdx; } float GetRange() { return mRange; } protected: unsigned long mPortalIdx; unsigned long mPosScriptIdx; unsigned long mTargetScriptIdx; float mRange; }; ////////////////////////////////////////////////////////////////////////// class cGather : public cObject { public: cGather( cObjectManager* manager ); virtual ~cGather(); virtual void Process( unsigned long deltaTime, unsigned long accumTime ); }; ////////////////////////////////////////////////////////////////////////// class cTotem : public cObject { public: cTotem( cObjectManager* manager ); virtual ~cTotem(); virtual void Process( unsigned long deltaTime, unsigned long accumTime ); }; ////////////////////////////////////////////////////////////////////////// class cDropItem : public cObject { public: cDropItem( cObjectManager* manager ); virtual ~cDropItem(); bool Init( unsigned long idx, NiPoint3 pos, unsigned long* owner, unsigned long ownTime, unsigned long* party, unsigned long partyTime, bool rare ); virtual void Process( unsigned long deltaTime, unsigned long accumTime ); bool IsOwner( unsigned long idx ); protected: unsigned long mOwner[MAX_ITEM_OWNER]; unsigned long mTimeToOwn; unsigned long mParty[ MAX_ITEM_PARTY ]; unsigned long mTimeToParty; bool mIsRareItem; bool mAllOwn; };