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