#pragma once #include "SStateMachine.h" class SMonsterStateMachine : public SObjectStateMachine { public: SMonsterStateMachine() {} virtual ~SMonsterStateMachine() { } /// 사용자 입력(키보드, 마우스) 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 SLocalMonsterStateMachine : public SMonsterStateMachine { public: SLocalMonsterStateMachine(); virtual ~SLocalMonsterStateMachine() { } /// 사용자 입력(키보드, 마우스) 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* CreateMoveState(); SObjectState* CreateChaseState(); SObjectState* CreateCastState(); SObjectState* CreateCastCancelState(); SObjectState* CreateFireState(); SObjectState* CreateSkillEndState(); }; /// 다른 플레이어~ 암것도 없고, 전투 대기 상태만 있다. class SOtherMonsterStateMachine : public SMonsterStateMachine { public: SOtherMonsterStateMachine(){} virtual ~SOtherMonsterStateMachine() { } /// 사용자 입력 응답(Server) virtual void OnNetInput( struct SGameMessage * pMsg ); };