PGRData/Script/matrix/xentity/xbiancatheatre/adventure/node/XABattleNode.lua

152 lines
4.5 KiB
Lua
Raw Normal View History

2024-09-01 20:49:41 +00:00
local XANode = require("XEntity/XBiancaTheatre/Adventure/Node/XANode")
local XARewardNode = require("XEntity/XBiancaTheatre/Adventure/Node/XARewardNode")
local XABattleNode = XClass(XANode, "XABattleNode")
function XABattleNode:Ctor()
-- 奖励类型
self.RewarType = XBiancaTheatreConfigs.AdventureRewardType.None
-- 获取关卡配置
self.TheatreStageConfig = nil
-- 节点事件配置
self.EventClientConfig = nil
-- 战斗中的关卡Id列表
self.StageIds = {}
-- 已通关的关卡IdId可重复
self.PassedStageIds = {}
-- 已通关的关卡索引,多队伍用
self.PassedStageIndexs = {}
end
function XABattleNode:InitWithServerData(data)
XABattleNode.Super.InitWithServerData(self, data)
-- 获取关卡配置
self.TheatreStageConfig = XBiancaTheatreConfigs.GetBiancaTheatreFightStageTemplate(data.FightTemplateId, true)
-- 节点事件配置
self.EventClientConfig = XBiancaTheatreConfigs.GetBiancaTheatreFightNodeClient(data.FightId)
-- 获取奖励类型
self.RewarType = data.RewardType or XBiancaTheatreConfigs.AdventureRewardType.None
-- 战斗中的关卡Id列表
self.StageIds = data.StageIds
-- 已通关的关卡IdId可重复
self.PassedStageIds = data.PassedStageIds
end
function XABattleNode:UpdatePassedStageIndexs(passedStageIndexs)
for i, passedStageIndex in ipairs(passedStageIndexs or {}) do
self.PassedStageIndexs[passedStageIndex] = true
end
end
-- 获取推荐战力
function XABattleNode:GetSuggestPower()
return self.TheatreStageConfig.SuggestAbility
end
-- 获取战斗携带的奖励类型
function XABattleNode:GetRewardType()
return self.RewarType
end
function XABattleNode:GetRewardTypeIcon()
return XBiancaTheatreConfigs.GetRewardTypeIcon(self:GetRewardType(), self.RawData.PowerId)
end
function XABattleNode:GetTeamCount()
return #self.TheatreStageConfig.StageId
end
function XABattleNode:GetShowDatas()
local result = {}
local nodeRewardData = self.RawData.NodeRewards[1]
if nodeRewardData then
table.insert(result, {
rewardNode = XARewardNode.New(nodeRewardData)
})
end
return result
end
function XABattleNode:Trigger()
XABattleNode.Super.Trigger(self, function()
XLuaUiManager.Open("UiBattleRoleRoom"
, self.TheatreStageConfig.StageId
, XDataCenter.BiancaTheatreManager.GetCurrentAdventureManager():GetSingleTeam()
, require("XUi/XUiBiancaTheatre/XUiBiancaTheatreBattleRoleRoom"))
end)
end
function XABattleNode:EnterFight(index)
if index == nil then index = 1 end
XDataCenter.BiancaTheatreManager.GetCurrentAdventureManager()
:EnterFight(self.TheatreStageConfig.Id, index)
end
function XABattleNode:GetStageIds()
return self.StageIds
end
function XABattleNode:SetStageFinish(stageId, index)
if not index or index <= 0 then
return
end
self.PassedStageIndexs[index] = true
end
function XABattleNode:IsStageFinish(index)
return self.PassedStageIndexs[index] or false
end
function XABattleNode:GetPassedStageIds()
return self.PassedStageIds
end
function XABattleNode:ResetFinishStage(index)
self.PassedStageIndexs[index] = false
end
function XABattleNode:GetTheatreStageId()
return self.TheatreStageConfig.Id
end
function XABattleNode:GetIsBattle()
return true
end
function XABattleNode:GetNodeTypeIcon()
if self.EventClientConfig and self.EventClientConfig.NodeTypeIcon then
return self.EventClientConfig.NodeTypeIcon
end
return XABattleNode.Super.GetNodeTypeIcon(self)
end
function XABattleNode:GetNodeTypeDesc()
if self.EventClientConfig and self.EventClientConfig.NodeTypeDesc then
return self.EventClientConfig.NodeTypeDesc
end
return XABattleNode.Super.GetNodeTypeDesc(self)
end
function XABattleNode:GetNodeTypeName()
if self.EventClientConfig and self.EventClientConfig.NodeTypeName then
return self.EventClientConfig.NodeTypeName
end
return XABattleNode.Super.GetNodeTypeName(self)
end
--获得首个战斗节点奖励预览
function XABattleNode:GetNodeReward()
local nodeRewardData = self.RawData.NodeRewards[1]
if not nodeRewardData then
return
end
self.NodeReward = self.NodeReward or XARewardNode.New(nodeRewardData)
return self.NodeReward
end
function XABattleNode:GetNodeTypeSmallIcon()
return self.EventClientConfig and self.EventClientConfig.SmallIcon or XABattleNode.Super.GetNodeTypeSmallIcon(self)
end
return XABattleNode