198 lines
7.9 KiB
Lua
Executable File
198 lines
7.9 KiB
Lua
Executable File
local FundChapterComp = class("FundChapterComp", LuaComponent)
|
|
|
|
local CELL = "app/ui/fund/cell/fund_chapter_cell"
|
|
|
|
local TAG_COMMON_TOTAL_SIZE = 640
|
|
local TAG_SIZE = 178
|
|
|
|
function FundChapterComp:onClose()
|
|
self.curStage = nil
|
|
end
|
|
|
|
function FundChapterComp:init()
|
|
local uiMap = self:getUIMap()
|
|
self.banner = uiMap["fund_chapter_comp.bg.banner"]
|
|
self.txTitle = uiMap["fund_chapter_comp.top.tx_title"]
|
|
self.bg = uiMap["fund_chapter_comp.top.bg"]
|
|
self.txDesc = uiMap["fund_chapter_comp.top.bg.desc_1"]
|
|
self.txDesc2 = uiMap["fund_chapter_comp.top.bg.desc_2"]
|
|
self.btnHelp = uiMap["fund_chapter_comp.top.tx_title.btn_help"]
|
|
self.scrollrect = uiMap["fund_chapter_comp.scrollrect"]
|
|
self.txLevel = uiMap["fund_chapter_comp.scrollrect.title.tx_level"]
|
|
self.txCommon = uiMap["fund_chapter_comp.scrollrect.title.tx_common"]
|
|
self.txPro = uiMap["fund_chapter_comp.scrollrect.title.tx_pro"]
|
|
self.btnGet = uiMap["fund_chapter_comp.btns.btn_get"]
|
|
self.txGet = uiMap["fund_chapter_comp.btns.btn_get.tx_desc"]
|
|
self.btnBuy = uiMap["fund_chapter_comp.btns.btn_buy"]
|
|
self.txCost = uiMap["fund_chapter_comp.btns.btn_buy.tx_cost"]
|
|
self.tagsNode = uiMap["fund_chapter_comp.tags"]
|
|
self.tagsViewport = uiMap["fund_chapter_comp.tags.viewport"]
|
|
self.tagsContent = uiMap["fund_chapter_comp.tags.viewport.content"]
|
|
self.tags = {}
|
|
self.tagImgs = {}
|
|
self.tagDescs = {}
|
|
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.FUND_CHAPTER_DESC_1))
|
|
self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.FUND_CHAPTER_DESC_3))
|
|
self.txDesc2:setText(I18N:getGlobalText(I18N.GlobalConst.FUND_CHAPTER_DESC_4))
|
|
self.txLevel:setText(I18N:getGlobalText(I18N.GlobalConst.CHAPTER_TEAM_DESC_2))
|
|
self.txCommon:setText(I18N:getGlobalText(I18N.GlobalConst.FUND_CHAPTER_DESC_5))
|
|
self.txPro:setText(I18N:getGlobalText(I18N.GlobalConst.FUND_CHAPTER_DESC_6))
|
|
self.txGet:setText(I18N:getGlobalText(I18N.GlobalConst.ONE_KEY_GET_DESC))
|
|
for i = 1, 20 do
|
|
table.insert(self.tags, uiMap["fund_chapter_comp.tags.viewport.content.tag_" .. i])
|
|
table.insert(self.tagImgs, uiMap["fund_chapter_comp.tags.viewport.content.tag_" .. i .. ".img"])
|
|
table.insert(self.tagDescs, uiMap["fund_chapter_comp.tags.viewport.content.tag_" .. i .. ".img.tx_desc"])
|
|
end
|
|
|
|
self.btnBuy:addClickListener(function()
|
|
local giftId = DataManager.ChapterFundData:getProGiftId(self.curStage)
|
|
ModuleManager.FundChapterManager:onBuyLevelGift(giftId)
|
|
end)
|
|
self.btnGet:addClickListener(function()
|
|
ModuleManager.FundChapterManager:getReward(self.curStage)
|
|
end)
|
|
self.btnHelp:addClickListener(function()
|
|
ModuleManager.TipsManager:showDescTips(I18N:getGlobalText(I18N.GlobalConst.FUND_CHAPTER_DESC_2), self.btnHelp)
|
|
end)
|
|
self:bind(DataManager.ChapterFundData, "isDirty", function()
|
|
if not DataManager.ChapterFundData:getIsOpen() then
|
|
return
|
|
end
|
|
if not DataManager.ChapterFundData:isStageUnlock(self.curStage) then
|
|
self.curStage = DataManager.ChapterFundData:getCurStage()
|
|
end
|
|
if self.curStage == nil then
|
|
return
|
|
end
|
|
if not DataManager.ChapterFundData:canGetRewards(self.curStage) then
|
|
local claimedStage = DataManager.ChapterFundData:getMinUnclaimedStage()
|
|
if claimedStage ~= nil then
|
|
self.curStage = claimedStage
|
|
end
|
|
end
|
|
self:refresh(true)
|
|
end)
|
|
end
|
|
|
|
function FundChapterComp:refresh(isAuto)
|
|
if self.curStage == nil then
|
|
self.curStage = DataManager.ChapterFundData:getMinUnclaimedStage() or DataManager.ChapterFundData:getMaxUnclaimedStage()
|
|
isAuto = true
|
|
end
|
|
|
|
self:updateData(self.curStage)
|
|
self:refreshStageTags()
|
|
if isAuto then
|
|
local stageList = DataManager.ChapterFundData:getUnlockStageList()
|
|
local index
|
|
for k, v in pairs(stageList) do
|
|
if self.curStage == v then
|
|
index = k
|
|
end
|
|
end
|
|
if index then
|
|
self.tagsContent:setAnchoredPositionX(-self.tags[index]:getAnchoredPositionX())
|
|
end
|
|
end
|
|
if not DataManager.ChapterFundData:getProBought(self.curStage) then
|
|
local giftId = DataManager.ChapterFundData:getProGiftId(self.curStage)
|
|
local cfg = ConfigManager:getConfig("act_gift")[giftId]
|
|
self.txCost:setText(GFunc.getFormatPrice(cfg.recharge_id))
|
|
self.btnBuy:setActive(true)
|
|
else
|
|
self.btnBuy:setActive(false)
|
|
end
|
|
self.btnGet:setActive(DataManager.ChapterFundData:canGetRewards(self.curStage))
|
|
|
|
if self.curStage == 1 then
|
|
self.banner:setTexture("assets/arts/textures/background/fund/fund_banner_1.png")
|
|
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.FUND_CHAPTER_DESC_1))
|
|
else
|
|
self.banner:setTexture("assets/arts/textures/background/fund/fund_banner_1.png")
|
|
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst["FUND_CHAPTER_TAG_DESC_" .. self.curStage]))
|
|
end
|
|
local w = self.txTitle:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO).preferredWidth
|
|
if w > 300 then
|
|
self.txTitle:setSizeDeltaX(310)
|
|
else
|
|
self.txTitle:setSizeDeltaX(w + 10)
|
|
end
|
|
|
|
self.maxIndex = #self.cfgList
|
|
self.minIndex = DataManager.ChapterFundData:getMinUnclaimedRewardIndex(self.curStage)
|
|
if self.scrollRect == nil then
|
|
self.scrollRect = self.scrollrect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
|
|
self.scrollRect:addInitCallback(function()
|
|
return CELL
|
|
end)
|
|
self.scrollRect:addRefreshCallback(function(index, cell)
|
|
cell:refresh(self.cfgList[index], index == self.maxIndex)
|
|
end)
|
|
end
|
|
if self.scrollRect:getTotalCount() == nil or self.scrollRect:getTotalCount() <= 0 then
|
|
self.scrollRect:refillCells(self.maxIndex)
|
|
elseif self.scrollRect:getTotalCount() ~= self.maxIndex then
|
|
self.scrollRect:clearCells()
|
|
self.scrollRect:refillCells(self.maxIndex)
|
|
else
|
|
self.scrollRect:updateAllCell()
|
|
end
|
|
self.scrollRect:moveToIndex(self.minIndex)
|
|
if self.curStage then
|
|
-- BIReportV2:postOperation(BIReportV2.OPERATION_UI_NAME.FUND_LEVEL .. self.curStage)
|
|
end
|
|
end
|
|
|
|
function FundChapterComp:updateData(stage)
|
|
stage = stage or DataManager.ChapterFundData:getCurStage()
|
|
if DataManager.ChapterFundData:getIsOpen(stage) then
|
|
self.cfgList = DataManager.ChapterFundData:getListByStage(stage)
|
|
else
|
|
self.cfgList = {}
|
|
end
|
|
end
|
|
|
|
function FundChapterComp:onClickStageTag(stage)
|
|
self.curStage = stage
|
|
self:refresh()
|
|
end
|
|
|
|
function FundChapterComp:refreshStageTags()
|
|
local stageList = DataManager.ChapterFundData:getUnlockStageList()
|
|
if #stageList <= 1 then
|
|
self.tagsNode:setActive(false)
|
|
return
|
|
end
|
|
self.tagsNode:setActive(true)
|
|
local totalWidth = #stageList * TAG_SIZE + (#stageList - 1) * 5
|
|
self.tagsContent:setSizeDeltaX(totalWidth)
|
|
self.tagsViewport:setSizeDeltaX(totalWidth < TAG_COMMON_TOTAL_SIZE and totalWidth or TAG_COMMON_TOTAL_SIZE)
|
|
|
|
for i, tag in ipairs(self.tags) do
|
|
local stage = stageList[i]
|
|
if stage then
|
|
tag:setActive(true)
|
|
local isSelect = self.curStage == stage
|
|
self.tagImgs[i]:setSprite(GConst.ATLAS_PATH.COMMON, isSelect and "common_menu_4" or "common_menu_5")
|
|
self.tagImgs[i]:setAnchoredPositionY(isSelect and 5 or 0)
|
|
self.tagDescs[i]:setText(I18N:getGlobalText(I18N.GlobalConst["FUND_CHAPTER_TAG_DESC_" .. stage]))
|
|
|
|
if DataManager.ChapterFundData:canGetRewards(stage) then
|
|
tag:addRedPoint(80, 33, 0.9)
|
|
else
|
|
tag:removeRedPoint()
|
|
end
|
|
|
|
tag:addClickListener(function()
|
|
if isSelect then
|
|
return
|
|
end
|
|
self:onClickStageTag(stage)
|
|
end)
|
|
else
|
|
tag:setActive(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
return FundChapterComp |