PGRData/Script/matrix/xui/xuiprequel/XUiPanelChallengeMode.lua

214 lines
No EOL
7.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.

XUiPanelChallengeMode = XClass(nil, "XUiPanelChallengeMode")
local ANICHALLENGEMODEBEGIN = "AniChallengeModeBegin"
local ChallengeChapterTimer = nil
local ChallengeChapterInterval = 1000
function XUiPanelChallengeMode:Ctor(ui, rootUi)
self.GameObject = ui.gameObject
self.Transform = ui.transform
self.RootUi = rootUi
self:InitAutoScript()
self.ChallengeTab = XUiPanelChallengeTab.New(self.PanelChallengeTab, self.RootUi)
self.ChallengeList = {}
end
-- auto
-- Automatic generation of code, forbid to edit
function XUiPanelChallengeMode:InitAutoScript()
self:AutoInitUi()
self:AutoAddListener()
end
function XUiPanelChallengeMode:AutoInitUi()
self.PanelMode = self.Transform:Find("PanelMode")
self.BtnDetailMask = self.Transform:Find("PanelMode/BtnDetailMask"):GetComponent("Button")
self.PanelPrequelStages = self.Transform:Find("PanelMode/PanelPrequelStages")
self.TxtMode = self.Transform:Find("PanelMode/PanelBt/TxtMode"):GetComponent("Text")
self.PanelLeft = self.Transform:Find("PanelMode/PanelLeft")
self.PanelChallengeTab = self.Transform:Find("PanelMode/PanelLeft/PanelChallengeTab")
self.BtnSwitch2Regional = self.Transform:Find("PanelMode/PanelBt/BtnSwitch2Regional"):GetComponent("Button")
self.PanelShop = self.Transform:Find("PanelMode/PanelShop")
self.BtnShop = self.Transform:Find("PanelMode/PanelShop/BtnShop"):GetComponent("Button")
self.PanelReset = self.Transform:Find("PanelMode/PanelReset")
self.PanelCenter = self.Transform:Find("PanelMode/PanelReset/PanelCenter")
self.TxtResetTime = self.Transform:Find("PanelMode/PanelReset/PanelCenter/TxtResetTime"):GetComponent("Text")
self.PanelOpenItem = self.Transform:Find("PanelMode/PanelOpenItem")
self.TxtTotalNum = self.Transform:Find("PanelMode/PanelOpenItem/TxtTotalNum"):GetComponent("Text")
self.RImgCostIcon = self.Transform:Find("PanelMode/PanelOpenItem/RImgCostIcon"):GetComponent("RawImage")
self.BtnActDesc = self.Transform:Find("PanelMode/BtnActDesc"):GetComponent("Button")
end
function XUiPanelChallengeMode:RegisterClickEvent(uiNode, func)
if func == nil then
XLog.Error("XUiPanelChallengeMode:RegisterClickEvent函数参数错误参数func不能为空")
return
end
if type(func) ~= "function" then
XLog.Error("XUiPanelChallengeMode:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
end
local listener = function(...)
func(self, ...)
end
CsXUiHelper.RegisterClickEvent(uiNode, listener)
end
function XUiPanelChallengeMode:AutoAddListener()
self:RegisterClickEvent(self.BtnDetailMask, self.OnBtnDetailMaskClick)
self:RegisterClickEvent(self.BtnSwitch2Regional, self.OnBtnSwitch2RegionalClick)
self:RegisterClickEvent(self.BtnShop, self.OnBtnShopClick)
self:RegisterClickEvent(self.BtnActDesc, self.OnBtnActDescClick)
end
-- auto
function XUiPanelChallengeMode:OnBtnDetailMaskClick()
self:OnClosePrequelDetail()
end
function XUiPanelChallengeMode:OnClosePrequelDetail()
self.RootUi:OnClosePrequelDetail()
end
function XUiPanelChallengeMode:OnBtnSwitch2RegionalClick()
self:OnClosePrequelDetail()
local keyX = string.format("%s%d%d", "PrequelLastSwitchPanelType", XPlayer.Id, self.CurrentCover.CoverId)
local panelType = 1
CS.UnityEngine.PlayerPrefs.SetInt(keyX, panelType)
self.RootUi:Switch2Regional(self.CurrentCover)
self:RemoveTimer()
self:RemoveChallengeTimer()
end
function XUiPanelChallengeMode:OnBtnShopClick()
if self.CurrentCover then
if XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.ShopCommon) then
XLuaUiManager.Open("UiShop", XShopManager.ShopType.Activity)
end
end
end
function XUiPanelChallengeMode:OnBtnActDescClick()
if self.CurrentCover then
self:OnClosePrequelDetail()
local coverInfo = XPrequelConfigs.GetPrequelCoverInfoById(self.CurrentCover.CoverId)
local description = string.gsub(coverInfo.CoverDescription, "\\n", "\n")
XUiManager.UiFubenDialogTip("", description)
end
end
function XUiPanelChallengeMode:InitChallengeTab()
self.ChallengeTab:UpdateTabs(self.CurrentCover)
end
function XUiPanelChallengeMode:UpdateChallengeStages()
if not self.CurrentCover then return end
for _, v in pairs(self.ChallengeList) do
v:Hide()
end
local prefabName = self.CurrentCover.CoverVal.ChallengePrefabName
if not prefabName or prefabName == "" then
XLog.Error("XUiPanelChallengeMode:UpdateChallengeStages error : prefabName not found " .. tostring(prefabName))
return
end
self.ChallengeStageDatas = {}
for i=1, #self.CurrentCover.CoverVal.ChallengeStage do
table.insert(self.ChallengeStageDatas, {
CoverId = self.CurrentCover.CoverId,
ChallengeStage = self.CurrentCover.CoverVal.ChallengeStage[i],
ChallengeConsumeItem = self.CurrentCover.CoverVal.ChallengeConsumeItem[i],
ChallengeConsumeCount = self.CurrentCover.CoverVal.ChallengeConsumeCount[i],
ChallengeIndex = i,
})
end
local asset = self.PanelPrequelStages:LoadPrefab(prefabName)
if asset == nil or (not asset:Exist()) then
XLog.Error("当前prefab不存在" .. tostring(prefabName))
return
end
local grid = XUiPanelChallengeChapter.New(asset, self.RootUi)
grid.Transform:SetParent(self.PanelPrequelStages, false)
grid:UpdateChallengeGrid(self.ChallengeStageDatas)
grid:Show()
self.CurrentChallengeGrid = grid
end
function XUiPanelChallengeMode:OnDetailClosed()
if self.CurrentChallengeGrid then
self.CurrentChallengeGrid:OnPrequelDetailClosed()
end
end
-- [刷新挑战消耗]
function XUiPanelChallengeMode:UpdateCostItem()
local itemId = self.CurrentCover.CoverVal.ChallengeConsumeItem[1]
local itemNum = XDataCenter.ItemManager.GetCount(itemId)
self.TxtTotalNum.text = itemNum
self.RImgCostIcon:SetRawImage(XDataCenter.ItemManager.GetItemIcon(itemId))
end
function XUiPanelChallengeMode:OnRefresh(coverData)
self.CurrentCover = coverData
self.RootUi:PlayAnimation(ANICHALLENGEMODEBEGIN, function()
self.RootUi:SetChallengeAnimBegin(false)
end,
function()
self.RootUi:SetChallengeAnimBegin(true)
self:InitChallengeTab()
self:UpdateChallengeStages()
self:UpdateCostItem()
self:AddTimer()
self:AddChallengeTimer()
end)
end
function XUiPanelChallengeMode:UpdateTimer()
self:AddTimer()
end
function XUiPanelChallengeMode:AddTimer()
local checkpointTime = XDataCenter.PrequelManager.GetNextCheckPointTime()
local remainTime = checkpointTime - XTime.GetServerNowTimestamp()
if remainTime > 0 then
XCountDown.CreateTimer(self.GameObject.name, remainTime)
XCountDown.BindTimer(self.GameObject, self.GameObject.name, function(v)
self.TxtResetTime.text = XUiHelper.GetTime(v, XUiHelper.TimeFormatType.SHOP)
if v == 0 then self:RemoveTimer() end
end)
end
end
function XUiPanelChallengeMode:RemoveTimer()
XCountDown.RemoveTimer(self.GameObject.name)
end
function XUiPanelChallengeMode:AddChallengeTimer()
self:RemoveChallengeTimer()
ChallengeChapterTimer = XScheduleManager.ScheduleForever(function()
self:UpdateChapterItems()
end, ChallengeChapterInterval)
end
function XUiPanelChallengeMode:RemoveChallengeTimer()
if ChallengeChapterTimer then
XScheduleManager.UnSchedule(ChallengeChapterTimer)
ChallengeChapterTimer = nil
end
end
function XUiPanelChallengeMode:UpdateChapterItems()
if self.CurrentChallengeGrid then
self.CurrentChallengeGrid:UpdateItems()
end
end
return XUiPanelChallengeMode