#pragma once #include "SGameAvatarEx.h" #include "Enc.h" class SGameMob : public SGameAvatarEx { public: enum MOB_TYPE { FIELD_MOB = 0, DUGEON_MOB, CORE_MOB, }; SGameMob( ENC_INT nMobID ); virtual ~SGameMob(); virtual bool Process( DWORD time, unsigned long uProcessBitVector=0 ); virtual void NPlayAnimation( int nType , int nAniType = SEQTYPE_NORMAL, float fPlayRate = 4.8f ); /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); virtual AR_UNIT GetSize(); virtual AR_UNIT GetScale(); virtual void SetStatus( unsigned status ); virtual void SetMountMode(); virtual void SetAttackMode(); virtual void SetNormalMode(); virtual void SetDropItemInfo( AR_HANDLE itemhandle ); virtual bool Render( unsigned long uRenderBitVector, class KViewportObject** ppViewportList, int nViewportCount); virtual void Damage(); virtual void Default( bool bForce=false ); virtual void Walk( bool bLoop = false ); virtual void Run( bool bAutoRun = false, int nAniType = ANI_RUN ); static void SetForceRender( bool bRender ) { s_bForceRender = bRender; } static bool GetForceRender() { return s_bForceRender; } virtual void SetViewVectorAngle( float fAngle ); //void SetMobType( int nFightType ); void CalcCreatureRunPlayRate( float fSpeed ); void CalcCreatureWalkPlayRate( float fSpeed ); void OnChangeState( SObjectState::ID stateid, const SStateInfo &info ); /// 스킬 사용 가능 한가? virtual bool IsUseSkill_complete() { return m_bIsUseSkill_complete; } MOB_TYPE GetMobType() const { return m_nMobType; } int GetNameID(); int GetSlantType(); /// 죽는 애니메이션으로 들어간다. 그것뿐. virtual void EnterDeadAnimation(); /// 애니메이션이 존재하는지 체크 2009.4.3 by 정동섭 virtual bool ExistAnimation( int ani_id); /// id애니메이션의 길이를 리턴한다. 플레이속도조절에 이용. (꼼수지만.. ) by 정동섭 / 찾을수없으면 -1리턴 virtual int GetAnimationLength( int ani_id ); virtual void RefreshTextureGroup( vec_cobset* pCobSet ); // 2010.07.16 - prodongi virtual void SetHP( int nHP, bool IsEnter = false ); virtual void Dead(); void recvDead(); protected: /// Property Set virtual const char* getClassName() { return "SGameMob"; } /// sonaodr 1.8.13 아바타 IDLE 모션 동작 구현 void _processIdle(); void _resetIdleTime() { m_dwIdleTime = m_dwTime; } // virtual void ItemDrop(); std::vector m_arItemHandleList; ///< 떨굴 Item enum { EFFECT_NONE, EFFECT_01, }; //흔들기 모드 지원 int m_nEffectMode; DWORD m_dwEffectStartTime; DWORD m_dwEffectKeepTime; K3DMatrix m_RotMat; K3DVector m_vFixedView; ///< 고정 방향 DWORD m_dwDeadTime; ///< 죽은 시간, 투명도 계산등에 사용 됨. static bool s_bForceRender; MOB_TYPE m_nMobType; float m_fPlayRate; float m_fStandardWalkPlayRate; float m_fStandardRunPlayRate; //float m_fRdbScale; float m_fWalkPlayRate; float m_fRunPlayRate; float m_fWalkSpeed; bool m_bIsUseSkill_complete; bool m_bIgnoreDamageMotion; struct _MONSTER_INFO_FILE* m_pMonsterInfo; float m_fMobLeaveTime; bool m_bShadowOff; DWORD m_dwIdleTime; ///< hunee 2008.03.06 몬스터 IDLE 모션 동작 구현 }; //Debug 정보들 얻는것도 추가 하자~ //애니메이션 수~ //현재 상태들~ //