138 lines
3.4 KiB
C++
138 lines
3.4 KiB
C++
|
|
#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<AR_HANDLE> 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 정보들 얻는것도 추가 하자~
|
|
//애니메이션 수~
|
|
//현재 상태들~
|
|
//
|