using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
  
 | 
/// <summary> 
 | 
/// 武将吞噬界面 
 | 
/// </summary> 
 | 
public class HeroGiftEatWin : UIBase 
 | 
{ 
 | 
    [SerializeField] HeroShowBaseCell heroShow; 
 | 
    [SerializeField] GiftBaseCell[] giftCells; 
 | 
    [SerializeField] Button addHeroBtn; 
 | 
    [SerializeField] Button addHeroGo; 
 | 
    [SerializeField] HeroShowBaseCell addHeroShow; 
 | 
    [SerializeField] GiftBaseCell[] addGiftCells; 
 | 
    [SerializeField] GameObject addTip; 
 | 
    [SerializeField] GameObject addAttrGo; 
 | 
    [SerializeField] Text[] addAttrTexts; 
 | 
    [SerializeField] Text addGiftTip; 
 | 
  
 | 
    [SerializeField] Button eatBtn; 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
        addHeroBtn.AddListener(OpenSelectWin); 
 | 
  
 | 
        addHeroGo.AddListener(OpenSelectWin); 
 | 
  
 | 
        eatBtn.AddListener(EatHero); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreOpen() 
 | 
    { 
 | 
        HeroUIManager.Instance.SelectEatHeroEvent += Display; 
 | 
        Display(); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreClose() 
 | 
    { 
 | 
        HeroUIManager.Instance.selectEatHeroGuid = ""; 
 | 
        HeroUIManager.Instance.SelectEatHeroEvent -= Display; 
 | 
    } 
 | 
  
 | 
  
 | 
    public void Display() 
 | 
    { 
 | 
        var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectHeroGuidForGiftFunc); 
 | 
  
 | 
        heroShow.Init(hero.heroId, hero.SkinID, hero.breakLevel, hero.heroStar, hero.awakeLevel, hero.heroLevel); 
 | 
        HeroUIManager.Instance.RefreshGiftCell(giftCells, hero); 
 | 
        if (string.IsNullOrEmpty(HeroUIManager.Instance.selectEatHeroGuid)) 
 | 
        { 
 | 
            addHeroBtn.SetActive(true); 
 | 
            addHeroGo.SetActive(false); 
 | 
            addTip.SetActive(true); 
 | 
            addAttrGo.SetActive(false); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            addHeroBtn.SetActive(false); 
 | 
            addHeroGo.SetActive(true); 
 | 
            addTip.SetActive(false); 
 | 
            addAttrGo.SetActive(true); 
 | 
            var addHero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectEatHeroGuid); 
 | 
            addHeroShow.Init(addHero.heroId, addHero.SkinID, addHero.breakLevel, addHero.heroStar, addHero.awakeLevel, addHero.heroLevel); 
 | 
            HeroUIManager.Instance.RefreshGiftCell(addGiftCells, addHero); 
 | 
            for (int i = 0; i < addAttrTexts.Length; i++) 
 | 
            { 
 | 
                int id = PlayerPropertyConfig.basePerAttrs[i]; 
 | 
                addAttrTexts[i].text = PlayerPropertyConfig.GetFullDescription(id, hero.qualityConfig.StarAddPer, 
 | 
                "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}", true)); 
 | 
            } 
 | 
            addGiftTip.SetActive(!hero.IsFullGift()); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    void EatHero() 
 | 
    { 
 | 
        if (HeroUIManager.Instance.selectEatHeroGuid == "") 
 | 
        { 
 | 
            SysNotifyMgr.Instance.ShowTip("HeroGift3"); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectHeroGuidForGiftFunc); 
 | 
        //洗炼和觉醒的天赋未处理不可吞噬 
 | 
        if (hero.talentRandomIDList.Count > 0) 
 | 
        { 
 | 
            SysNotifyMgr.Instance.ShowTip("HeroGift4"); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (hero.talentAwakeRandomIDList.Count > 0) 
 | 
        { 
 | 
            SysNotifyMgr.Instance.ShowTip("HeroGift5"); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        var eatHero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectEatHeroGuid); 
 | 
        if (hero == null || eatHero == null) 
 | 
            return; 
 | 
  
 | 
  
 | 
        if (hero.heroStar >= HeroUIManager.Instance.GetMaxStarCount(hero.heroId, hero.Quality)) 
 | 
        { 
 | 
            CloseWindow(); 
 | 
            SysNotifyMgr.Instance.ShowTip("HeroGift7"); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (hero.IsFullStar()) 
 | 
        { 
 | 
            CloseWindow(); 
 | 
            SysNotifyMgr.Instance.ShowTip("HeroGift1"); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
  
 | 
        var pack = new CB231_tagCSHeroStarUP(); 
 | 
        pack.ItemIndex = (ushort)hero.itemHero.gridIndex; 
 | 
        pack.UseItemIndex = (ushort)eatHero.itemHero.gridIndex; 
 | 
        GameNetSystem.Instance.SendInfo(pack); 
 | 
        HeroUIManager.Instance.eatHeroIDForResult = hero.heroId; 
 | 
        HeroUIManager.Instance.selectHeroGuidForGiftFuncForSuccessWin = HeroUIManager.Instance.selectHeroGuidForGiftFunc; 
 | 
        HeroUIManager.Instance.heroBeforeGiftIDList = new List<int>(hero.talentIDList); 
 | 
        HeroUIManager.Instance.heroBeforeGiftLevelList = new List<int>(hero.talentLvList); 
 | 
        HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false)); 
 | 
  
 | 
        //设置个等待回复的标识 显示成功界面 
 | 
        HeroUIManager.Instance.waitResponse = new WaitHeroFuncResponse() 
 | 
        { 
 | 
            guid = HeroUIManager.Instance.selectHeroGuidForGiftFuncForSuccessWin, 
 | 
            type = HeroFuncType.Gift, 
 | 
            time = Time.time 
 | 
        }; 
 | 
    } 
 | 
  
 | 
    void OpenSelectWin() 
 | 
    { 
 | 
        var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectHeroGuidForGiftFunc); 
 | 
        if (hero == null) 
 | 
        { 
 | 
            CloseWindow(); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (hero.heroStar >= HeroUIManager.Instance.GetMaxStarCount(hero.heroId, hero.Quality)) 
 | 
        { 
 | 
            CloseWindow(); 
 | 
            SysNotifyMgr.Instance.ShowTip("HeroGift7"); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (hero.IsFullStar()) 
 | 
        { 
 | 
            CloseWindow(); 
 | 
            SysNotifyMgr.Instance.ShowTip("HeroGift1"); 
 | 
            return; 
 | 
        } 
 | 
        UIManager.Instance.OpenWindow<HeroGiftRoleListWin>(); 
 | 
    } 
 | 
} 
 |