using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 武将觉醒界面 /// 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(); }); } protected override void OnPreOpen() { alphaTween.Stop(); HeroManager.Instance.onHeroChangeEvent += OnHeroChangeEvent; Display(); } protected override void OnPreClose() { HeroManager.Instance.onHeroChangeEvent -= OnHeroChangeEvent; } protected override void OnOpen() { var hero = HeroManager.Instance.GetHero(HeroUIManager.Instance.selectAwakeHeroGuid); if (hero == null) { return; } if (hero.talentAwakeRandomIDList.Count > 0) { UIManager.Instance.OpenWindow(); } } 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(); 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); //切换轮的时候做个表现 if (hero.awakeLevel % 6 == 5) { alphaTween.Play(); } } void OnHeroChangeEvent(HeroInfo hero) { if (hero.itemHero.guid != HeroUIManager.Instance.selectAwakeHeroGuid) { return; } Display(); } }