c1_lua/lua/app/ui/dungeon/dungeon_daily_main_ui.lua
2025-10-10 19:21:42 +08:00

135 lines
4.5 KiB
Lua

local DungeonDailyMainUI = class("DungeonDailyMainUI", BaseUI)
local DUNGEON_GOLD_COMP = "app/ui/dungeon/comp/dungeon_gold_comp"
local DUNGEON_MATERIAL_COMP = "app/ui/dungeon/comp/dungeon_material_comp"
function DungeonDailyMainUI:ctor(params)
self.page = params and params.page
if self.page == nil then
if DataManager.DungeonDailyData.GoldData:isOpen() then
self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD
elseif DataManager.DungeonDailyData.MaterialData:isOpen() then
self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL
end
elseif self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then
if not DataManager.DungeonDailyData.GoldData:isOpen() then
self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL
end
elseif self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then
if not DataManager.DungeonDailyData.MaterialData:isOpen() then
self.page = GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD
end
end
self.btns = {}
end
function DungeonDailyMainUI:getPrefabPath()
return "assets/prefabs/ui/dungeon/dungeon_daily_main_ui.prefab"
end
function DungeonDailyMainUI:onLoadRootComplete()
local uiMap = self.root:genAllChildren()
self.closeBtn = uiMap["dungeon_daily_main_ui.bottom.close_btn"]
self.closeBtn:addClickListener(function()
self:closeUI()
end)
self.dungeonGoldComp = uiMap["dungeon_daily_main_ui.gold_comp"]:addLuaComponent(DUNGEON_GOLD_COMP)
self.dungeonMaterialComp = uiMap["dungeon_daily_main_ui.material_comp"]:addLuaComponent(DUNGEON_MATERIAL_COMP)
self.goldBtn = uiMap["dungeon_daily_main_ui.bottom.gold_btn"]
self.goldBtn:addClickListener(function()
self:switchPage(GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD)
end)
uiMap["dungeon_daily_main_ui.bottom.gold_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_TITLE_8))
self.materialBtn = uiMap["dungeon_daily_main_ui.bottom.material_btn"]
self.materialBtn:addClickListener(function()
self:switchPage(GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL)
end)
uiMap["dungeon_daily_main_ui.bottom.material_btn.text"]:setText(I18N:getGlobalText(I18N.GlobalConst.DUNGEON_TITLE_9))
self:_bind()
end
function DungeonDailyMainUI:_bind()
self:bind(DataManager.DungeonDailyData.GoldData, "isDirty", function()
self:onRefresh()
end)
self:bind(DataManager.DungeonDailyData.MaterialData, "isDirty", function()
self:onRefresh()
end)
self:bind(DataManager.PrivilegeCardData, "isDirty", function()
self:onRefresh()
end)
end
function DungeonDailyMainUI:onRefresh()
local btnsCount = #self.btns
for i = 1, btnsCount do
table.remove(self.btns)
end
if DataManager.DungeonDailyData.MaterialData:isOpen() then
self.materialBtn:setActive(true)
table.insert(self.btns, self.materialBtn)
if DataManager.DungeonDailyData.MaterialData:getIsShowRedPoint() then
self.materialBtn:addRedPoint(30, 30, 1)
else
self.materialBtn:removeRedPoint()
end
else
self.materialBtn:setActive(false)
end
if DataManager.DungeonDailyData.GoldData:isOpen() then
self.goldBtn:setActive(true)
table.insert(self.btns, self.goldBtn)
if DataManager.DungeonDailyData.GoldData:getIsShowRedPoint() then
self.goldBtn:addRedPoint(30, 30, 1)
else
self.goldBtn:removeRedPoint()
end
else
self.goldBtn:setActive(false)
end
for k, v in ipairs(self.btns) do
v:setAnchoredPositionX(-76 - (k-1)*123)
end
self:switchPage(self.page)
end
function DungeonDailyMainUI:switchPage(page)
self.page = page
if self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.GOLD then
self.dungeonGoldComp:getBaseObject():setActive(true)
self.dungeonMaterialComp:getBaseObject():setActive(false)
self.goldBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_2_1")
self.materialBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_1_2")
self:refreshGold()
elseif self.page == GConst.DungeonConst.DUNGEON_DAILY_TYPE.MATERIAL then
self.dungeonGoldComp:getBaseObject():setActive(false)
self.dungeonMaterialComp:getBaseObject():setActive(true)
self.goldBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_2_2")
self.materialBtn:setSprite(GConst.ATLAS_PATH.UI_DUNGEON, "dungeon_btn_1_1")
self:refreshMaterial()
end
end
function DungeonDailyMainUI:refreshGold()
if self._alreadyEnterGold == nil then
self._alreadyEnterGold = true
self.dungeonGoldComp:onRefresh(true)
else
self.dungeonGoldComp:onRefresh()
end
end
function DungeonDailyMainUI:refreshMaterial()
if self._alreadyEnterMaterial == nil then
self._alreadyEnterMaterial = true
self.dungeonMaterialComp:onRefresh(true)
else
self.dungeonMaterialComp:onRefresh(false)
end
end
return DungeonDailyMainUI