PGRData/Script/matrix/xui/xuitheatre/XUiTheatreInfiniteSettleWin.lua

137 lines
No EOL
5.7 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 XUiTheatreSkillGrid = require("XUi/XUiTheatre/XUiTheatreSkillGrid")
local XUiTheatreInfiniteSettleWin = XLuaUiManager.Register(XLuaUi, "UiTheatreInfiniteSettleWin")
function XUiTheatreInfiniteSettleWin:OnAwake()
self.TheatreManager = XDataCenter.TheatreManager
self.AdventureManager = self.TheatreManager:GetCurrentAdventureManager()
self.CurrentChapter = self.AdventureManager:GetCurrentChapter()
self.PowerManager = self.TheatreManager:GetPowerManager()
-- 奖励列表
self.DynamicTable = XDynamicTableNormal.New(self.PanelItemScrollView)
self.DynamicTable:SetProxy(XUiGridCommon)
self.DynamicTable:SetDelegate(self)
self.GridReward.gameObject:SetActiveEx(false)
-- 结算数据 XAdventureEnd
self.AdventureEnd = nil
self.RewardItemDatas = nil
self:RegisterUiEvents()
end
-- adventureEnd : XAdventureEnd
function XUiTheatreInfiniteSettleWin:OnStart(adventureEnd, lastChapteEndStoryId)
self.AdventureManager:ShowNextOperation()
self.AdventureEnd = adventureEnd
self.RewardItemDatas = adventureEnd:GetRewardItemDatas()
-- 结局标题
self.TxtTitle.text = adventureEnd:GetTitle()
-- 结局描述
self.TxtEndDetail.text = adventureEnd:GetDesc()
-- 新结局
self.NewTag.gameObject:SetActiveEx(adventureEnd:GetIsNewEnd())
-- 玩家名字
self.TxtPlayerName.text = XPlayer.Name
-- 时间
self.TxtTime.text = XTime.TimestampToGameDateTimeString(XTime.GetServerNowTimestamp(), "yyyy/MM/dd")
-- 章节名字
self.TxtName.text = self.CurrentChapter:GetTitle()
-- 等级
self.TxtLevel.text = self.AdventureManager:GetCurrentLevel()
-- 战力
self.TxtPower.text = self.AdventureManager:GeRoleAveragePower()
-- 角色数量
self.TxtRoleCount.text = #self.AdventureManager:GetCurrentRoles(false)
-- 信物
local currentToken = self.AdventureManager:GetCurrentToken()
self.GridToken.gameObject:SetActiveEx(currentToken ~= nil)
self.TxtNone.gameObject:SetActiveEx(currentToken == nil)
if currentToken then
self.RImgTokenIcon:SetRawImage(currentToken:GetIcon())
self.ImgTokenQuality:SetSprite(currentToken:GetItemQualityIcon())
end
local currentDifficulty = self.AdventureManager:GetCurrentDifficulty()
-- 其他分数节点战斗事件boss重开次数
local scoreDatas = adventureEnd:GetScoreDatas()
self.GridScore.gameObject:SetActiveEx(false)
local scoreData, scoreUiObject
for i = 1, #scoreDatas + 1 do
scoreData = scoreDatas[i]
scoreUiObject = XUiHelper.Instantiate(self.GridScore, self.PanelScore):GetComponent("UiObject")
scoreUiObject:GetObject("TxtName").text = scoreData and scoreData.Name or ""
scoreUiObject:GetObject("TxtCount").text = scoreData and scoreData.Count or ""
scoreUiObject:GetObject("TxtScore").text = scoreData and string.format( "+%s", scoreData.Score)
or string.format( "X%s", currentDifficulty:GetRewardFactor())
scoreUiObject:GetObject("RImgIcon").gameObject:SetActiveEx(i == #scoreDatas + 1)
scoreUiObject:GetObject("RImgIcon"):SetRawImage(currentDifficulty:GetTitleIcon())
scoreUiObject.gameObject:SetActiveEx(true)
end
-- 总分数
self.TxtTotalScore.text = adventureEnd:GetTotalScore()
-- 新记录
self.TxtNewNumber.gameObject:SetActiveEx(adventureEnd:GetIsNewScore())
-- 难度标题
self.RImgDifficultyIcon:SetRawImage(currentDifficulty:GetTitleIcon())
-- 难度掉落概率
self.TxtDifficultyRate.text = XUiHelper.GetText("TheatreDifficultyRateTip"
, currentDifficulty:GetRewardFactor())
-- 刷新核心技能
self:RefreshCoreSkills()
-- 刷新额外技能
self:RefreshAdditionSkills()
-- 刷新获得的奖励
self:RefreshRewardList()
-- 更新解锁的势力
self.PowerManager:UpdateUnlockPowerFavorIds(adventureEnd:GetUnlockPowerFavorIds())
-- 播放最后一章剧情
if lastChapteEndStoryId then
XDataCenter.MovieManager.PlayMovie(lastChapteEndStoryId)
end
end
function XUiTheatreInfiniteSettleWin:RegisterUiEvents()
XUiHelper.RegisterClickEvent(self, self.BtnClose, self.Close)
end
function XUiTheatreInfiniteSettleWin:RefreshCoreSkills()
local coreSkills = self.AdventureManager:GetCoreSkills()
local grid
XUiHelper.RefreshCustomizedList(self.PanelBuffList, self.GridBuff, math.max(#coreSkills, 4)
, function(index, go)
local data = self.AdventureManager:GetCoreSkillByPos(index)
grid = XUiTheatreSkillGrid.New(go):SetData(data, true, index)
if not data then
grid:SetLevel(1)
end
end)
end
function XUiTheatreInfiniteSettleWin:RefreshAdditionSkills()
local skills, powerCountDic = self.AdventureManager:GetAdditionSkillDic()
local grid
XUiHelper.RefreshCustomizedList(self.PanelNormalBuffList, self.GridNormalBuff, math.max(#skills, 7)
, function(index, go)
grid = XUiTheatreSkillGrid.New(go)
grid:SetIcon(XTheatreConfigs.GetPowerConditionSmallIcon(index))
grid:SetLevel(powerCountDic[index] or 0)
end)
end
function XUiTheatreInfiniteSettleWin:RefreshRewardList()
self.DynamicTable:SetDataSource(self.RewardItemDatas)
self.DynamicTable:ReloadDataSync(1)
end
function XUiTheatreInfiniteSettleWin:OnDynamicTableEvent(event, index, grid)
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
grid:Init(self)
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
grid:Refresh(self.DynamicTable.DataSource[index])
end
end
function XUiTheatreInfiniteSettleWin:Close()
self.TheatreManager.UpdateCurrentAdventureManager(nil)
self.Super.Close(self)
end
return XUiTheatreInfiniteSettleWin