local HeroAwaken_Controller = {} local private = {} local EventSystem = require('Event/EventSystem') local CONST_CODE = 1000 HeroAwaken_Controller.AwakeConditionType = { Hero = 1, --武将 Weapon = 2, --神兵 WeaponForge = 3, --锻铸 } HeroAwaken_Controller.SkillUpgradePrecondition = { Star = 1, UsedPointNum = 2, NeedPoint = 3, NoNeedPoint = 4, Cost = 5, } function HeroAwaken_Controller.OnStartup() EventSystem.Regist(EventID.FunctionUnlockUpdate, private.OnFunctionUnlockUpdate) EventSystem.Regist(EventID.AcquireSystemRedAfterUnlock, private.OnEnterWorldPostprocess) EventSystem.Regist(EventID.UI_HeroAwaken_UpdateWeaponAwakenSkillInfo, private.RefreshWeaponSkillRed) EventSystem.Regist(EventID.Level_BattleSummary, private.ShowHeroExp) private.hasNoticeRedDict = {} end function private.OnEnterWorldPostprocess() private.RefreshWeaponSkillRed() end function private.OnFunctionUnlockUpdate(fucId, isUnlock) if fucId == MDL.Unlock.FunctionType.AwakenActivity then if not isUnlock then private.ForceRemoveAll() end end end function private.ForceRemoveAll() --执行一些GMS关闭的操作 UIManager.CloseView(Const_UI_Lua.UIEnum.UIFairAwakenSkillPlan) UIManager.CloseView(Const_UI_Lua.UIEnum.UIHeroAwakenpopup) end --是否拥有满足觉醒条件的武将 function HeroAwaken_Controller.HasPreAwakenHero() for _, heroNum in DataSheetManager.HeroNum:GetEnumerator() do if MDL.HeroAwaken.GetHeroAwakenInfo(heroNum.ID) and HeroAwaken_Controller.IsEnableAwake(heroNum.ID) then return true end end return false end --服务器是否开启武将觉醒 function HeroAwaken_Controller.IsHeroPreAwaken(heroId) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then return false end return MDL.HeroAwaken.GetHeroAwakenInfo(heroId) or false end --是否有武将觉醒入口 function HeroAwaken_Controller.IsShowHeroAwakenEntry(heroId) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then return false end local hasCfg = DataSheetManager.AwakenHeroNum:TryGetDataByID(heroId) if hasCfg and MDL.HeroAwaken.GetHeroAwakenInfo(heroId) then return HeroAwaken_Controller.CheckEnableAwake(heroId, HeroAwaken_Controller.AwakeConditionType.Hero) end return false end --是否有神兵觉醒入口 function HeroAwaken_Controller.IsShowWeaponAwakenEntry(heroId) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then return false end local hasCfg = DataSheetManager.AwakenHeroNum:TryGetDataByID(heroId) if hasCfg and MDL.HeroAwaken.GetHeroAwakenInfo(heroId) then return HeroAwaken_Controller.CheckEnableAwake(heroId, HeroAwaken_Controller.AwakeConditionType.Weapon) end return false end --武将是否满足激活条件 function HeroAwaken_Controller.IsEnableAwake(heroId) local hasCfg = DataSheetManager.AwakenHeroNum:TryGetDataByID(heroId) if hasCfg == false then return false end for i, type in pairs(HeroAwaken_Controller.AwakeConditionType) do if HeroAwaken_Controller.CheckEnableAwake(heroId, type) == false then return false end end return true end function HeroAwaken_Controller.CheckEnableAwake(heroId, type) if type == HeroAwaken_Controller.AwakeConditionType.Hero then return CTL.HeroStar.IsHeroReachMaxStar(heroId) elseif type == HeroAwaken_Controller.AwakeConditionType.Weapon then return MDL.DivineWeapon.IsWeaponMax(heroId) else return CTL.DivineWeapon.IsDivineWeaponForgeMax(heroId) end end function HeroAwaken_Controller.GetSmallBreakAttr(heroId, bigBreak, smallBreak) local content = "" local _, config = DataSheetManager.HeroAwakenStar:TryGetDataByHeroID_Star(heroId, bigBreak) if config then local _, attrData = DataSheetManager.HeroAwakenStarAttrRepeat:TryGetDataByAttrRepeatID(config.Attr[smallBreak]) if attrData then --只有1条属性 local attr = attrData.Attr_Table[1] local attrName = DataSheetManager.AttrData:GetDataByID(attr.AttrType).Name local attrValue = attr.AttrNum content = UIUtils.GetLocalizedTxt(Const_IDS[attrName]) .. UTL.Color.FormatGreenColor("+" .. attrValue) end content = content .. "\n" .. UIUtils.GetLocalizedTxt(Const_IDS.IDS_HeroAwaken_TianZiSkill) .. UTL.Color.FormatGreenColor("+" .. config.Talent[smallBreak]) end return content end function HeroAwaken_Controller.GetWeaponSmallBreakAttr(heroId, bigBreak, smallBreak) local _, config = DataSheetManager.MagicWeaponAwakenStar:TryGetDataByMagicWeaponID_Star(heroId, bigBreak) if config then local _, attrData = DataSheetManager.MagicWeaponAwakenStarAttr:TryGetDataByAttrRepeatID(config.Attr[smallBreak]) if attrData then --只有1条属性 local attr = attrData.Attr_Table[1] local attrName = DataSheetManager.AttrData:GetDataByID(attr.AttrType).Name local attrValue = attr.AttrNum return UIUtils.GetLocalizedTxt(Const_IDS[attrName]) .. UTL.Color.FormatGreenColor("+" .. attrValue) end end return nil end --判断觉醒技能周边是否激活 function HeroAwaken_Controller.CheckIfHeroSkillNearbyActive(heroId, pointId) if pointId == 1 then --第一个点特殊处理 return true end local cfg = DataSheetManager.HeroAwakenTalent:GetDataByHeroID_PointId_PointLevel(heroId, pointId, 1) for i, v in ipairs(cfg.PointNearby) do --周边只要有一个激活即可 if MDL.HeroAwaken.GetSkillLevel(heroId, 0, v) > 0 then return true end end return false end function HeroAwaken_Controller.GetHeroSkillAttr(heroId, pointId) local result = {} local level = MDL.HeroAwaken.GetSkillLevel(heroId, 0, pointId) if level == 0 then local cfg = DataSheetManager.HeroAwakenTalent:GetDataByHeroID_PointId_PointLevel(heroId, pointId, 1) for i, v in ipairs(cfg.AttrType) do table.insert(result, { attrType = v, attrValue = cfg.AttrNum[i] }) end else local addParam = 0 local cfg = DataSheetManager.HeroAwakenTalent:GetDataByHeroID_PointId_PointLevel(heroId, pointId, level) for i, v in ipairs(cfg.PointNearby) do local nearByLevel = MDL.HeroAwaken.GetSkillLevel(heroId, 0, v) if nearByLevel > 0 then local nearByCfg = DataSheetManager.HeroAwakenTalent:GetDataByHeroID_PointId_PointLevel(heroId, v, nearByLevel) if nearByCfg.TalentType == 2 then addParam = addParam + nearByCfg.PointNearbyUp end end end if addParam > 0 then for index, type in ipairs(cfg.AttrType) do table.insert(result, { attrType = type, attrValue = string.format("%s", math.ceil(cfg.AttrNum[index] * (1 + addParam))) }) end else for index, type in ipairs(cfg.AttrType) do table.insert(result, { attrType = type, attrValue = cfg.AttrNum[index] }) end end end return result end function HeroAwaken_Controller.GetHeroExtraIntelligence(heroId) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then return 0 end if MDL.HeroAwaken.GetIsHeroAwaken(heroId) then return DataSheetManager.AwakenHeroNum:GetDataByID(heroId).HeroIntelligence end return 0 end function HeroAwaken_Controller.GetWeaponExtraIntelligence(weaponId) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then return 0 end if MDL.HeroAwaken.GetIsWeaponAwaken(weaponId) then return DataSheetManager.AwakenHeroNum:GetDataByID(weaponId).HeroIntelligence end return 0 end function HeroAwaken_Controller.OnEnterAwaken(heroId) if not private.hasNoticeRedDict[heroId] and HeroAwaken_Controller.IsEnableAwake(heroId) then private.hasNoticeRedDict[heroId] = true EventSystem.Dispatch(EventID.UI_HeroAwaken_NoticeEnableAwake) end end function HeroAwaken_Controller.GetNoticeRed(heroId) if private.hasNoticeRedDict[heroId] then return false end return HeroAwaken_Controller.IsEnableAwake(heroId) end function HeroAwaken_Controller.CheckAwakenRed(heroId) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then return false end local isAwaken = MDL.HeroAwaken.GetIsHeroAwaken(heroId) if isAwaken == false then --满足觉醒条件未觉醒,每次登录给一个红点 if not private.hasNoticeRedDict[heroId] and MDL.HeroAwaken.GetHeroAwakenInfo(heroId) ~= nil and HeroAwaken_Controller.IsEnableAwake(heroId) then return true end --觉醒任务 if MDL.HeroAwaken.CheckIfTaskNotSubmit(heroId) then return true end end --觉醒养成 if HeroAwaken_Controller.CheckHeroAwakenBreakRed(heroId) then return true end return false end function HeroAwaken_Controller.CheckHeroAwakenBreakRed(heroId) if MDL.HeroAwaken.GetIsHeroAwaken(heroId) == false then return false end if MDL.HeroAwaken.GetNextStarData(heroId) == nil then return false end local curBigStar, curSmallStar = MDL.HeroAwaken.GetCurStar(heroId) local starData = DataSheetManager.HeroAwakenStar:GetDataByHeroID_Star(heroId, curBigStar) local itemTable = DataSheetManager.HeroAwakenStarItemRepeat:GetDataByItemRepeatID(starData.Item[curSmallStar + 1]).Item_Table for i, v in ipairs(itemTable) do local itemID = itemTable[i].ItemID local itemNum = itemTable[i].ItemNum local curCount = MDL.Bag.GetItemCount(itemID) if curCount < itemNum then return false end end return true end --天资红点 function HeroAwaken_Controller.CheckHeroSkillRed(heroId) if MDL.HeroAwaken.GetIsHeroAwaken(heroId) == false then return false end local pointCount = MDL.HeroAwaken.GetHeroSkillPointNums(heroId) if pointCount > 0 then for i, v in DataSheetManager.HeroAwakenTalent:GetDataByHeroID_PointId_PointLevel(heroId) do if v.PointLevel == 1 then local level = MDL.HeroAwaken.GetSkillLevel(heroId, 0, v.PointId) local _, levelCfg = DataSheetManager.HeroAwakenTalent:TryGetDataByHeroID_PointId_PointLevel(heroId, v.PointId, level + 1) if levelCfg then if pointCount >= levelCfg.TalentCost and HeroAwaken_Controller.CheckIfHeroSkillNearbyActive(heroId, v.PointId) and MDL.HeroAwaken.GetCurStar(heroId) >= levelCfg.Preconditions then return true end end end end end return false end function HeroAwaken_Controller.CheckWeaponAwakenRed(heroId) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then return false end local isAwaken = MDL.HeroAwaken.GetIsWeaponAwaken(heroId) if isAwaken == false then local isHeroAwaken = MDL.HeroAwaken.GetIsHeroAwaken(heroId) if isHeroAwaken then local data = DataSheetManager.AwakenHeroNum:GetDataByID(heroId).ActivationCost local curCount = MDL.Bag.GetItemCount(data[1]) if curCount >= data[2] then return true end end else if MDL.HeroAwaken.GetNextWeaponStarData(heroId) == nil then return false end local curBigStar, curSmallStar = MDL.HeroAwaken.GetCurWeaponStar(heroId) local starData = DataSheetManager.MagicWeaponAwakenStar:GetDataByMagicWeaponID_Star(heroId, curBigStar) local isBigBreak = curSmallStar == #starData.Item - 1 if isBigBreak and curBigStar + 1 > MDL.HeroAwaken.GetCurStar(heroId) then return false end local itemTable = DataSheetManager.MagicWeaponAwakenStarItem:GetDataByItemRepeatID(starData.Item[curSmallStar + 1]).Item_Table for i, v in ipairs(itemTable) do local itemID = itemTable[i].ItemID local itemNum = itemTable[i].ItemNum local curCount = MDL.Bag.GetItemCount(itemID) if curCount < itemNum then return false end end return true end return false end --灵识红点 function HeroAwaken_Controller.CheckWeaponSkillRed(weaponId) if not MDL.HeroAwaken.GetIsWeaponAwaken(weaponId) then return false end if MDL.HeroAwaken.GetAwakenInfoParam(weaponId, "curWeaponSkillPointNums") == 0 then return false end local isSuccess = DataSheetManager.MagicWeaponAwakenTalent:TryGetDataByMagicWeaponID_PointID_PointLevel(weaponId) if not isSuccess then return false end for _, v in DataSheetManager.MagicWeaponAwakenTalent:GetDataByMagicWeaponID_PointID_PointLevel(weaponId) do if v.PointLevel == 1 and v.PointType == 2 then local canUpgrade = true for _, precondition in pairs(HeroAwaken_Controller.SkillUpgradePrecondition) do if not HeroAwaken_Controller.CheckWeaponAwakenSkillUpgradePrecondition(weaponId, v.PointID, precondition) then canUpgrade = false break end end if canUpgrade then return true end end end return false end function HeroAwaken_Controller.CheckWeaponAwakenSkillUpgradePrecondition(weaponId, pointId, precondition) local level = MDL.HeroAwaken.GetSkillLevel(weaponId, 1, pointId) local isSuccess, nextLevelCfg = DataSheetManager.MagicWeaponAwakenTalent:TryGetDataByMagicWeaponID_PointID_PointLevel(weaponId, pointId, level + 1) if not isSuccess then return false end if precondition == HeroAwaken_Controller.SkillUpgradePrecondition.Star then local curStar = MDL.HeroAwaken.GetCurWeaponStar(weaponId) return curStar >= nextLevelCfg.Preconditions elseif precondition == HeroAwaken_Controller.SkillUpgradePrecondition.UsedPointNum then local num = CTL.HeroAwaken.GetWeaponSkillUsedPointNum(weaponId) return num >= nextLevelCfg.NeedPointNum elseif precondition == HeroAwaken_Controller.SkillUpgradePrecondition.NeedPoint then for i, v in ipairs(nextLevelCfg.NeedPoint) do local level = MDL.HeroAwaken.GetSkillLevel(weaponId, 1, v) if level < nextLevelCfg.NeedPointLevel[i] then return false end end return true elseif precondition == HeroAwaken_Controller.SkillUpgradePrecondition.NoNeedPoint then local _, cfg = DataSheetManager.MagicWeaponAwakenNoNeedPoint:TryGetDataByMagicWeaponID(weaponId) if cfg then for _, v in ipairs(cfg.NoNeedPoint_Table) do local isFound = false for _, id in ipairs(v.PointID) do if id == pointId then isFound = true break end end if isFound then for _, id in ipairs(v.PointID) do if id ~= pointId then local level = MDL.HeroAwaken.GetSkillLevel(weaponId, 1, id) if level > 0 then return false end end end end end end return true elseif precondition == HeroAwaken_Controller.SkillUpgradePrecondition.Cost then local curPointNum = MDL.HeroAwaken.GetAwakenInfoParam(weaponId, "curWeaponSkillPointNums") return curPointNum >= nextLevelCfg.Cost end end function HeroAwaken_Controller.CheckPlanUpgradePrecondition(weaponId, planId, pointId, precondition) local level = MDL.HeroAwaken.GetPlanSkillLevel(weaponId, planId, pointId) local isSuccess, nextLevelCfg = DataSheetManager.MagicWeaponAwakenTalent:TryGetDataByMagicWeaponID_PointID_PointLevel(weaponId, pointId, level + 1) if not isSuccess then return false end if precondition == HeroAwaken_Controller.SkillUpgradePrecondition.UsedPointNum then local num = MDL.HeroAwaken.GetPlanUsedPointNum(weaponId, planId) return num >= nextLevelCfg.NeedPointNum elseif precondition == HeroAwaken_Controller.SkillUpgradePrecondition.NeedPoint then for i, v in ipairs(nextLevelCfg.NeedPoint) do local level = MDL.HeroAwaken.GetPlanSkillLevel(weaponId, planId, v) if level < nextLevelCfg.NeedPointLevel[i] then return false end end return true elseif precondition == HeroAwaken_Controller.SkillUpgradePrecondition.NoNeedPoint then local _, cfg = DataSheetManager.MagicWeaponAwakenNoNeedPoint:TryGetDataByMagicWeaponID(weaponId) if cfg then for _, v in ipairs(cfg.NoNeedPoint_Table) do local isFound = false for _, id in ipairs(v.PointID) do if id == pointId then isFound = true break end end if isFound then for _, id in ipairs(v.PointID) do if id ~= pointId then local level = MDL.HeroAwaken.GetPlanSkillLevel(weaponId, planId, id) if level > 0 then return false end end end end end end return true elseif precondition == HeroAwaken_Controller.SkillUpgradePrecondition.Cost then local curPointNum = MDL.HeroAwaken.GetPlanCurrPointNum(weaponId, planId) return curPointNum >= nextLevelCfg.Cost end end function private.RefreshWeaponSkillRed() if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.AwakenActivity) == false then CTL.RedPoint.RemoveRedPoint(CTL.RedPoint.RedPointKey.WeaponBtn_WeaponView_AwakenSkill) return end for i, v in DataSheetManager.AwakenHeroNum:GetEnumerator() do if MDL.HeroAwaken.GetIsWeaponAwaken(v.ID) and HeroAwaken_Controller.CheckWeaponSkillRed(v.ID) then CTL.RedPoint.AddRedPoint(CTL.RedPoint.RedPointKey.WeaponBtn_WeaponView_AwakenSkill) return end end CTL.RedPoint.RemoveRedPoint(CTL.RedPoint.RedPointKey.WeaponBtn_WeaponView_AwakenSkill) end function HeroAwaken_Controller.SetHeroHalfCardImageByHeroId(cardImg, heroId) local awakenHeroData = DataSheetManager.AwakenHeroNum:GetDataByID(heroId) UIUtils.SetImageByAssetBundle(cardImg, string.format(ConstAssetPathConfig.HeroPicPath, awakenHeroData.HalfCardImage)) end function HeroAwaken_Controller.GetAwakenWeaponName(heroId) local awakenHeroData = DataSheetManager.AwakenHeroNum:GetDataByID(heroId) local appearanceData = DataSheetManager.WeaponAppearance:GetDataByID(awakenHeroData.WeaponAppearance) local curBigStar = MDL.HeroAwaken.GetCurWeaponStar(heroId) if curBigStar > 0 then return UIUtils.GetLocalizedTxt(Const_IDS[appearanceData.AppearanceName]) .. "+" .. curBigStar else return UIUtils.GetLocalizedTxt(Const_IDS[appearanceData.AppearanceName]) end end function HeroAwaken_Controller.SetWeaponImage(weaponImage, heroId) local awakenHeroData = DataSheetManager.AwakenHeroNum:GetDataByID(heroId) local appearanceData = DataSheetManager.WeaponAppearance:GetDataByID(awakenHeroData.WeaponAppearance) UIUtils.SetImageByAssetBundle(weaponImage, appearanceData.PreviewCardImage) end function HeroAwaken_Controller.SetWeaponItemImage(weaponImage, heroId) local awakenHeroData = DataSheetManager.AwakenHeroNum:GetDataByID(heroId) local appearanceData = DataSheetManager.WeaponAppearance:GetDataByID(awakenHeroData.WeaponAppearance) UTL.Item.ItemIconWithoutBg(weaponImage, appearanceData.Activation) end function HeroAwaken_Controller.SetHeroIconByHeroId(img, heroId) local awakenHeroData = DataSheetManager.AwakenHeroNum:GetDataByID(heroId) local path = string.format(ConstAssetPathConfig.HeadImgPath, awakenHeroData.SquareHead) UIUtils.SetImageByAssetBundle(img, path) end function HeroAwaken_Controller.EncodeHeroId(heroId) return heroId * CONST_CODE end function HeroAwaken_Controller.DecodeHeroId(heroId) local result = heroId / CONST_CODE local success = DataSheetManager.AwakenHeroNum:TryGetDataByID(result) if success then return result, true end return heroId, false end --如果是觉醒id,转换成原皮id;如果是原皮id,转换成觉醒id,无觉醒则返回原值 function HeroAwaken_Controller.TranslateHeroId(id) if id == nil then return nil end local heroId, res = HeroAwaken_Controller.DecodeHeroId(id) if res then return heroId end --判断是否有对应的觉醒武将 if DataSheetManager.AwakenHeroNum:TryGetDataByID(id) then return HeroAwaken_Controller.EncodeHeroId(heroId) end return id end function HeroAwaken_Controller.GetAwakenDisplaySkillIcon(heroId, skillId) for i, v in DataSheetManager.MagicWeaponAwakenTalent:GetDataByMagicWeaponID_PointID_PointLevel(heroId) do if v.SkillID == skillId then return v.Icon end end return nil end function private.SortSkillRule(skillId_a, skillId_b) local skillDataA = DataSheetManager.SkillTipsData:GetDataByID(skillId_a) local skillDataB = DataSheetManager.SkillTipsData:GetDataByID(skillId_b) if skillDataA.ShowOrder ~= skillDataB.ShowOrder then return skillDataA.ShowOrder < skillDataB.ShowOrder else return skillId_a < skillId_b end end function HeroAwaken_Controller.TryFillAwakenHero(heroList, isFair) if isFair then --公平赛事只受配置控制,与自身觉醒无关 for _, v in DataSheetManager.AwakenHeroNum:GetEnumerator() do if DataSheetManager.HeroNum:GetDataByID(v.ID).IsFairPVPAwaken == true then for i, heroId in ipairs(heroList) do if heroId == v.ID then table.insert(heroList, i, HeroAwaken_Controller.EncodeHeroId(heroId)) break end end end end else --非公平赛事只与自身觉醒有关 for _, v in DataSheetManager.AwakenHeroNum:GetEnumerator() do if MDL.HeroAwaken.GetIsHeroAwaken(v.ID) then for i, heroId in ipairs(heroList) do if heroId == v.ID then table.insert(heroList, i, HeroAwaken_Controller.EncodeHeroId(heroId)) break end end end end end end function HeroAwaken_Controller.TryFillAwakenHeroData(heroList, isFair) for _, v in DataSheetManager.AwakenHeroNum:GetEnumerator() do if (isFair and DataSheetManager.HeroNum:GetDataByID(v.ID).IsFairPVPAwaken == true) or MDL.HeroAwaken.GetIsHeroAwaken(v.ID) then for i, data in ipairs(heroList) do if data.heroId == v.ID then table.insert(heroList, i, { heroId = HeroAwaken_Controller.EncodeHeroId(data.heroId), isFree = false }) break end end end end end function HeroAwaken_Controller.GetAwakenPortraitId(heroId) local _, awakenHeroData = DataSheetManager.AwakenHeroNum:TryGetDataByID(heroId) if awakenHeroData then return awakenHeroData.HeadPortrait end return 0 end function HeroAwaken_Controller.GetHeroAwakenTalent(heroId) local list = {} for _, v in DataSheetManager.HeroAwakenTalent:GetDataByHeroID_PointId_PointLevel(heroId) do if v.TalentType == 3 then local level = MDL.HeroAwaken.GetSkillLevel(heroId, 0, v.PointId) if (level > 0 and level or 1) == v.PointLevel then table.insert(list, { heroId = heroId, skillId = v.TalentID, pointId = v.PointId, level = level, isHeroAwakenTalent = true }) end end end return list end function HeroAwaken_Controller.GetWeaponSkillUsedPointNum(weaponId) local num = 0 local isSuccess = DataSheetManager.MagicWeaponAwakenTalent:TryGetDataByMagicWeaponID_PointID_PointLevel(weaponId) if not isSuccess then return num end for _, v in DataSheetManager.MagicWeaponAwakenTalent:GetDataByMagicWeaponID_PointID_PointLevel(weaponId) do if v.PointType == 2 then local level = MDL.HeroAwaken.GetSkillLevel(weaponId, 1, v.PointID) if level >= v.PointLevel then num = num + v.Cost end end end return num end function HeroAwaken_Controller.HasActiveHeroSkill(heroId) for _, v in DataSheetManager.HeroAwakenTalent:GetEnumerator() do local level = MDL.HeroAwaken.GetSkillLevel(heroId, 0, v.PointId) if level > 0 then return true end end return false end function HeroAwaken_Controller.SetIsOpenActivityFlag(flag) private.isOpenActivityFlag = flag end function HeroAwaken_Controller.GetIsOpenActivityFlag() return private.isOpenActivityFlag end function HeroAwaken_Controller.GetItemUseHeroId() for i, v in DataSheetManager.AwakenHeroNum:GetEnumerator() do if MDL.HeroAwaken.GetIsHeroAwaken(v.ID) then return v.ID end end return nil end function HeroAwaken_Controller.GetHeroQuality(heroId, isAwaken) if isAwaken then return DataSheetManager.AwakenHeroNum:GetDataByID(heroId).HeroQuality else return DataSheetManager.HeroNum:GetDataByID(heroId).HeroQuality end end function HeroAwaken_Controller.GetWeaponQuality(heroId, isAwaken) if isAwaken then return DataSheetManager.AwakenHeroNum:GetDataByID(heroId).HeroQuality else return DataSheetManager.MagicWeaponData:GetDataByMagicWeaponID(heroId).MagicWeaponQuality end end function HeroAwaken_Controller.GetItemIconId(heroId) local starData = DataSheetManager.HeroAwakenStar:GetDataByHeroID_Star(heroId, 0) local itemTable = DataSheetManager.HeroAwakenStarItemRepeat:GetDataByItemRepeatID(starData.Item[1]).Item_Table return itemTable[1].ItemID end function HeroAwaken_Controller.GetIfWearAwakenAppearance(heroId) local _, cfg = DataSheetManager.AwakenHeroNum:TryGetDataByID(heroId) if cfg then local heroWearAppearanceID = MDL.HeroSelect.GetAppearanceIDByHeroID(heroId) if heroWearAppearanceID > 0 then return cfg.HeroAppearance == heroWearAppearanceID end end return false end function private.ShowHeroExp(isWin) if BattleDataGetter.CheckCurLevelType(LuaConst.LevelType.HeroAwakePlayer) and isWin then UIManager.OpenAndPushAll(Const_UI_Lua.UIEnum.UIHeroAwakenExp) end end return HeroAwaken_Controller