internal static void Execute(object msg, User user) { Msg_CR_UserMoveToPos move_msg = msg as Msg_CR_UserMoveToPos; if (move_msg == null) { return; } UserInfo charactor = user.Info; if (charactor == null) { LogSys.Log(LOG_TYPE.ERROR, "charactor {0} not exist", user.RoleId); return; } /// if (charactor.GetAIEnable()) { MovementStateInfo msi = charactor.GetMovementStateInfo(); msi.PositionX = move_msg.cur_pos_x; msi.PositionZ = move_msg.cur_pos_z; UserAiStateInfo asi = charactor.GetAiStateInfo(); Vector3 pos = new Vector3(move_msg.target_pos_x, 0, move_msg.target_pos_z); asi.TargetPos = pos; asi.IsTargetPosChanged = true; asi.ChangeToState((int)(AiStateId.Move)); } }
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); } }
internal static void Execute(object msg, User user) { Msg_CR_UserMoveToAttack attack_msg = msg as Msg_CR_UserMoveToAttack; if (attack_msg == null) { return; } UserInfo charactor = user.Info; if (charactor == null) { LogSys.Log(LOG_TYPE.ERROR, "charactor {0} not exist", user.RoleId); return; } /// if (charactor.GetAIEnable()) { MovementStateInfo msi = charactor.GetMovementStateInfo(); msi.PositionX = attack_msg.cur_pos_x; msi.PositionZ = attack_msg.cur_pos_z; UserAiStateInfo aiInfo = charactor.GetAiStateInfo(); AiData_UserSelf_General data = charactor.GetAiStateInfo().AiDatas.GetData <AiData_UserSelf_General>(); if (null == data) { data = new AiData_UserSelf_General(); charactor.GetAiStateInfo().AiDatas.AddData(data); } charactor.GetMovementStateInfo().IsMoving = false; data.FoundPath.Clear(); aiInfo.Time = 0; aiInfo.Target = attack_msg.target_id; aiInfo.IsAttacked = false; aiInfo.AttackRange = attack_msg.attack_range; aiInfo.ChangeToState((int)AiStateId.Combat); } }