PGRData/Script/matrix/xentity/xbiancatheatre/adventure/node/event/XAEventNode.lua
2024-09-01 22:49:41 +02:00

139 lines
No EOL
4.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XANode = require("XEntity/XBiancaTheatre/Adventure/Node/XANode")
local XAEventNode = XClass(XANode, "XAEventNode")
function XAEventNode:Ctor()
self.EventConfig = nil
self.EventClientConfig = nil
end
function XAEventNode:InitWithServerData(data)
XAEventNode.Super.InitWithServerData(self, data)
-- 获取事件配置信息
self:UpdateConfig(data.EventId, data.CurStepId)
self.EventClientConfig = XBiancaTheatreConfigs.GetTheatreEventClientConfig(data.EventId)
end
function XAEventNode:UpdateConfig(eventId, curStepId)
self.EventConfig = XBiancaTheatreConfigs.GetEventNodeConfig(eventId, curStepId)
end
function XAEventNode:GetTitle()
return self.EventConfig.Title
end
function XAEventNode:GetTitleContent()
return self.EventConfig.TitleContent
end
function XAEventNode:GetRoleIcon()
return self.EventConfig.RoleIcon
end
function XAEventNode:GetRoleName()
return self.EventConfig.RoleName
end
function XAEventNode:GetRoleContent()
return self.EventConfig.RoleContent
end
function XAEventNode:GetBgAsset()
return self.EventConfig.BgAsset
end
-- 获取事件的描述
function XAEventNode:GetDesc()
return self.EventConfig.EventDesc
end
function XAEventNode:GetEventType()
return self.EventConfig.Type
end
function XAEventNode:GetEventId()
return self.EventConfig.EventId
end
function XAEventNode:GetNextStepId()
return self.EventConfig.NextStepId
end
-- 获取右下角确定按钮文案
function XAEventNode:GetBtnConfirmText()
return self.EventConfig.ConfirmContent
end
function XAEventNode:GetNodeTypeIcon()
if self.EventClientConfig and self.EventClientConfig.NodeTypeIcon then
return self.EventClientConfig.NodeTypeIcon
end
return XAEventNode.Super.GetNodeTypeIcon(self)
end
function XAEventNode:GetNodeTypeDesc()
if self.EventClientConfig and self.EventClientConfig.NodeTypeDesc then
return self.EventClientConfig.NodeTypeDesc
end
return XAEventNode.Super.GetNodeTypeDesc(self)
end
function XAEventNode:GetNodeTypeName()
if self.EventClientConfig and self.EventClientConfig.NodeTypeName then
return self.EventClientConfig.NodeTypeName
end
return XAEventNode.Super.GetNodeTypeName(self)
end
function XAEventNode:Trigger(callback)
XAEventNode.Super.Trigger(self, function()
-- 打开页面
XLuaUiManager.Open("UiBiancaTheatreOutpost")
end)
end
--事件,下一步,选择选项
function XAEventNode:RequestTriggerNode(callback, optionIndex)
local requestBody = {
CurEventStepId = self:GetCurStepId(),
OptionId = optionIndex, --选项ID1开始
}
local curAdventureManager = XDataCenter.BiancaTheatreManager.GetCurrentAdventureManager()
local curStep = curAdventureManager:GetCurrentChapter():GetCurStep()
XNetwork.CallWithAutoHandleErrorCode("BiancaTheatreEventNodeNextStepRequest", requestBody, function(res)
local newEventStep = self:UpdateNextStepEvent(res.NextEventStepId, res.FightTemplateId, curStep)
-- 发放奖励、获得局内道具
if not (XTool.IsTableEmpty(res.RewardGoodsList) and XTool.IsTableEmpty(res.InnerItemIds)) then
XDataCenter.BiancaTheatreManager.AddTipOpenData("UiBiancaTheatreTipReward", nil, res.RewardGoodsList, nil, nil, nil, res.InnerItemIds)
XDataCenter.BiancaTheatreManager.CheckTipOpenList()
end
-- 检查移除局内道具
local optionType = self.EventConfig.OptionType[optionIndex]
if optionType == XBiancaTheatreConfigs.SelectableEventItemType.ConsumeItem and self.EventConfig.OptionItemType[optionIndex] == XBiancaTheatreConfigs.XEventStepItemType.InnerItem then
curAdventureManager:RemoveItemData(self.EventConfig.OptionItemId[optionIndex])
end
-- 检查灵视是否开启
local isEvent = self.NodeType and self.NodeType == XBiancaTheatreConfigs.NodeType.Event
local isVisionSelect = self.EventConfig.StepRewardItemType and self.EventConfig.StepRewardItemType == XBiancaTheatreConfigs.XEventStepItemType.OpenVision
if isEvent and isVisionSelect then
XDataCenter.BiancaTheatreManager.UpdateIsOpenVision(true)
XDataCenter.BiancaTheatreManager.OpenVision()
end
-- 记录通过的步骤节点
XDataCenter.BiancaTheatreManager.AddPassedEventRecord(self.EventConfig.EventId, self.EventConfig.StepId)
if callback then callback(newEventStep) end
end)
end
-- 更新下一个事件节点
function XAEventNode:UpdateNextStepEvent(nextStepId, fightTemplateId, curStep)
self:SetCurStepId(nextStepId)
self:SetFightTemplateId(fightTemplateId)
local newData = self.RawData
return curStep:UpdateNextEventNode(self, newData)
end
function XAEventNode:GetNodeTypeSmallIcon()
return self.EventClientConfig and self.EventClientConfig.SmallIcon or XAEventNode.Super.GetNodeTypeSmallIcon(self)
end
return XAEventNode