local Base = require("Battle/Logic/AI/Decision/Decision_PatrolOnPath") local Decision_PhalanxPatrolOnPathLeader = class("Decision_PhalanxPatrolOnPathLeader", Base) local private = {} --[[ 初始化 --]] function Decision_PhalanxPatrolOnPathLeader:initialize(entity) --类型 self.Type = LuaConst.DecisionType.PhalanxPatrolOnPathLeader --瞬时 self.IsOnce = false end function Decision_PhalanxPatrolOnPathLeader:DecisionIn(entity, decisionData) Base.DecisionIn(self, entity, decisionData) local decisionRecordDic = entity.components.aiBase:GetDecisionRecordDic(decisionData) decisionRecordDic.paramsKey = "PhalanxPatrolOnPathLeaderParams" .. decisionData.ID end --[[ 输出指令 --]] function Decision_PhalanxPatrolOnPathLeader:SetCommand(entity, decisionData, command) local aiBase = entity.components.aiBase local decisionRecordDic = aiBase:GetDecisionRecordDic(decisionData) aiBase:GetAiRecord(decisionRecordDic.paramsKey) local params = aiBase:GetAiRecord(decisionRecordDic.paramsKey) if not params then local splits = string.split(decisionData.StringParam1, ",") local strideColumn = tonumber(splits[1]) local strideRow = tonumber(splits[2]) local rotateType = tonumber(splits[3]) local maxColumn = tonumber(splits[4]) params = { strideColumn = strideColumn, strideRow = strideRow, rotateType = rotateType, maxColumn = maxColumn, } --为了节省性能,解析完缓存在AiRecord里 aiBase:SetAiRecord(decisionRecordDic.paramsKey, params) end if not self:ShouldPhalanxLeaderWait(entity, decisionData, params.strideColumn, params.strideRow, params.maxColumn) then Base.SetCommand(self, entity, decisionData, command) self:RefreshPhalanxInfo(entity, command.MoveDir, params.strideColumn, params.strideRow, params.rotateType, params.maxColumn) end end return Decision_PhalanxPatrolOnPathLeader