#pragma once #include "SStateMachine.h" class SCreatureStateMachine : public SObjectStateMachine { public: SCreatureStateMachine() {} virtual ~SCreatureStateMachine() { } /// 사용자 입력(키보드, 마우스) virtual void OnInput( class SGameInput * pInput ) {} /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); protected: virtual void SendServerReq( SObjectState::ID state, const SStateInfo &infoState ){} SObjectState::ID m_idState; SStateInfo m_infoState; }; class SLocalCreatureStateMachine : public SCreatureStateMachine { public: SLocalCreatureStateMachine(); virtual ~SLocalCreatureStateMachine() { } /// 사용자 입력(키보드, 마우스) virtual void OnInput( class SGameInput * pInput ); /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); virtual void Process( DWORD dwTime ); protected: virtual void SendServerReq( SObjectState::ID state, const SStateInfo &infoState ); SObjectState* CreateIdleState(); SObjectState* CreateAttackState(); SObjectState* CreateAttackEnd(); SObjectState* CreateMoveState(); SObjectState* CreateChaseState(); SObjectState* CreateCastState(); SObjectState* CreateFireState(); SObjectState* CreateSkillEndState(); SObjectState* CreateCastCancelState(); SObjectState* CreateCreatureMount(); SObjectState* CreateCreatureUnMount(); DWORD m_dwMoveUpdateTime; }; /// 다른 플레이어~ 암것도 없고, 전투 대기 상태만 있다. class SOtherCreatureStateMachine : public SCreatureStateMachine { public: SOtherCreatureStateMachine(){} virtual ~SOtherCreatureStateMachine() { } /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); };