local HeroManager = class("HeroManager", BaseModule) function HeroManager:showHeroDetailUI(heroId, onlyLook, heroEntity) UIManager:showUI("app/ui/hero/hero_detail_ui", {heroId = heroId, onlyLook = onlyLook, heroEntity = heroEntity}) end function HeroManager:showHeroUnlockUI(heroIdList) UIManager:showUI("app/ui/hero/hero_unlock_ui", {heroIdList = heroIdList}) end function HeroManager:upgradeHero(heroId, heroEntity) local heroEntity = heroEntity or DataManager.HeroData:getHeroById(heroId) if not heroEntity then return end local canLvUp, state = heroEntity:canLvUp(true) if not canLvUp then -- 如果是金币不足 尝试触发金币礼包 if state == GConst.HeroConst.CHECK_LV_UP_STATE.COIN_NOT_ENOUGH then ModuleManager.ShopManager:tryTriggerCoinGift() end return end self:sendMessage(ProtoMsgType.FromMsgEnum.HeroUpgradeReq, {id = heroId}, {}, self.upgradeHeroFinish, BIReport.ITEM_GET_TYPE.UPGRADE_HERO) end function HeroManager:upgradeHeroFinish(result) if result.err_code == GConst.ERROR_STR.SUCCESS then DataManager.HeroData:setHeroLv(result.hero.id, result.hero.level) DataManager.HeroData:setDirty() AudioManager:playEffect(AudioManager.EFFECT_ID.HERO_UP) end end ------------------------------------------ 英雄相关的工具方法 ------------------------------ function HeroManager:getHeroName(id, needColor) local name = I18N:getConfig("hero")[id].name if name and needColor then local color = GConst.BattleConst.ELEMENT_COLOR[self:getHeroMatchType(id)] if color then name = string.format("%s", color, name) end end return name end function HeroManager:getHeroDesc(id) return I18N:getConfig("hero")[id].desc end function HeroManager:getHeroIcon(heroId) local cfg = ConfigManager:getConfig("hero")[heroId] return cfg and tostring(cfg.icon) end function HeroManager:getHeroSmallFrame(heroId) local cfg = ConfigManager:getConfig("hero")[heroId] return cfg and GConst.HERO_SMALL_FRAME_QLT[cfg.qlt] end function HeroManager:getHeroMatchType(heroId) local cfg = ConfigManager:getConfig("hero")[heroId] return cfg.position end function HeroManager:getMatchTypeIcon(matchType) return GConst.HeroConst.MATCH_ICON_NAME[matchType] end function HeroManager:getMatchTypeName(matchType, needColor) local name = I18N:getGlobalText("ELEMENT_NAME_" .. matchType) if name and needColor then local color = GConst.BattleConst.ELEMENT_COLOR[matchType] if color then name = string.format("%s", color, name) end end return name end function HeroManager:getSkillDesc(skillId) local cfg = I18N:getConfig("skill")[skillId] return cfg and cfg.desc end function HeroManager:getSkillIcon(skillId) local cfg = ConfigManager:getConfig("skill")[skillId] return cfg and tostring(cfg.battle_icon) end function HeroManager:getSkillRogueDesc(skillId, value) local cfg = ConfigManager:getConfig("skill_rogue")[skillId] if not cfg then return GConst.EMPTY_STRING end local str if cfg.attr then str = GFunc.getPerStr(cfg.attr.type, value) end return I18N:getText("skill_rogue", skillId, "desc", str) end function HeroManager:showValueRogue(skillId) local cfg = ConfigManager:getConfig("skill_rogue")[skillId] if cfg and cfg.toast_mark then return true end return false end function HeroManager:getSkillRogueIcon(skillId) local cfg = ConfigManager:getConfig("skill_rogue")[skillId] return cfg and tostring(cfg.icon) end function HeroManager:getSkillRogueBattleBg(skillId) local cfg = ConfigManager:getConfig("skill_rogue")[skillId] return cfg and "battle_board_" .. cfg.qlt end function HeroManager:getSkillRogueBg(skillId, onlyQlt) local cfg = ConfigManager:getConfig("skill_rogue")[skillId] if cfg.skill_position and not onlyQlt then -- 解锁技能类型 return "frame_skill_0" end return cfg and "frame_" .. cfg.qlt end function HeroManager:getSkillRoguePosition(skillId) local cfg = ConfigManager:getConfig("skill_rogue")[skillId] return cfg and cfg.skill_position end function HeroManager:getActiveRogueLvs() if not self.activeRogueLvs then self.activeRogueLvs = {} local lvMap = {} for lv, info in ipairs(ConfigManager:getConfig("hero_level")) do if not lvMap[info.unlock_skill] then table.insert(self.activeRogueLvs, lv) lvMap[info.unlock_skill] = true end end end return self.activeRogueLvs end function HeroManager:getMonsterName(monsterBaseId) if not I18N:getConfig("monster_base") then return end return I18N:getText("monster_base", monsterBaseId, "name") end return HeroManager