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;
|
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<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);
|
|
//切换轮的时候做个表现
|
if (hero.awakeLevel % 6 == 5)
|
{
|
alphaTween.Play();
|
}
|
}
|
|
void OnHeroChangeEvent(HeroInfo hero)
|
{
|
if (hero.itemHero.guid != HeroUIManager.Instance.selectAwakeHeroGuid)
|
{
|
return;
|
}
|
Display();
|
}
|
}
|