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(); 
 | 
            }); 
 | 
        } 
 | 
    } 
 | 
} 
 |