miduo_client/Assets/ManagedResources/~Lua/Modules/Mission/OptionBehaviourManager.lua

374 lines
17 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- 管理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