Files
Leviathan/Client/Game/game/Player/SGameMob.h
T
2026-06-01 12:46:52 +02:00

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 정보들 얻는것도 추가 하자~
//애니메이션 수~
//현재 상태들~
//