예제 #1
0
    private void Start()
    {
        EntityInstance instance = gameObject.GetComponent <EntityInstance>();

        m_aiStateDic = new Dictionary <int, AIStateBase>();
        m_aiStateDic.Add((int)EAIStateType.Idle, new AIIdleState(instance));
        m_aiStateDic.Add((int)EAIStateType.FireBall, new AIFireBallState(instance));
        m_aiStateDic.Add((int)EAIStateType.GotoHitTarget, new AIGoHitTargetState(instance));
        m_aiStateDic.Add((int)EAIStateType.Hit, new AIHitState(instance));
        m_aiStateDic.Add((int)EAIStateType.Prepare, new AIPrepareState(instance));

        m_curAIStateType = EAIStateType.None;
        SwitchState(EAIStateType.Idle);

        GameEventModuel eventModuel = GameStart.GetInstance().EventModuel;

        eventModuel.RegisterEventListener(GameEventID.AI_SWITCH_STATE, HandleSwitchState);
    }
예제 #2
0
    public void SwitchState(EAIStateType stateType)
    {
        if (m_curAIStateType == stateType)
        {
            return;
        }
        if (m_curStateBase != null)
        {
            m_curStateBase.PreExitState();
            m_curStateBase.ExitState();
        }

        m_aiStateDic.TryGetValue((int)stateType, out m_curStateBase);
        if (m_curStateBase != null)
        {
            m_curStateBase.PreEnterState();
            m_curStateBase.EnterState();
            m_curAIStateType = stateType;
        }
    }
예제 #3
0
 public AIStateBase(EAIStateType stateType, EntityInstance entity)
 {
     m_statetype = stateType;
     m_entity    = entity;
 }
예제 #4
0
    private void HandleSwitchState(GameEvent eve)
    {
        EAIStateType state = eve.GetParamByIndex <EAIStateType>(0);

        SwitchState(state);
    }