#pragma once #include "SStateMachine.h" class SPlayerStateMachine : public SObjectStateMachine { public: SPlayerStateMachine() { } virtual ~SPlayerStateMachine() { } /// 처리 안된 사용자 입력 virtual void PendingInput( struct PENDING_INPUT_STATE* pPendinginputstate ) {} /// 사용자 입력(키보드, 마우스) virtual void OnInput( class SGameInput * pInput ) {} /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); static void SetAutoForceChipAttack( bool bUse ) { s_bAutoForceChipAttack = bUse; } protected: virtual void SendServerReq( SObjectState::ID state, const SStateInfo &infoState ) {} SObjectState::ID m_idState; SStateInfo m_infoState; static bool s_bAutoForceChipAttack; }; class SLocalPlayerStateMachine : public SPlayerStateMachine { public: SLocalPlayerStateMachine(); virtual ~SLocalPlayerStateMachine() { } /// 처리 안된 사용자 입력 virtual void PendingInput( struct PENDING_INPUT_STATE* pPendinginputstate ); /// 사용자 입력(키보드, 마우스) virtual void OnInput( class SGameInput * pInput ); /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); protected: virtual void SendServerReq( SObjectState::ID state, const SStateInfo &infoState ); SObjectState* CreateIdleState(); SObjectState* CreateAttackState(); SObjectState* CreateAttackEnd(); SObjectState* CreateMoveState(); SObjectState* CreateChaseState(); SObjectState* CreateThrowState(); SObjectState* CreateSitState(); SObjectState* CreateStandUpState(); SObjectState* CreateTakeItemState(); SObjectState* CreateUseItemState(); SObjectState* CreateCastState(); SObjectState* CreateFireState(); SObjectState* CreateSkillEndState(); SObjectState* CreateCastCancelState(); SObjectState* CreateAiMingState(); SObjectState* CreateShootingState(); SObjectState* CreateMountState(); SObjectState* CreateUnMountState(); }; /// 다른 플레이어~ 암것도 없고, 전투 대기 상태만 있다. class SOtherPlayerStateMachine : public SPlayerStateMachine { public: SOtherPlayerStateMachine(){} virtual ~SOtherPlayerStateMachine() { } /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); }; /// Npc class SNpcStateMachine : public SPlayerStateMachine { public: SNpcStateMachine() {} virtual ~SNpcStateMachine() {} virtual void OnNetInput( struct SGameMessage * pMsg ); };