2023-05-26 15:42:35 +08:00

195 lines
5.6 KiB
Lua

local MainComp = class("MainComp", LuaComponent)
local CHAPTER_COMP = "app/ui/main_city/component/chapter_comp"
local DAILY_CHALLENGE_COMP = "app/ui/main_city/component/daily_challenge_comp"
local MODULE_DATA = {
[1] = {
["type"] = GConst.MainCityConst.BOTTOM_MODULE_KEY.DAILY_CHALLENGE,
["title"] = "每日挑战",-- 标题
["atlas"] = GConst.ATLAS_PATH.ICON_ITEM,-- 图集路径
["icon"] = "1",-- 图片名
["numFunc"] = function()-- 挑战按钮显示数值
return nil
end,
["clickFunc"] = function()-- 点击回调
Logger.logHighlight("点击每日挑战")
end
},
[2] = {
["type"] = GConst.MainCityConst.BOTTOM_MODULE_KEY.CHAPTER,
["title"] = "主线章节",
["atlas"] = GConst.ATLAS_PATH.ICON_ITEM,
["icon"] = "2",
["numFunc"] = function()
return DataManager.ChapterData:getFightCost()
end,
["clickFunc"] = function()
ModuleManager.ChapterManager:startFight()
end
}
}
function MainComp:init()
self.uiMap = self:getBaseObject():genAllChildren()
self.curModuleType = GConst.MainCityConst.BOTTOM_MODULE_KEY.CHAPTER
self:initStageFormation()
self:refreshBtns()
self:refreshModuleComp()
end
function MainComp:refreshModuleComp()
if not self.chapterComp then
-- 章节
local chapterComp = self.uiMap["main_comp.chapter_comp"]
chapterComp:initPrefabHelper()
chapterComp:genAllChildren()
self.chapterComp = chapterComp:addLuaComponent(CHAPTER_COMP)
self.chapterComp.root = self
end
if not self.dailyChallengeComp then
-- 每日挑战
local dailyChallengeComp = self.uiMap["main_comp.daily_challenge_comp"]
dailyChallengeComp:initPrefabHelper()
dailyChallengeComp:genAllChildren()
dailyChallengeComp:setActive(false)
self.dailyChallengeComp = dailyChallengeComp:addLuaComponent(DAILY_CHALLENGE_COMP)
self.dailyChallengeComp.root = self
end
self.chapterComp:getBaseObject():setActive(false)
self.dailyChallengeComp:getBaseObject():setActive(false)
if self.curModuleType == GConst.MainCityConst.BOTTOM_MODULE_KEY.CHAPTER then
self.chapterComp:getBaseObject():setActive(true)
elseif self.curModuleType == GConst.MainCityConst.BOTTOM_MODULE_KEY.DAILY_CHALLENGE then
self.dailyChallengeComp:getBaseObject():setActive(true)
end
end
function MainComp:refreshBtns()
self:refreshFightBtn()
self:refreshLeftBtn()
self:refreshRightBtn()
end
function MainComp:refreshFightBtn()
local module = nil
for type, data in pairs(MODULE_DATA) do
if self.curModuleType == type then
module = data
end
end
if not module then
return
end
self.uiMap["main_comp.fight_btn.desc"]:setText(I18N:getGlobalText(I18N.GlobalConst.START_DESC))
local cost = module["numFunc"]()
if cost then
self.uiMap["main_comp.fight_btn.desc_2"]:setText(GFunc.getRewardNum(cost))
else
self.uiMap["main_comp.fight_btn.desc_2"]:setText("0")
end
self.uiMap["main_comp.fight_btn"]:addClickListener(module["clickFunc"])
end
function MainComp:refreshLeftBtn()
local module = MODULE_DATA[self:getCurLeftModuleIdx()]
if module == nil then
self.uiMap["main_comp.left_btn"]:setActive(false)
return
end
self.uiMap["main_comp.left_btn"]:setActive(true)
self.uiMap["main_comp.left_btn.desc"]:setText(module["title"])
self.uiMap["main_comp.left_btn.icon"]:setSprite(module["atlas"],module["icon"])
self.uiMap["main_comp.left_btn"]:addClickListener(function()
self.curModuleType = module["type"]
self:refreshBtns()
self:refreshModuleComp()
end)
end
function MainComp:refreshRightBtn()
local module = MODULE_DATA[self:getCurRightModuleIdx()]
if module == nil then
self.uiMap["main_comp.right_btn"]:setActive(false)
return
end
self.uiMap["main_comp.right_btn"]:setActive(true)
self.uiMap["main_comp.right_btn.desc"]:setText(module["title"])
self.uiMap["main_comp.right_btn.icon"]:setSprite(module["atlas"],module["icon"])
self.uiMap["main_comp.right_btn"]:addClickListener(function()
self.curModuleType = module["type"]
self:refreshBtns()
self:refreshModuleComp()
end)
end
function MainComp:getCurLeftModuleIdx()
for idx, data in pairs(MODULE_DATA) do
if self.curModuleType == data["type"] then
if idx == 1 then
return nil
else
return idx - 1
end
end
end
end
function MainComp:getCurRightModuleIdx()
for idx, data in pairs(MODULE_DATA) do
if self.curModuleType == data["type"] then
if idx == #MODULE_DATA then
return nil
else
return idx + 1
end
end
end
end
function MainComp:initStageFormation()
self.heroCells = {
self.uiMap["main_comp.hero_bg.hero_cell_1"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.HERO_CELL),
self.uiMap["main_comp.hero_bg.hero_cell_2"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.HERO_CELL),
self.uiMap["main_comp.hero_bg.hero_cell_3"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.HERO_CELL),
self.uiMap["main_comp.hero_bg.hero_cell_4"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.HERO_CELL),
self.uiMap["main_comp.hero_bg.hero_cell_5"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.HERO_CELL),
}
end
function MainComp:refresh()
self:refreshStageFormaion()
end
function MainComp:refreshChapter(force)
self.chapterComp:refreshChapter(force)
end
function MainComp:refreshStageFormaion()
local formation = DataManager.FormationData:getStageFormation()
for i, heroCell in ipairs(self.heroCells) do
if formation[i] then
local heroEntity = DataManager.HeroData:getHeroById(formation[i])
if heroEntity then
heroCell:setVisible(true, 0.84)
heroCell:refresh(heroEntity)
heroCell:addClickListener(function()
ModuleManager.HeroManager:showHeroDetailUI(heroEntity:getCfgId())
end)
else
heroCell:setVisible(false)
end
else
heroCell:setVisible(false)
end
end
end
return MainComp