local base = require("Battle/Logic/AI/Decision/Decision_Base") local Decision_RandomWanderInCircle = class("Decision_RandomWanderInCircle", base) local LuaConst=LuaConst local FP=FP --[[ 初始化 --]] function Decision_RandomWanderInCircle:initialize(entity) --类型 self.Type = LuaConst.DecisionType.RandomWanderInCircle --瞬时 self.IsOnce = false end --[[ 进入该Decision --]] function Decision_RandomWanderInCircle:DecisionIn(entity, decisionData) local decisionRecordDic = entity.components.aiBase:GetDecisionRecordDic(decisionData) if decisionData.IntParam2 == 1 then decisionRecordDic.center = entity:GetLogicPos() elseif decisionRecordDic.IntParam2 == 2 then decisionRecordDic.center = entity.components.patrol.ExitPatrolPoint elseif decisionData.IntParam2 == 3 then --出生位置 decisionRecordDic.center = entity.components.move.InitPos else decisionRecordDic.center = entity:GetLogicPos() end decisionRecordDic.center = decisionRecordDic.center:cloneV2() end --[[ 能否退出 完成条件:时间到 --]] function Decision_RandomWanderInCircle:CanExit(entity, decisionData, command) if decisionData.IntParam3 > 0 then local passFrame = LogicUpdateManager._clientHandleFrame - entity.components.aiBase.CurDecisionStartFrame local passTime = passFrame * LuaConst.TimeSpanMs return passTime > decisionData.IntParam3 * 1000 end return false end --[[ 输出指令 --]] function Decision_RandomWanderInCircle:SetCommand(entity, decisionData, command) local aiBaseComponent = entity.components.aiBase local decisionRecordDic = aiBaseComponent:GetDecisionRecordDic(decisionData) command = self:CommandRandomWanderNoStop(entity,aiBaseComponent,decisionData,entity:GetLogicPos(), decisionRecordDic.center, decisionData.IntParam1, command, FP.Const.NegOne) return command end return Decision_RandomWanderInCircle