228 lines
8.0 KiB
Lua
228 lines
8.0 KiB
Lua
local HeroDetailUI = class("HeroDetailUI", BaseUI)
|
|
local COMP_HERO = "app/ui/hero/hero_info_comp"
|
|
local COMP_WEAPON = "app/ui/hero/weapon_info_comp"
|
|
local COMP_ARMOR = "app/ui/hero/armor_info_comp"
|
|
local SIZE_DELTA_Y_HERO = 942
|
|
local SIZE_DELTA_Y_LOOK = 802
|
|
|
|
function HeroDetailUI:isFullScreen()
|
|
return false
|
|
end
|
|
|
|
function HeroDetailUI:getPrefabPath()
|
|
return "assets/prefabs/ui/hero/hero_detail_ui.prefab"
|
|
end
|
|
|
|
function HeroDetailUI:onPressBackspace()
|
|
self:closeUI()
|
|
end
|
|
|
|
function HeroDetailUI:ctor(parmas)
|
|
self.panelType = parmas.panelType or GConst.EquipConst.PANEL_TYPE.HERO
|
|
self.onlyLook = parmas.onlyLook
|
|
if parmas.heroEntity then
|
|
self.heroEntity = parmas.heroEntity
|
|
else
|
|
local heroId = parmas.heroId
|
|
self.heroEntity = DataManager.HeroData:getHeroById(heroId)
|
|
end
|
|
end
|
|
|
|
function HeroDetailUI:onLoadRootComplete()
|
|
local uiMap = self.root:genAllChildren()
|
|
|
|
self.commonInfo = uiMap["hero_detail_ui.common"]
|
|
self.heroInfo = uiMap["hero_detail_ui.hero_info"]
|
|
self.weaponInfo = uiMap["hero_detail_ui.weapon_info"]
|
|
self.armorInfo = uiMap["hero_detail_ui.armor_info"]
|
|
self.txTitle = uiMap["hero_detail_ui.common.img_title.tx_title"]
|
|
self.btnClose = uiMap["hero_detail_ui.common.btn_close"]
|
|
self.btnHero = uiMap["hero_detail_ui.common.btns.btn_hero"]
|
|
self.txHero1 = uiMap["hero_detail_ui.common.btns.btn_hero.tx_btn"]
|
|
self.selectHero = uiMap["hero_detail_ui.common.btns.btn_hero.select"]
|
|
self.txHero2 = uiMap["hero_detail_ui.common.btns.btn_hero.select.tx_select"]
|
|
self.btnWeapon = uiMap["hero_detail_ui.common.btns.btn_weapon"]
|
|
self.lockWeapon = uiMap["hero_detail_ui.common.btns.btn_weapon.img_lock"]
|
|
self.txWeapon1 = uiMap["hero_detail_ui.common.btns.btn_weapon.tx_btn"]
|
|
self.selectWeapon = uiMap["hero_detail_ui.common.btns.btn_weapon.select"]
|
|
self.txWeapon2 = uiMap["hero_detail_ui.common.btns.btn_weapon.select.tx_select"]
|
|
self.btnArmor = uiMap["hero_detail_ui.common.btns.btn_armor"]
|
|
self.lockArmor = uiMap["hero_detail_ui.common.btns.btn_armor.img_lock"]
|
|
self.txArmor1 = uiMap["hero_detail_ui.common.btns.btn_armor.tx_btn"]
|
|
self.selectArmor = uiMap["hero_detail_ui.common.btns.btn_armor.select"]
|
|
self.txArmor2 = uiMap["hero_detail_ui.common.btns.btn_armor.select.tx_select"]
|
|
self.btnLeft = uiMap["hero_detail_ui.common.btn_left"]
|
|
self.btnRight = uiMap["hero_detail_ui.common.btn_right"]
|
|
|
|
self.txHero1:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4))
|
|
self.txHero2:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_4))
|
|
self.txWeapon1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_1))
|
|
self.txWeapon2:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_1))
|
|
self.txArmor1:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2))
|
|
self.txArmor2:setText(I18N:getGlobalText(I18N.GlobalConst.EQUIP_DESC_2))
|
|
if not DataManager.EquipData:isWeaponOpen() then
|
|
self.lockWeapon:setVisible(true)
|
|
GFunc.centerImgAndTx(self.lockWeapon, self.txWeapon1, 5)
|
|
else
|
|
self.lockWeapon:setVisible(false)
|
|
end
|
|
if not DataManager.EquipData:isArmorOpen() then
|
|
self.lockArmor:setVisible(true)
|
|
GFunc.centerImgAndTx(self.lockArmor, self.txArmor1, 5)
|
|
else
|
|
self.lockArmor:setVisible(false)
|
|
end
|
|
|
|
self.heroList = DataManager.HeroData:getAllHeroesSort()
|
|
self:updateSide()
|
|
self:refreshShow()
|
|
|
|
self.btnHero:addClickListener(function()
|
|
self.panelType = GConst.EquipConst.PANEL_TYPE.HERO
|
|
self:refreshShow()
|
|
end)
|
|
self.btnWeapon:addClickListener(function()
|
|
if not DataManager.EquipData:isWeaponOpen(true) then
|
|
return
|
|
end
|
|
self.panelType = GConst.EquipConst.PANEL_TYPE.WEAPON
|
|
self:refreshShow()
|
|
end)
|
|
self.btnArmor:addClickListener(function()
|
|
if not DataManager.EquipData:isArmorOpen(true) then
|
|
return
|
|
end
|
|
self.panelType = GConst.EquipConst.PANEL_TYPE.ARMOR
|
|
self:refreshShow()
|
|
end)
|
|
self.btnClose:addClickListener(function()
|
|
self:closeUI()
|
|
end)
|
|
self.btnLeft:addClickListener(function()
|
|
if not self:isExistLeftHero() then
|
|
return
|
|
end
|
|
self.heroEntity = DataManager.HeroData:getHeroById(self.heroList[self.idxLast].cfgId)
|
|
self:updateSide()
|
|
self:refreshShow()
|
|
end)
|
|
self.btnRight:addClickListener(function()
|
|
if not self:isExistRightHero() then
|
|
return
|
|
end
|
|
self.heroEntity = DataManager.HeroData:getHeroById(self.heroList[self.idxNext].cfgId)
|
|
self:updateSide()
|
|
self:refreshShow()
|
|
end)
|
|
self:addEventListener(EventManager.CUSTOM_EVENT.EQUIP_UPGRADE_SUCCESS, function()
|
|
self:refreshShow()
|
|
end)
|
|
self:addEventListener(EventManager.CUSTOM_EVENT.GO_DUNGEON_UI, function()
|
|
self:closeUI()
|
|
end)
|
|
self:bind(DataManager.BagData.ItemData, "dirty", function()
|
|
self:refreshShow()
|
|
end)
|
|
end
|
|
|
|
function HeroDetailUI:updateSide()
|
|
for index, data in ipairs(self.heroList) do
|
|
if data.cfgId == self.heroEntity:getCfgId() then
|
|
self.idxLast = index - 1
|
|
self.idxNext = index + 1
|
|
end
|
|
end
|
|
end
|
|
|
|
function HeroDetailUI:refreshShow()
|
|
self.txTitle:setText(self.heroEntity:getName())
|
|
|
|
if self.panelType == GConst.EquipConst.PANEL_TYPE.HERO then
|
|
self:showHeroInfo()
|
|
elseif self.panelType == GConst.EquipConst.PANEL_TYPE.WEAPON then
|
|
self:showWeaponInfo()
|
|
elseif self.panelType == GConst.EquipConst.PANEL_TYPE.ARMOR then
|
|
self:showArmorInfo()
|
|
end
|
|
if self.onlyLook then -- 仅查看的不显示升级和激活按钮
|
|
self.btnHero:setVisible(false)
|
|
self.btnWeapon:setVisible(false)
|
|
self.btnArmor:setVisible(false)
|
|
self.btnLeft:setVisible(false)
|
|
self.btnRight:setVisible(false)
|
|
self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_LOOK)
|
|
else
|
|
self.btnHero:setVisible(true)
|
|
self.btnWeapon:setVisible(true)
|
|
self.btnArmor:setVisible(true)
|
|
self.btnLeft:setVisible(self:isExistLeftHero())
|
|
self.btnRight:setVisible(self:isExistRightHero())
|
|
self.commonInfo:setSizeDeltaY(SIZE_DELTA_Y_HERO)
|
|
end
|
|
end
|
|
|
|
function HeroDetailUI:showHeroInfo()
|
|
self.heroInfo:setActive(true)
|
|
self.selectHero:setActive(true)
|
|
self.weaponInfo:setActive(false)
|
|
self.selectWeapon:setActive(false)
|
|
self.armorInfo:setActive(false)
|
|
self.selectArmor:setActive(false)
|
|
|
|
if not self.compHero then
|
|
self.heroInfo:initPrefabHelper()
|
|
self.heroInfo:genAllChildren()
|
|
self.compHero = self.heroInfo:addLuaComponent(COMP_HERO)
|
|
end
|
|
|
|
self.compHero:setHeroData(self.heroEntity, self.onlyLook)
|
|
self.compHero:refresh()
|
|
end
|
|
|
|
function HeroDetailUI:showWeaponInfo()
|
|
self.heroInfo:setActive(false)
|
|
self.selectHero:setActive(false)
|
|
self.weaponInfo:setActive(true)
|
|
self.selectWeapon:setActive(true)
|
|
self.armorInfo:setActive(false)
|
|
self.selectArmor:setActive(false)
|
|
|
|
if not self.compWeapon then
|
|
self.weaponInfo:initPrefabHelper()
|
|
self.weaponInfo:genAllChildren()
|
|
self.compWeapon = self.weaponInfo:addLuaComponent(COMP_WEAPON)
|
|
end
|
|
|
|
self.compWeapon:setHeroData(self.heroEntity)
|
|
self.compWeapon:refresh()
|
|
end
|
|
|
|
function HeroDetailUI:showArmorInfo()
|
|
self.heroInfo:setActive(false)
|
|
self.selectHero:setActive(false)
|
|
self.weaponInfo:setActive(false)
|
|
self.selectWeapon:setActive(false)
|
|
self.armorInfo:setActive(true)
|
|
self.selectArmor:setActive(true)
|
|
|
|
if not self.compArmor then
|
|
self.armorInfo:initPrefabHelper()
|
|
self.armorInfo:genAllChildren()
|
|
self.compArmor = self.armorInfo:addLuaComponent(COMP_ARMOR)
|
|
end
|
|
|
|
self.compArmor:setHeroData(self.heroEntity)
|
|
self.compArmor:refresh()
|
|
end
|
|
|
|
-- 是否存在左侧英雄
|
|
function HeroDetailUI:isExistLeftHero()
|
|
return self.idxLast and self.idxLast > 0
|
|
end
|
|
|
|
-- 是否存在右侧英雄
|
|
function HeroDetailUI:isExistRightHero()
|
|
return self.idxNext and self.idxNext <= #self.heroList
|
|
end
|
|
|
|
return HeroDetailUI |