c1_lua/lua/app/ui/common/cell/hero_cell.lua
2025-10-28 10:28:46 +08:00

178 lines
5.1 KiB
Lua

local HeroCell = class("HeroCell", BaseCell)
function HeroCell:init()
local uiMap = self.baseObject:genAllChildren()
-- 通用
self.icon = uiMap["hero_cell.hero_bg.icon"]
self.heroBg = uiMap["hero_cell.hero_bg"]
self.heroDec = uiMap["hero_cell.hero_bg.dec"]
self.check = uiMap["hero_cell.hero_bg.mask"]
self.matchImg = uiMap["hero_cell.hero_bg.match_img"]
self.lvTx = uiMap["hero_cell.hero_bg.lv_tx"]
-- 个人节点
self.selfNode = uiMap["hero_cell.hero_bg.self_node"]
self.unlockTx = uiMap["hero_cell.hero_bg.unlock_tx"]
self.lvUpArrow = uiMap["hero_cell.hero_bg.self_node.ui_spine_obj"]
self.maskImg2 = uiMap["hero_cell.hero_bg.mask_img_2"]
-- 他人节点
self.nameTx = uiMap["hero_cell.hero_bg.tx_name"]
self.starComp = uiMap["hero_cell.hero_bg.star_cell"]:addLuaComponent(GConst.TYPEOF_LUA_CLASS.STAR_CELL)
self.unlockTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_7))
self.isGray = false
self.baseObject:addClickListener(function()
if self.clickCallback then
self.clickCallback()
end
end)
self:bind(DataManager.BagData.ItemData, "dirty", function()
self:refreshRedPoint()
end)
self:bind(DataManager.SkinData, "isDirty", function()
self:refreshHeroIcon()
end)
end
function HeroCell:refresh(heroEntity, isGray)
self.heroEntity = heroEntity
self:bind(self.heroEntity, "isDirty", function()
self:refreshRedPoint()
end)
self.selfNode:setActive(true)
self:_refresh(heroEntity:getCfgId(), isGray)
local canLvUp = heroEntity:canLvUp()
local canStarUp = heroEntity:canStarUp()
local inTeam = DataManager.HeroData:isInStageFormation(heroEntity:getCfgId())
if (canLvUp and inTeam) or canStarUp then
self.lvUpArrow:setActive(true)
self.lvUpArrow:playAnim("animation", true, false)
else
self.lvUpArrow:setActive(false)
end
local star = heroEntity:getStar()
self.starComp:refresh(star)
if heroEntity:isUnlock() then
if heroEntity:isActived() then
self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.RUNES_DESC_26, heroEntity:getLv()))
self.lvTx:setActive(true)
else
self.lvTx:setActive(false)
end
self.unlockTx:setActive(false)
else
self.lvTx:setActive(false)
if canLvUp then
self.unlockTx:setActive(false)
else
self.unlockTx:setActive(true)
end
end
self:refreshRedPoint()
end
-- 刷新英雄icon
function HeroCell:refreshHeroIcon(iconName)
-- if self.heroEntity ~= nil then
-- self.icon:setSprite(GConst.ATLAS_PATH.ICON_HERO_2, DataManager.SkinData:getIcon(self.heroEntity:getSkinId()))
-- elseif iconName then
self.icon:setSprite(GConst.ATLAS_PATH.ICON_HERO_2, tostring(iconName))
-- end
end
-- 刷新红点
function HeroCell:refreshRedPoint()
if self.heroEntity == nil then
return
end
if not self.selfNode or self.selfNode:isDestroyed() or CS.BF.Utils.IsNull(self.selfNode:getGameObject()) then
return
end
-- if not self.notShowRedPoint and DataManager.FormationData:heroInFormation(GConst.BattleConst.FORMATION_TYPE.STAGE, self.heroEntity:getCfgId()) and self.heroEntity:showRedPointEntrance() then
-- self.selfNode:addRedPoint(59, -47, 1)
-- else
-- self.selfNode:removeRedPoint()
-- end
end
-- 设置是否展示红点
function HeroCell:setShowRedPoint(show)
self.notShowRedPoint = not show
end
function HeroCell:getHeroId()
if not self.heroEntity then
return
end
return self.heroEntity:getCfgId()
end
function HeroCell:refreshBriefInfo(heroEntity)
self.heroEntity = heroEntity
local id = self.heroEntity:getCfgId()
local level = self.heroEntity:getLv()
self.selfNode:setActive(false)
local star = heroEntity:getStar()
self.starComp:refresh(star)
self.unlockTx:setActive(false)
self:_refresh(id)
self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, level))
end
function HeroCell:refreshWithCfgId(id, isGray)
local heroInfo = ConfigManager:getConfig("hero")[id]
self:_refresh(id, isGray)
local lv = heroInfo.begin_lv
self.lvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, lv))
self.lvTx:setActive(true)
self.unlockTx:setActive(false)
self.lvUpArrow:setActive(false)
self.fragmenImg:setActive(true)
end
function HeroCell:_refresh(id, isGray)
local heroInfo = ConfigManager:getConfig("hero")[id]
self.clickCallback = nil
self.maskImg2:setActive(isGray)
self.heroBg:setSprite(GConst.ATLAS_PATH.ICON_HERO, GConst.FRAME_QLT[heroInfo.qlt])
self.heroDec:setSprite(GConst.ATLAS_PATH.ICON_HERO, GConst.HERO_DEC_QLT[heroInfo.qlt])
self.matchImg:setSprite(GConst.ATLAS_PATH.ICON_HERO, GConst.HeroConst.MATCH_ICON_NAME[heroInfo.position])
self.check:setActive(false)
self:refreshHeroIcon(heroInfo.icon)
-- self:setGray(isGray)
self.nameTx:setText(ModuleManager.HeroManager:getHeroName(id))
end
function HeroCell:showCheck(visible)
self.check:setActive(visible)
end
function HeroCell:addClickListener(callback)
self.clickCallback = callback
end
function HeroCell:setVisible(visible, scale)
self.baseObject:setVisible(visible, scale)
end
function HeroCell:setSpineVisible(visible, scale)
self.lvUpArrow:setActive(visible, scale)
end
function HeroCell:setGray(isGray)
-- if self.isGray == isGray then
-- return
-- end
-- self.isGray = isGray
-- self.icon:setImageGray(isGray)
-- self.matchImg:setImageGray(isGray)
end
return HeroCell