301 lines
8.3 KiB
Lua
Executable File
301 lines
8.3 KiB
Lua
Executable File
local FundMainUI = class("FundMainUI", BaseUI)
|
|
-- FundMainUI
|
|
local BTN_WIDTH = 82
|
|
local BTN_RIGHT = 20
|
|
local BTN_SPACING = 26
|
|
|
|
function FundMainUI:showCommonBG()
|
|
return false
|
|
end
|
|
|
|
function FundMainUI:onPressBackspace()
|
|
self:closeUI()
|
|
end
|
|
|
|
function FundMainUI:getPrefabPath()
|
|
return "assets/prefabs/ui/fund/fund_main_ui.prefab"
|
|
end
|
|
|
|
function FundMainUI:onClose()
|
|
if self.subComps then
|
|
for _, comp in pairs(self.subComps) do
|
|
if comp.onClose then
|
|
comp:onClose()
|
|
end
|
|
end
|
|
end
|
|
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.MAIN_UI_CHECK_POP)
|
|
|
|
local callback = self.callback
|
|
self.callback = nil
|
|
if callback then
|
|
callback()
|
|
end
|
|
end
|
|
|
|
function FundMainUI:ctor(param)
|
|
if param and param.showPage then
|
|
self.curPage = param.showPage
|
|
self.onlyShowPage = param.onlyShowPage
|
|
self.callback = param.callback
|
|
else
|
|
self:switchOtherPage()
|
|
end
|
|
end
|
|
|
|
function FundMainUI:onLoadRootComplete()
|
|
local uiMap = self.root:genAllChildren()
|
|
self.btnClose = uiMap["fund_main_ui.bottom.btn_close"]
|
|
self.btnNode = uiMap["fund_main_ui.bottom.btns"]
|
|
self.btnContent = uiMap["fund_main_ui.bottom.btns.viewport.content"]
|
|
self.btns = {}
|
|
self.txBtns = {}
|
|
for i = 1, table.nums(GConst.ShopConst.FUND_SHOW_PAGE) do
|
|
table.insert(self.btns, uiMap["fund_main_ui.bottom.btns.viewport.content.btn_" .. i])
|
|
table.insert(self.txBtns, uiMap["fund_main_ui.bottom.btns.viewport.content.btn_" .. i .. ".tx_desc"])
|
|
end
|
|
self.compsRoot = uiMap["fund_main_ui.comps"]
|
|
for i, btn in ipairs(self.btns) do
|
|
self.txBtns[i]:setText(I18N:getGlobalText(I18N.GlobalConst[GConst.ShopConst.FUND_PAGE_BTN_DESC[i]]))
|
|
btn:addClickListener(function()
|
|
self:onChangePage(i)
|
|
end)
|
|
end
|
|
|
|
self:initComps()
|
|
self:scheduleGlobal(function()
|
|
self:updateTime()
|
|
end, 1)
|
|
self:updateTime()
|
|
|
|
self.btnClose:addClickListener(function()
|
|
self:closeUI()
|
|
end)
|
|
self:bind(DataManager.FundLevelData, "isDirty", function()
|
|
self:refreshRedPoint()
|
|
if self.curPage ~= GConst.ShopConst.FUND_SHOW_PAGE.FUND then
|
|
return
|
|
end
|
|
self:onRefresh()
|
|
end)
|
|
self:bind(DataManager.ChapterFundData, "isDirty", function()
|
|
self:refreshRedPoint()
|
|
if self.curPage ~= GConst.ShopConst.FUND_SHOW_PAGE.CHAPTER_FUND then
|
|
return
|
|
end
|
|
self:onRefresh()
|
|
end)
|
|
-- self:bind(DataManager.BountyData, "isDirty", function()
|
|
-- self:refreshRedPoint()
|
|
-- end)
|
|
-- self:bind(DataManager.BountyCollectionData, "isDirty", function()
|
|
-- self:refreshRedPoint()
|
|
-- end)
|
|
-- self:bind(DataManager.TowerData, "isDirty", function()
|
|
-- self:onRefresh()
|
|
-- end)
|
|
-- self:bind(DataManager.TowerFundData, "isDirty", function()
|
|
-- self:onRefresh()
|
|
-- end)
|
|
-- self:bind(DataManager.BountyGrowthData, "isDirty", function()
|
|
-- self:onRefresh()
|
|
-- end)
|
|
self:bind(DataManager.PaymentData, "isDirty", function()
|
|
self:onRefresh()
|
|
end)
|
|
end
|
|
|
|
function FundMainUI:initComps()
|
|
if self.subComps then
|
|
return
|
|
end
|
|
local uiMap = self.root:genAllChildren()
|
|
self.subComps = {}
|
|
|
|
for k, id in pairs(GConst.ShopConst.FUND_SHOW_PAGE) do
|
|
if GConst.ShopConst.FUND_COMP_NAME[id] then
|
|
-- 预制体挂载
|
|
local obj = uiMap[GConst.ShopConst.FUND_COMP_NAME[id]]
|
|
-- self:initGlobalHelp(obj)
|
|
obj:initPrefabHelper()
|
|
obj:genAllChildren()
|
|
local comp = obj:addLuaComponent(GConst.ShopConst.FUND_COMP[id])
|
|
self.subComps[id] = comp
|
|
elseif GConst.ShopConst.FUND_COMP_PATH[id] then
|
|
-- 动态加载
|
|
self:loadModule(GConst.ShopConst.FUND_COMP_PATH[id], self.compsRoot, GConst.ShopConst.FUND_COMP[id], function(comp)
|
|
comp:getBaseObject():setActive(false)
|
|
self.subComps[id] = comp
|
|
|
|
-- 判断当前需要展示界面是否是刚加载完的界面,是的话刷新一下界面
|
|
if self.curPage == id then
|
|
self:onRefresh()
|
|
end
|
|
end)
|
|
end
|
|
end
|
|
end
|
|
|
|
function FundMainUI:updateTime()
|
|
if self.subComps then
|
|
for _, comp in pairs(self.subComps) do
|
|
if comp.updateTime then
|
|
comp:updateTime()
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function FundMainUI:onChangePage(page)
|
|
if self.curPage == page then
|
|
return
|
|
end
|
|
|
|
for i, comp in pairs(self.subComps) do
|
|
if page ~= i and self.curPage == i and comp.onClose then
|
|
comp:onClose()
|
|
end
|
|
end
|
|
|
|
self.curPage = page
|
|
self:onRefresh()
|
|
end
|
|
|
|
function FundMainUI:switchOtherPage()
|
|
-- if DataManager.BountyData:showRedPoint() then
|
|
-- self.curPage = GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY
|
|
-- elseif DataManager.BountyCollectionData:showRedPoint() then
|
|
-- self.curPage = GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY_COLLECTION
|
|
-- elseif DataManager.FundLevelData:getRedPoint() then
|
|
-- self.curPage = GConst.ShopConst.FUND_SHOW_PAGE.FUND
|
|
-- elseif DataManager.ChapterFundData:getRedPoint() then
|
|
-- self.curPage = GConst.ShopConst.FUND_SHOW_PAGE.CHAPTER_FUND
|
|
-- elseif DataManager.BountyGrowthData:getIsOpen() then
|
|
-- self.curPage = GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY_GROWTH
|
|
-- end
|
|
if DataManager.FundLevelData:getRedPoint() then
|
|
self.curPage = GConst.ShopConst.FUND_SHOW_PAGE.FUND
|
|
elseif DataManager.ChapterFundData:getRedPoint() then
|
|
self.curPage = GConst.ShopConst.FUND_SHOW_PAGE.CHAPTER_FUND
|
|
end
|
|
|
|
if self.curPage ~= nil then
|
|
return
|
|
end
|
|
|
|
for page = 1, table.nums(GConst.ShopConst.FUND_SHOW_PAGE) do
|
|
if self:isOpen(page) then
|
|
self.curPage = page
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function FundMainUI:onRefresh()
|
|
if self.curPage == GConst.ShopConst.FUND_SHOW_PAGE.FUND then
|
|
if DataManager.FundLevelData:getIsAllClaimed() then
|
|
local page = self.curPage
|
|
self:switchOtherPage()
|
|
if page == self.curPage then
|
|
return self:closeUI()
|
|
else
|
|
return self:onRefresh()
|
|
end
|
|
end
|
|
end
|
|
if self.curPage == GConst.ShopConst.FUND_SHOW_PAGE.CHAPTER_FUND then
|
|
if DataManager.ChapterFundData:getIsAllClaimed() then
|
|
local page = self.curPage
|
|
self:switchOtherPage()
|
|
if page == self.curPage then
|
|
return self:closeUI()
|
|
else
|
|
return self:onRefresh()
|
|
end
|
|
end
|
|
end
|
|
|
|
local openCount = 0
|
|
for i, btn in ipairs(self.btns) do
|
|
if self:isOpen(i) then
|
|
btn:setActive(true)
|
|
openCount = openCount + 1
|
|
if self.curPage == i then
|
|
btn:setSprite(GConst.ShopConst.FUND_PAGE_BTN_ICON_ATLAS[i], GConst.ShopConst.FUND_PAGE_BTN_ICON_1[i])
|
|
else
|
|
btn:setSprite(GConst.ShopConst.FUND_PAGE_BTN_ICON_ATLAS[i], GConst.ShopConst.FUND_PAGE_BTN_ICON_2[i])
|
|
end
|
|
else
|
|
btn:setActive(false)
|
|
end
|
|
end
|
|
local width = BTN_RIGHT + BTN_WIDTH * openCount + BTN_SPACING * (openCount - 1) + 20
|
|
self.btnContent:setSizeDeltaX(width)
|
|
self.btnContent:setAnchoredPositionX(math.max(width - self.btnNode:getSizeDeltaX(), 0))
|
|
|
|
for i, comp in pairs(self.subComps) do
|
|
if self.curPage == i then
|
|
comp:getBaseObject():setActive(true)
|
|
comp:refresh()
|
|
else
|
|
comp:getBaseObject():setActive(false)
|
|
end
|
|
end
|
|
|
|
-- 红点
|
|
self:refreshRedPoint()
|
|
|
|
self.btnNode:setActive(not self.onlyShowPage)
|
|
end
|
|
|
|
function FundMainUI:refreshRedPoint()
|
|
for i, btn in ipairs(self.btns) do
|
|
if self:hasRedPoint(i) then
|
|
btn:addRedPoint(30, 30, 0.9)
|
|
else
|
|
btn:removeRedPoint()
|
|
end
|
|
end
|
|
end
|
|
|
|
function FundMainUI:isOpen(type)
|
|
if type == GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY then
|
|
-- return DataManager.BountyData:isOpen()
|
|
return false
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY_COLLECTION then
|
|
-- return DataManager.BountyCollectionData:isOpen()
|
|
return false
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.FUND then
|
|
return DataManager.FundLevelData:getIsOpen()
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.CHAPTER_FUND then
|
|
return DataManager.ChapterFundData:getIsOpen()
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.TOWER_BOUNTY then
|
|
-- return DataManager.TowerData:isOpen()
|
|
return false
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY_GROWTH then
|
|
-- return DataManager.BountyGrowthData:getIsOpen()
|
|
return false
|
|
end
|
|
end
|
|
|
|
function FundMainUI:hasRedPoint(type)
|
|
if type == GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY then
|
|
-- return DataManager.BountyData:showRedPoint()
|
|
return false
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY_COLLECTION then
|
|
-- return DataManager.BountyCollectionData:showRedPoint()
|
|
return false
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.FUND then
|
|
return DataManager.FundLevelData:getRedPoint()
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.CHAPTER_FUND then
|
|
return DataManager.ChapterFundData:getRedPoint()
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.TOWER_BOUNTY then
|
|
-- return DataManager.TowerFundData:getRedPoint()
|
|
return false
|
|
elseif type == GConst.ShopConst.FUND_SHOW_PAGE.BOUNTY_GROWTH then
|
|
-- return DataManager.BountyGrowthData:getRedPoint()
|
|
return false
|
|
end
|
|
end
|
|
|
|
return FundMainUI |