local HeroStar_Controller = {} local private = {} function HeroStar_Controller.OnStartup() end local breakAttrTextArr = {} function HeroStar_Controller.GetHeroBreakAttrText(heroId, heroStar) table.clearArray(breakAttrTextArr) local starBreakAttrId local heroWearAppearanceID = MDL.HeroSelect.GetAppearanceIDByHeroID(heroId) if heroWearAppearanceID and heroWearAppearanceID > 0 then local appearanceData = DataSheetManager.HeroAppearance:GetDataByID(heroWearAppearanceID) if appearanceData.Intelligence > 0 then starBreakAttrId = DataSheetManager.HeroStarAppearance:GetDataByHeroAppearanceID_Star(heroWearAppearanceID, heroStar).AttrSpecial else starBreakAttrId = DataSheetManager.HeroStar:GetDataByHeroID_Star(heroId, heroStar).AttrSpecial end else starBreakAttrId = DataSheetManager.HeroStar:GetDataByHeroID_Star(heroId, heroStar).AttrSpecial end if starBreakAttrId and starBreakAttrId > 0 then local attrTable = DataSheetManager.HeroStarAttrRepeat:GetDataByAttrRepeatID(starBreakAttrId).Attr_Table for i, v in ipairs(attrTable) do local attrText = UTL.Attr.GetAttrText(v.AttrType, v.AttrNum) table.insert(breakAttrTextArr, attrText) end end return breakAttrTextArr end --判断武将突破材料是否足够 function HeroStar_Controller.IsBreakthroughMaterialEnough(id) local requireMaterial = MDL.HeroStar.GetHeroBreakthroughRequireItem(id) local bag1Count = MDL.Bag.GetItemCount(requireMaterial[1].ItemID) if bag1Count < requireMaterial[1].ItemNum then return false end if requireMaterial[2] then local bag2Count = MDL.Bag.GetItemCount(requireMaterial[2].ItemID) if bag2Count < requireMaterial[2].ItemNum then return false end end return true end function HeroStar_Controller.IsHeroReachTargetStar(id, targetStar) local currentStar = MDL.HeroStar.GetHeroStarLevel(id) return currentStar >= targetStar end --武将是否达到最高星级 function HeroStar_Controller.IsHeroReachMaxStar(id) local currentStar = MDL.HeroStar.GetHeroStarLevel(id) local maxStar = MDL.HeroStar.GetHeroMaxStarLevel(id) if currentStar >= maxStar then return true else return false end end --武将是否可以升星/突破 function HeroStar_Controller.IsHeroCanBreakthrough(id) if MDL.Unlock.IsUnlock(MDL.Unlock.FunctionType.Break) then if CTL.Unlock.JudgeIfSatisfiedUnlockTable(DataSheetManager.FuctionUnlock:GetDataByFucID(MDL.Unlock.FunctionType.Break).Unlock_Table) then if not HeroStar_Controller.IsHeroReachMaxStar(id) and HeroStar_Controller.IsBreakthroughMaterialEnough(id) then return true end end end return false end --武将是否达到最高阶段 function HeroStar_Controller.IsHeroReachMaxStage(id) local currentStage = MDL.HeroStar.GetHeroStageLevel(id) local maxStage = MDL.HeroStar.GetHeroMaxStageLevel(id) if currentStage == maxStage then return true else return false end end function HeroStar_Controller.IsGreatBreak(heroId) local heroStage = MDL.HeroStar.GetHeroStageLevel(heroId) local heroStar = MDL.HeroStar.GetHeroStarLevel(heroId) if heroStage == 0 and heroStar > 0 then return true end return false end function HeroStar_Controller.IsDevelopEffectUnlock(heroId, developEffectId) local heroStar = MDL.HeroStar.GetHeroStarLevel(heroId) for i, v in DataSheetManager.HeroStar:GetDataByHeroID_Star(heroId) do if v.DevelopEffectID == developEffectId then local unlockStar = v.Star if heroStar >= unlockStar then return true, unlockStar else return false, unlockStar end end end end return HeroStar_Controller