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); } }
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); } } }