PGRData/Script/matrix/xui/xuisummerepisode/XUiGridStarReward.lua

101 lines
No EOL
3.1 KiB
Lua

XUiGridStarReward = XClass(nil, "XUiGridStarReward")
function XUiGridStarReward:Ctor(ui)
self.GameObject = ui.gameObject
self.Transform = ui.transform
XTool.InitUiObject(self)
self.GridCommon.gameObject:SetActive(false)
self.GridList = {}
self.BtnReceive.CallBack = function() self:OnBtnReceiveClick() end
end
-- auto
function XUiGridStarReward:OnBtnReceiveClick()
if not self.Data.IsFinish then
return
end
XDataCenter.FubenSpecialTrainManager.SpecialTrainGetRewardRequest(self.Data.Id, function(reward)
XUiManager.OpenUiObtain(reward, CS.XTextManager.GetText("Award"))
self:Refresh(self.Data, self.ChapterId)
end)
end
function XUiGridStarReward:Refresh(data, chapterId)
self.Data = data
self.ChapterId = chapterId
local totalStar = XDataCenter.FubenSpecialTrainManager.GetSpecialTrainNormalChapterStar(chapterId)
local requireStars = data.RequireStar
local curStars = totalStar > requireStars and requireStars or totalStar
self.TxtGradeStarNums.text = CS.XTextManager.GetText("GradeStarNum", curStars, requireStars)
if data.IsFinish then
self:SetStarsActive(true)
local isGet = XDataCenter.FubenSpecialTrainManager.IsReward(data.Id)
if isGet then
self:SetBtnAlreadyReceive()
else
self:SetBtnActive()
end
else
self:SetStarsActive(false)
self:SetBtnCannotReceive()
end
self:SetupTreasureList()
end
function XUiGridStarReward:SetBtnActive()
self.BtnReceive.gameObject:SetActive(true)
self.ImgAlreadyReceived.gameObject:SetActive(false)
self.ImgCannotReceive.gameObject:SetActive(false)
end
function XUiGridStarReward:SetBtnCannotReceive()
self.BtnReceive.gameObject:SetActive(false)
self.ImgAlreadyReceived.gameObject:SetActive(false)
self.ImgCannotReceive.gameObject:SetActive(true)
end
function XUiGridStarReward:SetBtnAlreadyReceive()
self.BtnReceive.gameObject:SetActive(false)
self.ImgAlreadyReceived.gameObject:SetActive(true)
self.ImgCannotReceive.gameObject:SetActive(false)
end
function XUiGridStarReward:SetStarsActive(flag)
self.ImgGradeStarActive.gameObject:SetActive(flag)
self.ImgGradeStarUnactive.gameObject:SetActive(not flag)
end
-- 初始化
function XUiGridStarReward:SetupTreasureList()
if self.Data == nil or self.Data.RewardId == 0 then
XLog.Error("treasure have no RewardId ")
return
end
local rewards = XRewardManager.GetRewardList(self.Data.RewardId)
for i, item in ipairs(rewards) do
local grid = self.GridList[i]
if not grid then
local ui = CS.UnityEngine.Object.Instantiate(self.GridCommon)
grid = XUiGridCommon.New(self.RootUi, ui)
grid.Transform:SetParent(self.PanelTreasureContent, false)
self.GridList[i] = grid
end
grid:Refresh(item)
grid.GameObject:SetActive(true)
end
for j = 1, #self.GridList do
if j > #rewards then
self.GridList[j].GameObject:SetActive(false)
end
end
end
return XUiGridStarReward