local ConditionManager = {} local _conditionNodeTable = {} local _conditionDataTreeTable = {} local FP=FP local string_isNilOrEmpty=string.isNilOrEmpty --加载需要的模块 local ConditionAnalysis = require "Battle/Logic/AI/Condition/ConditionAnalysis" local ConditionNode = require "Battle/Logic/AI/Condition/ConditionNode" --[[ 初始化 --]] function ConditionManager.Init() ConditionAnalysis.Init() end --[[ 获取ConditionNode --]] function ConditionManager.CreateConditionNode(arg) local conditionNode = _conditionNodeTable[arg] if not conditionNode then conditionNode = ConditionNode:new(arg) end return conditionNode end --[[ 获取ConditionDataTree --]] function ConditionManager.GetConditionDataTree(str) if string_isNilOrEmpty(str) then return nil end local tree = _conditionDataTreeTable[str] if not tree then tree = ConditionAnalysis.BuildConditionDataTree(str) _conditionDataTreeTable[str] = tree end return tree end --[[ 是否满足条件 entity、tree是必须要传的参数, missileOrMissileData、buffObject、params是可选参数,属于上下文信息,某些FuncNode需要额外的上下文才能进行判断 missileOrMissileData 可能是missile,也可能是missileData,根据事件不同数据也不同,具体见BuffTrigger表的说明页或者BattleEventSystem里面的参数构造代码 --]] function ConditionManager.MeetCondition(entity, tree, missileOrMissileData, buffObject, params) if tree == nil then return true else return tree:Run(entity, missileOrMissileData, buffObject, params) ~= FP.Const.Zero end end return ConditionManager