-- 管理Option表格的行为 -- 包含行为类型与跳转类 OptionBehaviourManager = {} local this = OptionBehaviourManager local OptionConfig = ConfigManager.GetConfig(ConfigName.OptionConfig) local BHController = require("Modules/Mission/BHController") --当前触发事件的界面 this.CurTriggerPanel = nil function this.Initialize() end -- 下一个事件ID this.nextEventId = nil function this.SetNextEventId(eventId) this.nextEventId = eventId end --处理行为类型 function this.UpdateEventPoint(msg, optionId, func) -- 下一个事件ID this.nextEventId = msg.eventId local behaviorType = msg.EventBehaviorCommon.behaviorType local beArgs = {} for i=1, #msg.EventBehaviorCommon.eventBehaviorValues do local item = msg.EventBehaviorCommon.eventBehaviorValues[i] local args = {} for j=1, #item.behaviorValues do ----Log("item id:"..item.behaviorValues[j]) args[j] = item.behaviorValues[j] end beArgs[i] = args end local behaviorNodeList = {} -- 行为类型判断 if behaviorType == 1 then behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}} } elseif behaviorType == 2 then --消耗物品 behaviorNodeList = { {"SpendGoods", {itemList = beArgs}}, {"ShowProgress", {content = "", time = 2}}, } elseif behaviorType == 3 then -- 侦查 elseif behaviorType == 4 then elseif behaviorType == 5 then behaviorNodeList = { {"MoveTo", {mapID = beArgs[1][1], u = beArgs[1][2], v = beArgs[1][3] }}, } elseif behaviorType == 6 then -- 进度条 behaviorNodeList = { {"ShowProgress", {content = Language[11339], time = beArgs[1][1]}}, {"ShowReward", {drop = msg.drop}}, } elseif behaviorType == 7 then --讨债任务 behaviorNodeList = { {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 8 then -- 吃buff behaviorNodeList = { {"Buff", {buffID = beArgs[1][1]}}, } elseif behaviorType == 9 then -- 完成任务往下推一步, 并销毁当前事件点 behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"DeletePoint", {pos = MapManager.curTriggerPos}}, } elseif behaviorType == 10 then -- 监听打怪数量 behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 11 then -- 完成任务往下推一步, 并开启新的事件 behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 13 then -- 完成任务往下推一步, 不摧毁地图点 behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, } elseif behaviorType == 14 then -- 完成任务往下推一步并消耗物品,不摧毁地图点 behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"SpendGoods", {itemList = {[1] = beArgs[2]}}}, } --local itemId = beArgs[2][1] --local itemCostNum = beArgs[2][2] --PopupTipPanel.ShowTip(string.format("消耗%d个%s", itemCostNum, ItemConfig[itemId].Name)) elseif behaviorType == 15 then -- 销毁当前地图点 behaviorNodeList = { {"ShowReward", {drop = msg.drop}}, {"DeletePoint", {pointID = beArgs[1]}}, } elseif behaviorType == 16 then -- 消耗道具并销毁指定地图点 behaviorNodeList = { {"SpendGoods", {itemList = {[1] = beArgs[1]}}}, {"DeletePoint", {pointID = beArgs[2]}}, } elseif behaviorType == 17 then --完成任务往下推一步, 摧毁指定地图点,开启新的地图点,完成所有地图任务再推一步任务 --销毁指定地图点 behaviorNodeList = { {"DeletePoint", {pointID = beArgs[1]}}, {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, {"ShowReward", {drop = msg.drop}} } elseif behaviorType == 18 then -- 战斗并销毁指定地图点 behaviorNodeList = { {"Battle", {monsterID = beArgs[1][2]}, this.SetNextEventId}, {"ParseMission", function(deliver) return {mission = deliver.mission, isInit = false, drop = deliver.missionDrop} end}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][2]}}, {"DeletePoint", {pointID = {beArgs[1][3]}}}, } elseif behaviorType == 19 then -- 完成任务往下推一步, 行动到指定地图指定地图点,不摧毁地图点 behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"MoveTo", {mapID = beArgs[1][2], u = beArgs[1][3], v = beArgs[1][4]}}, } elseif behaviorType == 20 then -- 战斗并销毁指定地图点 behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, {"DeletePoint", {pointID = {beArgs[1][2]}}}, } elseif behaviorType == 22 then -- 完成任务往下推一步,行动到某张地图某坐标点,摧毁指定地图点 behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"DeletePoint", {pointID = {beArgs[1][2]}}}, {"MoveTo", {mapID = beArgs[1][3], u = beArgs[1][4], v = beArgs[1][5]}}, } elseif behaviorType == 23 then --第一次触发时,完成任务往下推一步。 elseif behaviorType == 24 then --服务器跳转地图点到指定状态,客户端不读取新事件 --Log("服务器执行行为") elseif behaviorType == 25 then --完成任务往下推一步,销毁当前地图点,服务器跳转地图点到指定状态,客户端不读取新事件 4#103018#103019 任务id#地图点id#新事件id behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"DeletePoint", {pos = MapManager.curPos}}, } elseif behaviorType == 26 then -- 在主界面接受任务, 并开启新任务 elseif behaviorType == 27 then -- 服务器推送下一个任务 elseif behaviorType == 28 then -- 扣除行动力 local num = beArgs[1][1] --Log("28 ------------事件点扣除行动力------------- MapManager.leftStep-num ".. MapManager.leftStep.." "..num) Game.GlobalEvent:DispatchEvent(GameEvent.Map.ProgressChange, 6, 0, 0, num, false) elseif behaviorType == 29 then -- 消耗道具并销毁当前位置 behaviorNodeList = { {"SpendGoods", {itemList = beArgs}}, } if #msg.drop.itemlist > 0 or #msg.drop.equipId > 0 or #msg.drop.Hero > 0 then table.insert(behaviorNodeList,{"ShowProgress", {content = Language[11340], time = 2}}) table.insert(behaviorNodeList,{"DeletePoint", {pos = MapManager.curTriggerPos}}) table.insert(behaviorNodeList,{"ShowReward", {drop = msg.drop}}) table.insert(behaviorNodeList,{"MapProgressChange", {type = 5, curEventID = optionId}}) end elseif behaviorType == 30 then -- 生成新的地图点 behaviorNodeList = { {"NewPoint", {pointList = beArgs, startIndex = 1, dynamicPoints = msg.addMapInfo}}, {"ShowReward", {drop = msg.drop}} } elseif behaviorType == 31 then -- 地图内传送 behaviorNodeList = { {"MoveTo", {u = beArgs[1][1], v = beArgs[1][2]}} } elseif behaviorType == 32 then behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"ParseMission", function (result) return {mission = result.mission, isInit = false, drop = result.missionDrop} end}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, {"DeletePoint", {pointID = {beArgs[1][2]}}} , {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 33 then behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, {"DeletePoint", {pointID = {beArgs[1][2]}}}, {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 34 then behaviorNodeList = { {"Buff", {buffID = beArgs[1][1]}}, {"DeletePoint", {pointID = {beArgs[1][2]}}}, } elseif behaviorType == 35 then behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"DeletePoint", {pointID = beArgs[1]}}, {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 36 then behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"SpendGoods", {itemList = {[1] = beArgs[2]}}}, {"DeletePoint", {pointID = {beArgs[1][1]}}}, } elseif behaviorType == 37 then behaviorNodeList = { {"Buff", {buffID = beArgs[1][3]}}, {"SpendGoods", {itemList = {[1] = beArgs[1]}}}, } elseif behaviorType == 38 then behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}} } elseif behaviorType == 39 then -- 39 战斗胜利后推任务 behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"ParseMission", function (result) return {mission = result.mission, isInit = false, drop = result.missionDrop} end}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, {"NewPoint", {pointList = beArgs, startIndex = 2, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 40 then behaviorNodeList = { {"ParseMission", {mission = msg.mission, isInit = false, drop = msg.missionDrop}}, {"Buff", {buffID = beArgs[1][1]}}, {"DeletePoint", {pointID = beArgs[2]}}, {"NewPoint", {pointList = beArgs, startIndex = 3, dynamicPoints = msg.addMapInfo}}, } elseif behaviorType == 41 then behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, } elseif behaviorType == 42 then MapTrialManager.GoNextLevel() elseif behaviorType == 43 then --MapTrialManager.GoNextLevel() elseif behaviorType == 44 then behaviorNodeList = { {"ShowReward", {drop = msg.drop}}, {"DeletePoint", {pointID = beArgs[1]}}, } elseif behaviorType == 45 then behaviorNodeList = { {"Battle", {monsterID = beArgs[1][2]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, } elseif behaviorType == 46 then behaviorNodeList = { {"DeletePoint", {pos = MapManager.curTriggerPos}}, } elseif behaviorType == 47 then -- 跨地图传送 -- EndLessMapManager.TranssportByMapId(beArgs[1][1]) elseif behaviorType == 48 then behaviorNodeList = { {"Battle", {monsterID = beArgs[1][2]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, } elseif behaviorType == 49 then -- 事件点开始倒计时 behaviorNodeList = { {"ShowReward", {drop = msg.drop}}, } elseif behaviorType==50 then --惊喜层 MapTrialManager.GoSurprisedLevel() elseif behaviorType==51 then -- 吃buff, 删除当前点 behaviorNodeList = { {"Buff", {buffID = beArgs[1][1]}}, {"DeletePoint", {pos = MapManager.curTriggerPos}}, } elseif behaviorType == 52 then -- 战斗并销毁指定地图点 behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, {"DeletePoint", {pointID = {beArgs[1][2]}}}, } elseif behaviorType == 53 then -- 战斗并销毁指定地图点 NetManager.RequestAllHeroHp(function () Game.GlobalEvent:DispatchEvent(GameEvent.EndLess.RefreshHeroData) end) elseif behaviorType == 54 then -- 战斗并销毁指定地图点 behaviorNodeList = { {"Battle", {monsterID = beArgs[1][1]}, this.SetNextEventId}, {"MapProgressChange", {type = 2, curEventID = 0, monsterID = beArgs[1][1]}}, {"DeletePoint", {pointID = {beArgs[1][2]}}}, } NetManager.RequestAllHeroHp(function () Game.GlobalEvent:DispatchEvent(GameEvent.EndLess.RefreshHeroData) end) elseif behaviorType == 55 then behaviorNodeList = { {"DeletePoint", {pos = MapManager.curTriggerPos}}, } end -- 没有行为 if #behaviorNodeList == 0 then if func then func(this.nextEventId) end return end -- 如果没有主动添加节点掉落则添加 local isCheckDrop = false for i = 1, #behaviorNodeList do if behaviorNodeList[i][1] == "ShowReward" then isCheckDrop = true break end end if not isCheckDrop then table.insert(behaviorNodeList, {"ShowReward", {drop = msg.drop}}) end -- 执行行为节点 --Log("执行事件,behaviorType = ".. behaviorType) BHController.SeqExcuteNodeArray(behaviorNodeList, function() if func then func(this.nextEventId) end end) end -- 在option操作完毕之后更新事件点 function this.JumpEventPoint(eventId, optionId, panel, func) local jumpType = OptionConfig[optionId].JumpType Log("请求的eventID " .. eventId) Log("请求的optionId " .. optionId) this.CurTriggerPanel = panel if jumpType == 4 then --关闭界面,不读取,不刷新事件点 -- 试炼副本的最后一层 if MapTrialManager.IsFinalLevel() then Game.GlobalEvent:DispatchEvent(GameEvent.Event.PointTriggerEnd) return end panel:ClosePanel() NetManager.EventUpdateRequest(eventId, optionId, function () this.CurTriggerPanel = nil Game.GlobalEvent:DispatchEvent(GameEvent.Event.PointTriggerEnd) Game.GlobalEvent:DispatchEvent(GameEvent.Map.ProgressChange, 1, optionId) end) elseif jumpType == 1 or jumpType == 2 or jumpType == 3 or jumpType == 11 then --读取,刷新事件点 NetManager.EventUpdateRequest(eventId, optionId, function (e) MissionManager.EventPointTrigger(e) --Log(" 后端返回事件点ID " .. e) Game.GlobalEvent:DispatchEvent(GameEvent.Map.ProgressChange, 1, optionId) end) elseif jumpType == 5 or jumpType == 7 or jumpType == 8 then --关闭界面,读取,刷新事件点 panel:ClosePanel() this.CurTriggerPanel = nil NetManager.EventUpdateRequest(eventId, optionId, function (e) MissionManager.EventPointTrigger(e) Game.GlobalEvent:DispatchEvent(GameEvent.Map.ProgressChange, 1, optionId) end) elseif jumpType == 6 or jumpType == 9 or jumpType == 10 then --关闭界面,不读取,刷新事件点 NetManager.EventUpdateRequest(eventId, optionId, function (e) panel:ClosePanel() this.CurTriggerPanel = nil Game.GlobalEvent:DispatchEvent(GameEvent.Event.PointTriggerEnd) Game.GlobalEvent:DispatchEvent(GameEvent.Map.ProgressChange, 1, optionId) end) end if func then func() end end return OptionBehaviourManager