172 lines
5.7 KiB
Lua
172 lines
5.7 KiB
Lua
-- 竞技场:赛季奖励
|
|
local ArenaSeasonRewardUI = class("ArenaSeasonRewardUI", BaseUI)
|
|
local MAX_SCROLL_SHOW_COUNT = 10
|
|
|
|
function ArenaSeasonRewardUI:isFullScreen()
|
|
return false
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:showCommonBG()
|
|
return false
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:getPrefabPath()
|
|
return "assets/prefabs/ui/arena/arena_season_reward_ui.prefab"
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:onPressBackspace()
|
|
self:closeUI()
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:ctor()
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:onCover()
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:onReshow()
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:onClose()
|
|
if self.seasonChangeSid then
|
|
self:unscheduleGlobal(self.seasonChangeSid)
|
|
self.seasonChangeSid = nil
|
|
end
|
|
if self.spineGrading then
|
|
self.spineGrading:destroy()
|
|
self.spineGrading = nil
|
|
end
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:onLoadRootComplete()
|
|
local uiMap = self.root:genAllChildren()
|
|
|
|
self.txTitle = uiMap["arena_season_reward_ui.bg.tx_title"]
|
|
self.closeBtn = uiMap["arena_season_reward_ui.bg.close_btn"]
|
|
-- 赛季奖励
|
|
self.seasonReward = uiMap["arena_season_reward_ui.bg.season_reward"]
|
|
self.txDesc = uiMap["arena_season_reward_ui.bg.season_reward.tx_desc"]
|
|
self.txTime = uiMap["arena_season_reward_ui.bg.season_reward.countdown.tx_time"]
|
|
self.seasonRewardComp = uiMap["arena_season_reward_ui.bg.season_reward.reward_list"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
|
|
-- 领取奖励
|
|
self.getReward = uiMap["arena_season_reward_ui.bg.last_reward"]
|
|
self.txSeason = uiMap["arena_season_reward_ui.bg.last_reward.tx_season"]
|
|
self.spineRoot = uiMap["arena_season_reward_ui.bg.last_reward.spine_root"]
|
|
self.txGrading = uiMap["arena_season_reward_ui.bg.last_reward.tx_grading"]
|
|
self.rewardList = uiMap["arena_season_reward_ui.bg.last_reward.rewards"]
|
|
self.getRewardComp = self.rewardList:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
|
|
self.btnGet = uiMap["arena_season_reward_ui.bg.last_reward.btn_get"]
|
|
self.txGet = uiMap["arena_season_reward_ui.bg.last_reward.btn_get.tx_get"]
|
|
|
|
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_11))
|
|
|
|
self.closeBtn:addClickListener(function()
|
|
self:closeUI()
|
|
end)
|
|
self.btnGet:addClickListener(function()
|
|
ModuleManager.ArenaManager:reqLastSeasonReward()
|
|
end)
|
|
self:bind(DataManager.ArenaData, "isDirty", function()
|
|
self:closeUI()
|
|
end)
|
|
self:addEventListener(EventManager.CUSTOM_EVENT.ARENA_SEASON_END, function()
|
|
self:closeUI()
|
|
end)
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:onRefresh()
|
|
if DataManager.ArenaData:hasSeasonReward() then
|
|
self:showGetReward()
|
|
else
|
|
self:showSeasonReward()
|
|
end
|
|
end
|
|
|
|
-- 显示赛季奖励
|
|
function ArenaSeasonRewardUI:showSeasonReward()
|
|
self.seasonReward:setActive(true)
|
|
self.getReward:setActive(false)
|
|
|
|
self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_12, DataManager.ArenaData:getSeason()))
|
|
|
|
if self.seasonChangeSid then
|
|
self:unscheduleGlobal(self.seasonChangeSid)
|
|
end
|
|
self:refreshCountdown()
|
|
self.seasonChangeSid = self:scheduleGlobal(function()
|
|
self:refreshCountdown()
|
|
end, 1)
|
|
|
|
local ids = DataManager.ArenaData:getGradingIdList()
|
|
table.sort(ids, function(a, b) return a > b end)
|
|
self.seasonRewardComp:addInitCallback(function()
|
|
return "app/ui/arena/cell/arena_season_reward_cell"
|
|
end)
|
|
self.seasonRewardComp:addRefreshCallback(function(index, cell)
|
|
cell:refresh(ids[index])
|
|
end)
|
|
self.seasonRewardComp:clearCells()
|
|
self.seasonRewardComp:refillCells(#ids)
|
|
end
|
|
|
|
function ArenaSeasonRewardUI:refreshCountdown()
|
|
self.txTime:setText(Time:formatNumTimeStr(DataManager.ArenaData:getRemainSeasonTime()))
|
|
end
|
|
|
|
-- 显示领取奖励
|
|
function ArenaSeasonRewardUI:showGetReward()
|
|
self.seasonReward:setActive(false)
|
|
self.getReward:setActive(true)
|
|
|
|
local lastId = DataManager.ArenaData:getLastGradingId()
|
|
|
|
self.txSeason:setText(I18N:getGlobalText(I18N.GlobalConst.ARENA_DESC_13, DataManager.ArenaData:getSeason() - 1))
|
|
self.txGrading:setText(DataManager.ArenaData:getGradingName(lastId))
|
|
self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM))
|
|
if self.spineGrading then
|
|
self.spineGrading:destroy()
|
|
self.spineGrading = nil
|
|
end
|
|
SpineManager:loadUISpineWidgetAsync(DataManager.ArenaData:getGradingIconName(lastId).."_spine", self.spineRoot, function(spineObject)
|
|
self.spineGrading = spineObject
|
|
self.spineGrading:setSkin(DataManager.ArenaData:getGradingNumName(lastId))
|
|
self.spineGrading:playAnimComplete("born", false, false, function()
|
|
self.spineGrading:playAnim("idle", true, false)
|
|
end)
|
|
end)
|
|
|
|
self.btnGet:addRedPoint(110, 35, 1)
|
|
|
|
local rewards = DataManager.ArenaData:getSeasonRewards(lastId)
|
|
local rewardCount = #rewards
|
|
self.getRewardComp:addInitCallback(function()
|
|
return GConst.TYPEOF_LUA_CLASS.REWARD_CELL
|
|
end)
|
|
self.getRewardComp:addRefreshCallback(function(index, cell)
|
|
cell:refreshByConfig(rewards[index])
|
|
end)
|
|
self.getRewardComp:clearCells()
|
|
|
|
if rewardCount > MAX_SCROLL_SHOW_COUNT then
|
|
local comp = self.rewardList:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT)
|
|
comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic
|
|
self.getRewardComp:setPerLineNum(5)
|
|
self.rewardList:setSizeDeltaX(560)
|
|
else
|
|
local comp = self.rewardList:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_SCROLL_RECT)
|
|
comp.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Clamped
|
|
if rewardCount >= 5 then
|
|
self.getRewardComp:setPerLineNum(5)
|
|
self.rewardList:setSizeDeltaX(560)
|
|
elseif rewardCount <= 0 then
|
|
self.getRewardComp:setPerLineNum(1)
|
|
self.rewardList:setSizeDeltaX(560)
|
|
else
|
|
self.getRewardComp:setPerLineNum(rewardCount)
|
|
self.rewardList:setSizeDeltaX(112 * rewardCount)
|
|
end
|
|
end
|
|
self.getRewardComp:refillCells(rewardCount)
|
|
end
|
|
|
|
return ArenaSeasonRewardUI |