local base = require("Battle/Logic/AI/Decision/Decision_Base") local Decision_EscapeMove = class("Decision_EscapeMove", base) local LuaConst=LuaConst local FP=FP --[[ 初始化 --]] function Decision_EscapeMove:initialize(entity) --类型 self.Type = LuaConst.DecisionType.EscapeMove --瞬时 self.IsOnce = false end --[[ 能否进入 --]] function Decision_EscapeMove:CanEnter(entity, decisionData, command) return true end --[[ 能否退出 完成条件:时间到 --]] function Decision_EscapeMove:CanExit(entity, decisionData, command) local decisionRecordDic = entity.components.aiBase:GetDecisionRecordDic(decisionData) if decisionRecordDic.timeEla and decisionRecordDic.timeEla >= (decisionData.IntParam2 * 1000) then return true else return decisionRecordDic.center == nil end end --[[ 进入该Decision --]] function Decision_EscapeMove:DecisionIn(entity, decisionData) local decisionRecordDic = entity.components.aiBase:GetDecisionRecordDic(decisionData) local targetEntity = nil if decisionData.IntParam1 == 1 then targetEntity = entity:GetDirectMasterEntity() elseif decisionData.IntParam1 == 2 then targetEntity = entity.components.target.Target elseif decisionData.IntParam1 == 3 then targetEntity = entity.components.target.FollowTarget else logging.error(LTAG.ERROR, "HYW : decisionData ", decisionData.ID, " 的参数1值不正确! 值为:", decisionData.IntParam1) end if targetEntity then decisionRecordDic.center = targetEntity:GetLogicPos() else decisionRecordDic.center = nil end decisionRecordDic.timeEla = 0 end --[[ 输出指令 --]] function Decision_EscapeMove:SetCommand(entity, decisionData, command) local aiBaseComponent = entity.components.aiBase local decisionRecordDic = aiBaseComponent:GetDecisionRecordDic(decisionData) if decisionRecordDic.center then command.MoveDir = entity.components.move.LogicPos - decisionRecordDic.center command.RotateDir:Reset(command.MoveDir) end decisionRecordDic.timeEla = decisionRecordDic.timeEla + aiBaseComponent:GetAiUpdateInterval() * LuaConst.TimeSpanMs return command end return Decision_EscapeMove