PGRData/Script/matrix/xui/xuiworldboss/XUiWorldBossAttributeArea.lua

227 lines
No EOL
8.3 KiB
Lua

local XUiWorldBossAttributeArea = XLuaUiManager.Register(XLuaUi, "UiWorldBossAttributeArea")
local XUiGridAttributeChapter = require("XUi/XUiWorldBoss/XUiGridAttributeChapter")
local XUiGridBuff = require("XUi/XUiWorldBoss/XUiGridBuff")
local CSTextManagerGetText = CS.XTextManager.GetText
local Normal = CS.UiButtonState.Normal
local Disable = CS.UiButtonState.Disable
function XUiWorldBossAttributeArea:OnStart(areaId)
self.AreaId = areaId
self:SetButtonCallBack()
self:InitArea()
self:InitPanelRegional()
self:InitPanelRewrd()
self:UpdatePanelRewrd()
self.ChapterGrid:UpdateStageList()
self.ChapterGrid:GoToNearestStage()
end
function XUiWorldBossAttributeArea:OnDestroy()
end
function XUiWorldBossAttributeArea:OnEnable()
XDataCenter.WorldBossManager.CheckWorldBossActivityReset()
self:UpdateArea()
self:UpdatePanelChat()
XEventManager.AddEventListener(XEventId.EVENT_WORLDBOSS_SYNCDATA, self.UpdateArea, self)
XEventManager.AddEventListener(XEventId.EVENT_WORLDBOSS_REPORT, self.UpdatePanelChat, self)
end
function XUiWorldBossAttributeArea:OnDisable()
XEventManager.RemoveEventListener(XEventId.EVENT_WORLDBOSS_SYNCDATA, self.UpdateArea, self)
XEventManager.RemoveEventListener(XEventId.EVENT_WORLDBOSS_REPORT, self.UpdatePanelChat, self)
end
function XUiWorldBossAttributeArea:SetButtonCallBack()
self.BtnBack.CallBack = function()
self:OnBtnBackClick()
end
self.BtnMainUi.CallBack = function()
self:OnBtnMainUiClick()
end
self.BtnRank.CallBack = function()
self:OnBtnRankClick()
end
self.BtnTask.CallBack = function()
self:OnBtnTaskClick()
end
self.PanelChat:GetObject("BtnWarReport").CallBack = function()
self:OnBtnWarReportClick()
end
self.PanelRewrd:GetObject("BtnTreasure").CallBack = function()
self:OnBtnTreasureClick()
end
self.PanelShop:GetObject("BtnShop").CallBack = function()
self:OnBtnShopClick()
end
self:BindHelpBtn(self.BtnActDesc, "WorldBossHelp")
end
function XUiWorldBossAttributeArea:InitArea()
local attributeArea = XDataCenter.WorldBossManager.GetAttributeAreaById(self.AreaId)
local prefabName = attributeArea:GetPrefabName()
local gameObject = self.PanelChapter:LoadPrefab(prefabName)
if gameObject == nil or not gameObject:Exist() then
return
end
self.ChapterGrid = XUiGridAttributeChapter.New(gameObject, self.AreaId)
self.ChapterGrid.Transform:SetParent(self.PanelChapter, false)
end
function XUiWorldBossAttributeArea:UpdatePanelShop()
local worldBossActivity = XDataCenter.WorldBossManager.GetCurWorldBossActivity()
local shopCurrencyId = worldBossActivity:GetShopCurrencyId()
local moneyItem = XUiGridCommon.New(self, self.PanelShop:GetObject("MoneyItemGrid"))
moneyItem:Refresh(shopCurrencyId)
local moneyCount = XDataCenter.ItemManager.GetCount(shopCurrencyId)
self.PanelShop:GetObject("MoneyNum").text = moneyCount
self.PanelShop.gameObject:SetActiveEx(false)
end
function XUiWorldBossAttributeArea:InitPanelRegional()
local worldBossActivity = XDataCenter.WorldBossManager.GetCurWorldBossActivity()
local attributeArea = XDataCenter.WorldBossManager.GetAttributeAreaById(self.AreaId)
local nowTime = XTime.GetServerNowTimestamp()
local activityTime = XUiHelper.GetTime(worldBossActivity:GetEndTime() - nowTime, XUiHelper.TimeFormatType.ACTIVITY)
local buffParent = self.PanelRegional:GetObject("BuffContent")
local buffObj = self.PanelRegional:GetObject("BtnBossBuff")
local buffIds = attributeArea:GetBuffIds()
self.PanelRegional:GetObject("TextTime").text = activityTime
self.PanelRegional:GetObject("TxtTName").text = attributeArea:GetName()
self.PanelRegional:GetObject("AreaDesc").text = attributeArea:GetAreaDesc()
buffObj.gameObject:SetActiveEx(false)
if buffIds then
for _,id in pairs(buffIds) do
local ui = CS.UnityEngine.Object.Instantiate(buffObj,buffParent)
local grid = XUiGridBuff.New(ui,false)
local buffData = XDataCenter.WorldBossManager.GetWorldBossBuffById(id)
grid:UpdateData(buffData)
grid.GameObject:SetActiveEx(true)
end
end
end
function XUiWorldBossAttributeArea:InitPanelRewrd()
local attributeArea = XDataCenter.WorldBossManager.GetAttributeAreaById(self.AreaId)
local rewrdParent = self.PanelRewrd:GetObject("PanelBfrtRewrds")
local rewrdObj = self.PanelRewrd:GetObject("GridCommonPopUp")
local rewrdId = attributeArea:GetFinishReward()
local rewardList = XRewardManager.GetRewardList(rewrdId)
rewrdObj.gameObject:SetActiveEx(false)
if rewardList then
for _,reward in pairs(rewardList) do
local ui = CS.UnityEngine.Object.Instantiate(rewrdObj,rewrdParent)
local grid = XUiGridCommon.New(self,ui)
grid:Refresh(reward)
grid.GameObject:SetActiveEx(true)
end
end
end
function XUiWorldBossAttributeArea:UpdatePanelRewrd()
local worldBossActivity = XDataCenter.WorldBossManager.GetCurWorldBossActivity()
local attributeArea = XDataCenter.WorldBossManager.GetAttributeAreaById(self.AreaId)
local IsCanGet = attributeArea:GetIsAreaFinish()
local IsGeted = attributeArea:GetIsRewardGeted()
local finishCount = attributeArea:GetFinishStageCount()
local stageCount = #attributeArea:GetStageIds()
self.PanelRewrd:GetObject("TxtCondition").text = CSTextManagerGetText("WorldBossAttributeStageRewrdHint", finishCount, stageCount)
self.PanelRewrd:GetObject("TxtCondition").gameObject:SetActiveEx(not IsCanGet)
self.PanelRewrd:GetObject("BtnTreasure").gameObject:SetActiveEx(IsCanGet)
self.PanelRewrd:GetObject("BtnTreasure"):SetButtonState((not IsGeted and IsCanGet) and Normal or Disable)
end
function XUiWorldBossAttributeArea:UpdatePanelChat()
local reportData = XDataCenter.WorldBossManager.GetWorldBossNewReport()
if not reportData then
return
end
local playerInfo = reportData.PlayerInfo
local reportId = reportData.ReportId
local reportCfg = XWorldBossConfigs.GetReportTemplatesById(reportId)
local reportType = XDataCenter.WorldBossManager.GetFightReportTypeById(reportId)
local IsSystemReport = reportType == XWorldBossConfigs.ReportType.System
local nameText = ""
local wordText = ""
if IsSystemReport then
nameText = CSTextManagerGetText("WorldBossReportName")
wordText = reportCfg.Message
else
nameText = playerInfo.PlayerName
local score = playerInfo.Score
wordText = string.format(reportCfg.Message,nameText,score)
end
self.PanelChat:GetObject("TxtMessageLabel").gameObject:SetActiveEx(true)
self.PanelChat:GetObject("TxtMessageContent").text =string.format("%s:%s", nameText, wordText)
end
function XUiWorldBossAttributeArea:UpdateArea()
self.ChapterGrid:UpdateStageList()
self:UpdatePanelRewrd()
self:UpdatePanelShop()
self:SetActivityInfo()
end
function XUiWorldBossAttributeArea:SetActivityInfo()
local IsHaveRed = XDataCenter.WorldBossManager.CheckAnyTaskFinished()
self.BtnTask:ShowReddot(IsHaveRed)
end
function XUiWorldBossAttributeArea:OnBtnBackClick()
self:Close()
end
function XUiWorldBossAttributeArea:UpdatePhasesReward()
self.UpdatePanelPhasesReward()
end
function XUiWorldBossAttributeArea:OnBtnMainUiClick()
XLuaUiManager.RunMain()
end
function XUiWorldBossAttributeArea:OnBtnRankClick()
XLuaUiManager.Open("UiWorldBossAreaRank", self.AreaId)
end
function XUiWorldBossAttributeArea:OnBtnTaskClick()
XLuaUiManager.Open("UiWorldBossTask")
end
function XUiWorldBossAttributeArea:OnBtnWarReportClick()
XLuaUiManager.Open("UiChatUiWorldBoss")
end
function XUiWorldBossAttributeArea:OnBtnTreasureClick()
local attributeArea = XDataCenter.WorldBossManager.GetAttributeAreaById(self.AreaId)
local IsCanGet = attributeArea:GetIsAreaFinish()
local IsGeted = attributeArea:GetIsRewardGeted()
if not IsCanGet or IsGeted then
return
end
XDataCenter.WorldBossManager.GetAttributeAreaReward(self.AreaId, function ()
self:UpdatePanelRewrd()
end)
end
function XUiWorldBossAttributeArea:OnBtnShopClick()
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.ShopCommon) then
XLuaUiManager.Open("UiShop", XShopManager.ShopType.WorldBoss)
end
end