63 lines
2.1 KiB
Lua
63 lines
2.1 KiB
Lua
local BHController = {}
|
||
local this = BHController
|
||
|
||
--- 注册事件节点
|
||
this.BHNodeList = {
|
||
Battle = require("Modules/Mission/Behaviour/BHBattle"),
|
||
Buff = require("Modules/Mission/Behaviour/BHBuff"),
|
||
DeletePoint = require("Modules/Mission/Behaviour/BHDeletePoint"),
|
||
MapProgressChange = require("Modules/Mission/Behaviour/BHMapProgressChange"),
|
||
MoveTo = require("Modules/Mission/Behaviour/BHMoveTo"),
|
||
NewPoint = require("Modules/Mission/Behaviour/BHNewPoint"),
|
||
ParseMission = require("Modules/Mission/Behaviour/BHParseMission"),
|
||
ShowProgress = require("Modules/Mission/Behaviour/BHShowProgress"),
|
||
ShowReward = require("Modules/Mission/Behaviour/BHShowReward"),
|
||
SpendGoods = require("Modules/Mission/Behaviour/BHSpendGoods"),
|
||
}
|
||
|
||
--- 按数组顺序执行
|
||
function this.SeqExcuteNodeArray(nodeInfoList, func)
|
||
-- 检测数组正确性
|
||
if not nodeInfoList or #nodeInfoList == 0 then
|
||
return
|
||
end
|
||
-- 递归执行节点,保证顺序执行
|
||
local index = 1
|
||
local function StartExcute(...)
|
||
-- 获取节点id
|
||
local BHNodeInfo = nodeInfoList[index]
|
||
if BHNodeInfo then
|
||
-- 下标后移,未下一次递归做准备
|
||
index = index + 1
|
||
-- 获取节点执行
|
||
local option = BHNodeInfo[1]
|
||
-- 判断是参数还是构建参数的方法
|
||
local arg = BHNodeInfo[2]
|
||
if type(arg) == "function" then
|
||
arg = arg(...)
|
||
end
|
||
LogRed("option是:"..option)
|
||
local BHNode = this.BHNodeList[option]
|
||
if not BHNode then
|
||
Log("未知的行为节点,节点option = " .. option)
|
||
return
|
||
end
|
||
-- 单事件节点执行完成回调
|
||
local function NodeDoneFunc(...)
|
||
if BHNodeInfo[3] and type(BHNodeInfo[3]) == "function" then
|
||
BHNodeInfo[3](...)
|
||
end
|
||
end
|
||
BHNode.Excute(arg, StartExcute, NodeDoneFunc)
|
||
else
|
||
-- 递归结束
|
||
if func then func() end
|
||
end
|
||
end
|
||
-- 开始执行
|
||
StartExcute()
|
||
end
|
||
|
||
|
||
|
||
return this |