126 lines
5.3 KiB
Lua
126 lines
5.3 KiB
Lua
|
XUiPanelUnlockChallenge = XClass(nil, "XUiPanelUnlockChallenge")
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:Ctor(ui, rootUi)
|
|||
|
self.GameObject = ui.gameObject
|
|||
|
self.Transform = ui.transform
|
|||
|
self.RootUi = rootUi
|
|||
|
self:InitAutoScript()
|
|||
|
self.RewardList = {}
|
|||
|
self.GridCommon.gameObject:SetActive(false)
|
|||
|
end
|
|||
|
|
|||
|
-- auto
|
|||
|
-- Automatic generation of code, forbid to edit
|
|||
|
function XUiPanelUnlockChallenge:InitAutoScript()
|
|||
|
self:AutoInitUi()
|
|||
|
self:AutoAddListener()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:AutoInitUi()
|
|||
|
self.ImgMask = self.Transform:Find("ImgMask"):GetComponent("Image")
|
|||
|
self.PanelMain = self.Transform:Find("PanelMain")
|
|||
|
self.TxtUnlockTitle = self.Transform:Find("PanelMain/TxtUnlockTitle"):GetComponent("Text")
|
|||
|
self.PanelInfo = self.Transform:Find("PanelMain/PanelInfo")
|
|||
|
self.TxtTitle = self.Transform:Find("PanelMain/PanelInfo/TxtTitle"):GetComponent("Text")
|
|||
|
self.TxtCheckPoint = self.Transform:Find("PanelMain/PanelInfo/TxtCheckPoint"):GetComponent("Text")
|
|||
|
self.RImgCheckPoint = self.Transform:Find("PanelMain/PanelInfo/RImgCheckPoint"):GetComponent("RawImage")
|
|||
|
self.GridCommon = self.Transform:Find("PanelMain/RewardListList/Viewport/Content/GridCommon")
|
|||
|
self.RImgIcon = self.Transform:Find("PanelMain/RewardListList/Viewport/Content/GridCommon/RImgIcon"):GetComponent("RawImage")
|
|||
|
self.PanelChallengeTimes = self.Transform:Find("PanelMain/PanelChallengeTimes")
|
|||
|
self.TxtChallengeTimes = self.Transform:Find("PanelMain/PanelChallengeTimes/TxtChallengeTimes"):GetComponent("Text")
|
|||
|
self.PanelCost = self.Transform:Find("PanelMain/PanelCost")
|
|||
|
self.PanelMoney = self.Transform:Find("PanelMain/PanelCost/PanelMoney")
|
|||
|
self.RImgCost = self.Transform:Find("PanelMain/PanelCost/PanelMoney/RImgCost"):GetComponent("RawImage")
|
|||
|
self.TxtCostNum = self.Transform:Find("PanelMain/PanelCost/PanelMoney/TxtCostNum"):GetComponent("Text")
|
|||
|
self.BtnUnlock = self.Transform:Find("PanelMain/PanelCost/BtnUnlock"):GetComponent("Button")
|
|||
|
self.BtnMask = self.Transform:Find("BtnMask"):GetComponent("Button")
|
|||
|
self.PanelBgA = self.Transform:Find("PanelBg")
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:RegisterClickEvent(uiNode, func)
|
|||
|
if func == nil then
|
|||
|
XLog.Error("XUiPanelUnlockChallenge:RegisterClickEvent函数参数错误:参数func不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if type(func) ~= "function" then
|
|||
|
XLog.Error("XUiPanelUnlockChallenge:RegisterClickEvent函数错误, 参数func需要是function类型, func的类型是" .. type(func))
|
|||
|
end
|
|||
|
|
|||
|
local listener = function(...)
|
|||
|
func(self, ...)
|
|||
|
end
|
|||
|
|
|||
|
CsXUiHelper.RegisterClickEvent(uiNode, listener)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:AutoAddListener()
|
|||
|
self:RegisterClickEvent(self.BtnUnlock, self.OnBtnUnlockClick)
|
|||
|
self:RegisterClickEvent(self.BtnMask, self.OnBtnMaskClick)
|
|||
|
end
|
|||
|
-- auto
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:OnBtnMaskClick()
|
|||
|
self.RootUi:PlayAnimation("AniUnlockChallengeEnd", function()
|
|||
|
self.GameObject:SetActive(false)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:OnBtnUnlockClick()
|
|||
|
if not self.CurrentChallengeStage then return end
|
|||
|
|
|||
|
XDataCenter.PrequelManager.UnlockPrequelChallengeRequest(self.CurrentChallengeStage.CoverId, self.CurrentChallengeStage.ChallengeIndex, self.CurrentChallengeStage.ChallengeStage, function()
|
|||
|
self.GameObject:SetActive(false)
|
|||
|
self.RootUi:RefreshChallenge()
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:RefreshWithAnim(challengeStage)
|
|||
|
self.RootUi:PlayAnimation("AniUnlockChallengeBegin")
|
|||
|
self:RefreshDatas(challengeStage)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:RefreshDatas(challengeStage)
|
|||
|
self.CurrentChallengeStage = challengeStage
|
|||
|
local stageId = challengeStage.ChallengeStage
|
|||
|
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
|
|||
|
self.TxtCheckPoint.text = stageCfg.Name
|
|||
|
self.RImgCheckPoint:SetRawImage(stageCfg.Icon)
|
|||
|
self.TxtChallengeTimes.text = stageCfg.MaxChallengeNums or 0
|
|||
|
|
|||
|
self.RImgCost:SetRawImage(XDataCenter.ItemManager.GetItemIcon(self.CurrentChallengeStage.ChallengeConsumeItem))
|
|||
|
local ownNum = XDataCenter.ItemManager.GetCount(self.CurrentChallengeStage.ChallengeConsumeItem)
|
|||
|
local needNum = self.CurrentChallengeStage.ChallengeConsumeCount
|
|||
|
local currentNum = (ownNum >= needNum) and needNum or XPrequelConfigs.GetNotEnoughCost(needNum)
|
|||
|
self.TxtCostNum.text = currentNum
|
|||
|
self:UpdateRewards()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPanelUnlockChallenge:UpdateRewards()
|
|||
|
local stageId = self.CurrentChallengeStage.ChallengeStage
|
|||
|
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
|
|||
|
local rewardId = stageCfg.FirstRewardShow
|
|||
|
local rewards = XRewardManager.GetRewardList(rewardId)
|
|||
|
|
|||
|
if not rewards then return end
|
|||
|
local rewardCount = #rewards
|
|||
|
for i=1, rewardCount do
|
|||
|
local xcommon = self.RewardList[i]
|
|||
|
if not xcommon then
|
|||
|
local ui = CS.UnityEngine.Object.Instantiate(self.GridCommon.gameObject)
|
|||
|
ui.transform:SetParent(self.GridCommon.parent, false)
|
|||
|
ui.gameObject:SetActive(true)
|
|||
|
xcommon = XUiGridCommon.New(self.RootUi, ui)
|
|||
|
table.insert(self.RewardList, i, xcommon)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
for i=1, #self.RewardList do
|
|||
|
self.RewardList[i].GameObject:SetActive(i <= rewardCount)
|
|||
|
if i <= rewardCount then
|
|||
|
self.RewardList[i]:Refresh(rewards[i])
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return XUiPanelUnlockChallenge
|