c1_lua/lua/app/ui/collection/collection_ui.lua
2023-08-09 16:47:03 +08:00

207 lines
6.9 KiB
Lua

local CollectionUI = class("CollectionUI", BaseUI)
function CollectionUI:isFullScreen()
return true
end
function CollectionUI:showCommonBG()
return false
end
function CollectionUI:getPrefabPath()
return "assets/prefabs/ui/collection/collection_ui.prefab"
end
function CollectionUI:onPressBackspace()
self:closeUI()
end
function CollectionUI:ctor(params)
self.collectType = params
end
function CollectionUI:onCover()
end
function CollectionUI:onReshow()
end
function CollectionUI:onClose()
if self.animFly then
self.animFly:Kill()
self.animFly = nil
end
if self.showRewardNodeSid then
self:unscheduleGlobal(self.showRewardNodeSid)
end
end
function CollectionUI:onLoadRootComplete()
local uiMap = self.root:genAllChildren()
self.txTitle = uiMap["collect_ui.tx_title"]
self.btnHelp = uiMap["collect_ui.tx_title.btn_help"]
self.btnClose = uiMap["collect_ui.banner.btn_close"]
self.scrollrectComp = uiMap["collect_ui.scrollrect"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
self.rewardsNode = uiMap["collection_ui.rewards"]
self.txTotalValue = uiMap["collect_ui.rewards.btn_rewards.tx_total"]
self.btnGet = uiMap["collection_ui.rewards.btn_get"]
self.imgGet = uiMap["collection_ui.rewards.btn_get.img_icon"]
self.txGet = uiMap["collection_ui.rewards.btn_get.tx_get"]
self.txDesc = uiMap["collect_ui.rewards.tx_desc"]
self.txStage = uiMap["collect_ui.rewards.tx_stage"]
self.imgProg = uiMap["collect_ui.rewards.prog.img_prog"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)
self.btnRewards = uiMap["collection_ui.rewards.point"]
self.flyIcon = uiMap["collection_ui.fly_icon"]
-- 英雄
self.btnHero = uiMap["collection_ui.banner.btn_hero"]
self.selectHero = uiMap["collection_ui.banner.btn_hero.select"]
self.txHero = uiMap["collection_ui.banner.btn_hero.tx_hero"]
-- 皮肤
self.btnSkin = uiMap["collection_ui.banner.btn_skin"]
self.selectSkin = uiMap["collection_ui.banner.btn_skin.select"]
self.txSkin = uiMap["collection_ui.banner.btn_skin.tx_skin"]
self.txHero:setText(I18N:getGlobalText(I18N.GlobalConst.MAIN_BTN_2))
self.txSkin:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN))
self.scrollrectComp:addInitCallback(function()
return "app/ui/collection/cell/collection_cell"
end)
self.scrollrectComp:addRefreshCallback(function(index, cell)
cell:refresh(self.collectType, self.collectList[index])
end)
self.btnRewards:addClickListener(function()
UIManager:showUI("app/ui/collection/collection_reward_ui", self.collectType)
end)
self.btnGet:addClickListener(function()
ModuleManager.CollectionManager:reqPointReward()
end)
self.btnClose:addClickListener(function()
self:closeUI()
end)
self.btnHelp:addClickListener(function()
local params = {
type = GConst.TipsConst.HELP_TIPS_TYPE.ARENA,
title = I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_11),
desc = I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_7),
}
ModuleManager.TipsManager:showHelpTips(params)
end)
self.btnHero:addClickListener(function()
self:showHeroCollect()
end)
self.btnSkin:addClickListener(function()
self:showSkinCollect()
end)
self:bind(DataManager.CollectionData, "isDirty", function()
self:refreshCollectPoint()
self:showFlyAnim()
end)
self:addEventListener(EventManager.CUSTOM_EVENT.COLLECTION_CLICK_GET_POINT, function(pos)
self.flyFromPos = pos
end)
end
function CollectionUI:onRefresh()
if self.collectType == GConst.CollectionConst.TYPE.HERO then
self:showHeroCollect()
elseif self.collectType == GConst.CollectionConst.TYPE.SKIN then
self:showSkinCollect()
end
self:showCollectList()
self:refreshCollectPoint()
end
function CollectionUI:showCollectList()
self.collectList = DataManager.CollectionData:getCollectList(self.collectType)
self.scrollrectComp:clearCells()
self.scrollrectComp:refillCells(#self.collectList)
self.flyIcon:setActive(false)
end
-- 刷新收集点数状态
function CollectionUI:refreshCollectPoint()
local showId = DataManager.CollectionData:getCanGetOrCollectingTargetId()
-- Logger.logHighlight("展示档位:"..showId)
if showId then
local target = DataManager.CollectionData:getTargetPoint(showId)
local owned = DataManager.CollectionData:getTargetOwnedPoint(showId)
self.txStage:setText(owned.."/"..target)
self.imgProg.value = owned / target
if DataManager.CollectionData:isMeetTargetPoint(showId) then
-- 可领取
self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM))
self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_9))
self.imgGet:setSprite(GConst.ATLAS_PATH.HERO, "hero_dec_7")
self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_2")
self.btnGet:setTouchEnable(true)
else
-- 进行中
self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_3))
self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_4, target - owned))
self.imgGet:setSprite(GConst.ATLAS_PATH.HERO, "hero_dec_8")
self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2")
self.btnGet:setTouchEnable(false)
end
else
-- 已全部领完所有目标
self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.BTN_CLAIM))
self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_8))
self.btnGet:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_2")
self.btnGet:setTouchEnable(false)
end
local total = DataManager.CollectionData:getTotalCollectPoint()
local cur = DataManager.CollectionData:getCurCollectPoint()
self.txTotalValue:setText(cur.."/"..total)
GFunc.centerImgAndTx(self.imgGet, self.txGet, 5)
end
function CollectionUI:showFlyAnim()
if not self.flyFromPos then
return
end
self.flyIcon:setLocalScale(0.4, 0.4, 0.4)
self.flyIcon:setPosition(self.flyFromPos.x, self.flyFromPos.y, self.flyFromPos.z)
self.flyIcon:setActive(true)
if self.animFly then
self.animFly:Kill()
self.animFly = nil
end
self.animFly = self.root:createBindTweenSequence()
self.animFly:Insert(0, self.flyIcon:getTransform():DOScale(0.8, 0.2))
self.animFly:Insert(0.2, self.flyIcon:getTransform():DOMove(self.btnRewards:getPosition(), 1))
self.animFly:Insert(0.4, self.flyIcon:getTransform():DOScale(0.4, 0.4))
self.animFly:OnComplete(function()
self.flyIcon:setActive(false)
self.flyFromPos = nil
self.animFly = nil
end)
end
-- 展示英雄收集
function CollectionUI:showHeroCollect()
self.collectType = GConst.CollectionConst.TYPE.HERO
self.btnHelp:setActive(true)
self.selectHero:setActive(true)
self.selectSkin:setActive(false)
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.COLLECTION_DESC_1))
self:showCollectList()
end
-- 展示皮肤收集
function CollectionUI:showSkinCollect()
self.collectType = GConst.CollectionConst.TYPE.SKIN
self.btnHelp:setActive(false)
self.selectHero:setActive(false)
self.selectSkin:setActive(true)
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.SKIN_COLLECT))
self:showCollectList()
end
return CollectionUI