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