Beispiel #1
0
 public void Execute(UserInfo user, AiCommandDispatcher aiCmdDispatcher, long deltaTime)
 {
     if (user.GetAIEnable())
     {
         UserAiStateInfo userAi = user.GetAiStateInfo();
         if (userAi.CommandQueue.Count <= 0)
         {
             int curState = userAi.CurState;
             if (curState > (int)AiStateId.Invalid && curState < (int)AiStateId.MaxNum)
             {
                 if (m_Handlers.ContainsKey(curState))
                 {
                     UserAiStateHandler handler = m_Handlers[curState];
                     if (null != handler)
                     {
                         handler(user, aiCmdDispatcher, deltaTime);
                     }
                 }
                 else
                 {
                     LogSystem.Error("Illegal ai state: " + curState + " user:" + user.GetId());
                 }
             }
             else
             {
                 OnStateLogicInit(user, aiCmdDispatcher, deltaTime);
                 ChangeToState(user, (int)AiStateId.Idle);
             }
         }
         ExecuteCommandQueue(user, deltaTime);
     }
 }
Beispiel #2
0
 protected void SetStateHandler(int state, UserAiStateHandler handler)
 {
     if (state > (int)AiStateId.Invalid && state < (int)AiStateId.MaxNum)
     {
         if (null != handler)
         {
             if (m_Handlers.ContainsKey(state))
             {
                 m_Handlers[state] = handler;
             }
             else
             {
                 m_Handlers.Add(state, handler);
             }
         }
         else
         {
             m_Handlers.Remove(state);
         }
     }
 }