c1_lua/lua/app/ui/fund/growth_fund_ui.lua
2023-05-29 10:54:10 +08:00

203 lines
7.0 KiB
Lua

local GrowthFundUI = class("GrowthFundUI", BaseUI)
function GrowthFundUI:isFullScreen()
return true
end
function GrowthFundUI:getCurrencyParams()
if self.currencyParams == nil then
self.currencyParams = {
itemIds = {
GConst.ItemConst.ITEM_ID_GOLD,
GConst.ItemConst.ITEM_ID_GEM,
GConst.ItemConst.ITEM_ID_VIT,
},
showType = GConst.CURRENCY_TYPE.HORIZONTAL
}
end
return self.currencyParams
end
function GrowthFundUI:getPrefabPath()
return "assets/prefabs/ui/fund/growth_fund_ui.prefab"
end
function GrowthFundUI:ctor()
self.fundGrade = DataManager.GrowthFundData:getFundGrade()
self:initGradeInfoList()
end
function GrowthFundUI:initGradeInfoList()
self.gradeInfoList = DataManager.GrowthFundData:getCurrGradeInfoList()
local playerLevel = DataManager.PlayerData:getLv()
local cfg = ConfigManager:getConfig("act_level_fund")
self.inactiveIndex = nil
for k, v in ipairs(self.gradeInfoList) do
if cfg[v] then
if playerLevel < cfg[v].level then
self.inactiveIndex = k
break
end
end
end
if self.inactiveIndex == nil then
self.inactiveIndex = #self.gradeInfoList + 1
end
end
function GrowthFundUI:onClose()
if self.originTitleBgHeight then
self.uiMap["growth_fund_ui.title_img.bg"]:setSizeDeltaY(self.originTitleBgHeight)
end
end
function GrowthFundUI:onLoadRootComplete()
self.uiMap = self.root:genAllChildren()
self.uiMap["growth_fund_ui.down.close_btn"]:addClickListener(function()
self:closeUI()
end)
self:initTitle()
self:initPayBtns()
self:initRewards()
self:bindData()
end
function GrowthFundUI:initTitle()
self.titleTx = self.uiMap["growth_fund_ui.title_img.title_tx"]
self.titleDialogBg = self.uiMap["growth_fund_ui.title_img.bg"]
self.originTitleBgHeight = self.titleDialogBg:fastGetSizeDeltaY()
end
function GrowthFundUI:initPayBtns()
local width = GConst.UI_SCREEN_WIDTH
local freeTx = self.uiMap["growth_fund_ui.title_bg_2.free_tx"]
freeTx:setText(I18N:getGlobalText(I18N.GlobalConst.STR_FREE))
freeTx:setAnchoredPositionX(-width/3)
self.payBtn1 = self.uiMap["growth_fund_ui.title_bg_2.btn_1"]
self.payBtn1:addClickListener(function()
ModuleManager.FundManager:buyLevelFund(DataManager.GrowthFundData:getFundBaseId())
end)
self.payBtnTx1 = self.uiMap["growth_fund_ui.title_bg_2.btn_1.text"]
self.payBtn2 = self.uiMap["growth_fund_ui.title_bg_2.btn_2"]
self.payBtn2:setAnchoredPositionX(width/3)
self.payBtn2:addClickListener(function()
ModuleManager.FundManager:buyLevelFund(DataManager.GrowthFundData:getFundAdvanceId())
end)
self.payBtnTx2 = self.uiMap["growth_fund_ui.title_bg_2.btn_2.text"]
end
function GrowthFundUI:initRewards()
self.scrollRect = self.uiMap["growth_fund_ui.scrollrect"]
self.scrollRectComp = self.scrollRect:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
self.scrollRectComp:addInitCallback(function()
return "app/ui/fund/cell/growth_fund_cell"
end)
self.scrollRectComp:addRefreshCallback(function(index, cell)
cell:refresh(self.gradeInfoList[index])
end)
self.scrollRectComp:clearCells()
self.scrollRectComp:setTotalCount(0)
self.progressBg = self.uiMap["growth_fund_ui.scrollrect.viewport.content.progress_bg"]
self.progressComp = self.uiMap["growth_fund_ui.scrollrect.viewport.content.progress_bg.progress"]:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER)
self.grayImg = self.uiMap["growth_fund_ui.scrollrect.viewport.content.gray_img"]
self.horizontalLine = self.uiMap["growth_fund_ui.scrollrect.viewport.content.line_img"]
self.verticalLine1 = self.uiMap["growth_fund_ui.scrollrect.viewport.content.vertical_line_1"]
self.verticalLine2 = self.uiMap["growth_fund_ui.scrollrect.viewport.content.vertical_line_2"]
end
function GrowthFundUI:bindData()
self:bind(DataManager.GrowthFundData, "dirty", function()
if self.fundGrade ~= DataManager.GrowthFundData:getFundGrade() then
self.fundGrade = DataManager.GrowthFundData:getFundGrade()
self:initGradeInfoList()
end
self:onRefresh()
end)
end
function GrowthFundUI:onRefresh()
self:refreshTitle()
self:refreshPayBtns()
self:refreshRewards()
end
function GrowthFundUI:refreshTitle()
local fundGrade = DataManager.GrowthFundData:getFundGrade()
if fundGrade == 1 then
self.uiMap["growth_fund_ui.title_img"]:setTexture("assets/arts/textures/background/fund/fund_bg_1.png")
elseif fundGrade == 2 then
self.uiMap["growth_fund_ui.title_img"]:setTexture("assets/arts/textures/background/fund/fund_bg_2.png")
end
self.titleTx:setText(I18N:getGlobalText(I18N.GlobalConst.LEVEL_FUND_DESC_1, fundGrade))
local height = self.titleTx:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TEXT_MESH_PRO).preferredHeight + 58
if height < self.originTitleBgHeight then
height = self.originTitleBgHeight
end
self.titleDialogBg:setSizeDeltaY(height)
end
function GrowthFundUI:refreshPayBtns()
if not DataManager.GrowthFundData:getIsBoughtBase() then
local rechargeId = DataManager.GrowthFundData:getCurrGradeBaseRechargeId()
self.payBtnTx1:setText(GFunc.getFormatPrice(rechargeId))
self.payBtn1:setTouchEnable(true)
else
self.payBtnTx1:setText(I18N:getGlobalText(I18N.GlobalConst.ALREADY_ACTIVE))
self.payBtn1:setTouchEnable(false)
end
if not DataManager.GrowthFundData:getIsBoughtAdvance() then
local rechargeId = DataManager.GrowthFundData:getCurrGradeAdvanceRechargeId()
self.payBtnTx2:setText(GFunc.getFormatPrice(rechargeId))
self.payBtn2:setTouchEnable(true)
else
self.payBtnTx2:setText(I18N:getGlobalText(I18N.GlobalConst.ALREADY_ACTIVE))
self.payBtn2:setTouchEnable(false)
end
end
function GrowthFundUI:refreshRewards()
local count = #self.gradeInfoList
if self.scrollRectComp:getTotalCount() <= 0 then
self.scrollRectComp:refillCells(count)
local minIndex = DataManager.GrowthFundData:getMinUnclaimedRewardIndex()
if minIndex > 1 then
self.scrollRectComp:moveToIndex(minIndex)
end
elseif self.scrollRectComp:getTotalCount() ~= count then -- 打开界面的时候定位到当前可领取的最低等级奖励,如果没有则定位到当前等级
self.scrollRectComp:clearCells()
self.scrollRectComp:refillCells(count)
else
self.scrollRectComp:updateAllCell()
end
local topRecoveryOffset = self.scrollRectComp:getTopRecoveryOffset()
local contentWidth = self.scrollRect:getRectWidth()
local cellWidth = self.scrollRectComp:getCellHeight()
self.progressBg:setAnchoredPosition(contentWidth/3, -topRecoveryOffset - cellWidth/2)
self.progressBg:setSizeDeltaX(cellWidth*(count - 1))
local percent = (self.inactiveIndex - 2) / (count - 1)
if percent < 0 then
percent = 0
end
self.progressComp.value = percent
self.grayImg:setAnchoredPositionY(-topRecoveryOffset - (self.inactiveIndex - 1)*cellWidth)
self.grayImg:setSizeDeltaY(cellWidth*count + GConst.UI_SCREEN_HEIGHT)
local lineHeight = topRecoveryOffset + cellWidth*count + GConst.UI_SCREEN_HEIGHT*2
self.verticalLine1:setAnchoredPositionX(contentWidth/3)
self.verticalLine1:setSizeDeltaY(lineHeight)
self.verticalLine2:setAnchoredPositionX(contentWidth*2/3)
self.verticalLine2:setSizeDeltaY(lineHeight)
self.horizontalLine:setAnchoredPositionY(-topRecoveryOffset - (self.inactiveIndex - 1)*cellWidth)
end
return GrowthFundUI