| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
|   | 
|   | 
| /// <summary> | 
| /// 武将觉醒界面 | 
| /// </summary> | 
| public class HeroAwakeWin : UIBase | 
| { | 
|     [SerializeField] HeroAwakeCell[] heroAwakeCellList; | 
|     [SerializeField] Image itemIcon; | 
|     [SerializeField] Text valueText; | 
|     [SerializeField] Button awakeBtn; | 
|     [SerializeField] Text activeTipText; | 
|     [SerializeField] GameObject fullGo; | 
|     [SerializeField] Button watchBtn; | 
|     [SerializeField] HeroShowBaseCell heroShow; | 
|     [SerializeField] UIAlphaTween alphaTween; | 
|   | 
|     protected override void InitComponent() | 
|     { | 
|         awakeBtn.AddListener(AwakeHero); | 
|         watchBtn.AddListener(() => | 
|         { | 
|             UIManager.Instance.OpenWindow<HeroAwakePrivewWin>(); | 
|         }); | 
|     } | 
|   | 
|     protected override void OnPreOpen() | 
|     { | 
|         alphaTween.Stop(); | 
|         HeroManager.Instance.onHeroChangeEvent += OnHeroChangeEvent; | 
|         UIManager.Instance.OnCloseWindow += OnCloseWindow; | 
|         Display(); | 
|     } | 
|   | 
|     protected override void OnPreClose() | 
|     { | 
|         HeroManager.Instance.onHeroChangeEvent -= OnHeroChangeEvent; | 
|         UIManager.Instance.OnCloseWindow -= OnCloseWindow; | 
|     } | 
|   | 
|     protected override void OnOpen() | 
|     { | 
|         var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectAwakeHeroGuid); | 
|         if (hero == null) | 
|         { | 
|             return; | 
|         } | 
|         if (hero.talentAwakeRandomIDList.Count > 0) | 
|         { | 
|             UIManager.Instance.OpenWindow<HeroAwakeSelectGiftWin>(); | 
|         } | 
|     } | 
|   | 
|     public void Display() | 
|     { | 
|         var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectAwakeHeroGuid); | 
|         if (hero == null) | 
|         { | 
|             return; | 
|         } | 
|   | 
|         heroShow.Init(hero.heroId, hero.SkinID, hero.breakLevel, hero.heroStar, hero.awakeLevel, hero.heroLevel); | 
|   | 
|   | 
|         int maxLV = HeroAwakeConfig.GetMaxAwakeLV(hero.heroId); | 
|         int startLV = hero.awakeLevel == maxLV ? (hero.awakeLevel / 6 - 1) * 6 + 1 : hero.awakeLevel / 6 * 6 + 1; | 
|   | 
|         for (int i = 0; i < heroAwakeCellList.Length; i++) | 
|         { | 
|             heroAwakeCellList[i].Display(hero, startLV + i); | 
|         } | 
|   | 
|         if (hero.heroStar < HeroUIManager.Instance.canWashStarLevel) | 
|         { | 
|             awakeBtn.SetActive(false); | 
|             activeTipText.SetActive(true); | 
|             fullGo.SetActive(false); | 
|   | 
|             activeTipText.text = Language.Get("HeroAwake5", hero.heroStar, HeroUIManager.Instance.canWashStarLevel); | 
|         } | 
|         else if (hero.awakeLevel == HeroAwakeConfig.GetMaxAwakeLV(hero.heroId)) | 
|         { | 
|             awakeBtn.SetActive(false); | 
|             fullGo.SetActive(true); | 
|             activeTipText.SetActive(false); | 
|         } | 
|         else | 
|         { | 
|             awakeBtn.SetActive(true); | 
|             activeTipText.SetActive(false); | 
|             fullGo.SetActive(false); | 
|   | 
|             var config = HeroQualityAwakeConfig.GetQualityAwakeConfig(hero.Quality, hero.awakeLevel); | 
|             int itemID = config.UPCostItem[0]; | 
|             int useCount = config.UPCostItem[1]; | 
|   | 
|             itemIcon.SetItemSprite(itemID); | 
|             valueText.text = UIHelper.ShowUseItem(PackType.Item, itemID, useCount); | 
|   | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
|   | 
|   | 
|     void AwakeHero() | 
|     { | 
|         var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectAwakeHeroGuid); | 
|         if (hero == null) | 
|         { | 
|             return; | 
|         } | 
|         var config = HeroQualityAwakeConfig.GetQualityAwakeConfig(hero.Quality, hero.awakeLevel); | 
|         if (config.UPCostItem.IsNullOrEmpty()) | 
|             return; | 
|   | 
|         int itemID = config.UPCostItem[0]; | 
|         int useCount = config.UPCostItem[1]; | 
|   | 
|         if (!ItemLogicUtility.CheckItemCount(PackType.Item, itemID, useCount, 2)) | 
|         { | 
|             return; | 
|         } | 
|   | 
|         if (hero.talentAwakeRandomIDList.Count > 0) | 
|         { | 
|             //防范未选择天赋 | 
|             UIManager.Instance.OpenWindow<HeroAwakeSelectGiftWin>(); | 
|             return; | 
|         } | 
|   | 
|         var pack = new CB233_tagCSHeroAwake(); | 
|         pack.ItemIndex = (ushort)hero.itemHero.gridIndex; | 
|         GameNetSystem.Instance.SendInfo(pack); | 
|   | 
|         var nextConfig = HeroAwakeConfig.GetHeroAwakeConfig(hero.heroId, hero.awakeLevel + 1); | 
|         if (nextConfig.UnlockTalentSlot > 0 || nextConfig.SkillID > 0) | 
|         { | 
|             //设置个等待回复的标识 显示成功界面;技能强化显示成功界面,天赋先显示选择界面再显示成功界面 | 
|             HeroUIManager.Instance.waitResponse = new WaitHeroFuncResponse() | 
|             { | 
|                 guid = HeroUIManager.Instance.selectAwakeHeroGuid, | 
|                 type = HeroFuncType.Awake, | 
|                 time = Time.time | 
|             }; | 
|         } | 
|   | 
|         //下一格播放特效 | 
|         int startLV = hero.awakeLevel / 6 * 6 + 1; | 
|         heroAwakeCellList[hero.awakeLevel - startLV + 1].ShowActiveEffect(hero, hero.awakeLevel + 1); | 
|   | 
|     } | 
|   | 
|     void OnHeroChangeEvent(HeroInfo hero) | 
|     { | 
|         if (hero.itemHero.guid != HeroUIManager.Instance.selectAwakeHeroGuid) | 
|         { | 
|             return; | 
|         } | 
|         Display(); | 
|     } | 
|   | 
|     void OnCloseWindow(UIBase win) | 
|     { | 
|         if (win is HeroAwakeSuccessWin && HeroManager.Instance.GetHero(HeroUIManager.Instance.selectAwakeHeroGuid).awakeLevel%6 == 0) | 
|         {  | 
|             //切换轮的时候做个表现 | 
|             alphaTween.Play(()=> | 
|             {  | 
|                 Display(); | 
|             }); | 
|         } | 
|     } | 
| } |