using Common.Utility.CombatEvent;
using Core.Language;
using Excel2Json;
using Fort23.Core;
using Fort23.UTool;
using GameLogic.Hero;
using UnityEngine.UI;
namespace Fort23.Mono
{
[UIBinding(prefab = "HeroDetailPanel" )]
public partial class HeroDetailPanel : UIPanel
{
private HeroInfo heroInfo;
private void Init()
{
// InitHeroDetailPanel();
}
protected override void AddEvent()
{
}
protected override void DelEvent()
{
}
public override void AddButtonEvent()
{
btnBack.onClick.AddListener(OnClickClose);
btnUpgrade.onClick.AddListener(OnClickUpgrade);
btnPromote.onClick.AddListener(OnClickPromote);
}
private void OnClickPromote()
{
if (PlayerManager.Instance.gameConstantConfig.maxStar <= heroInfo.star.Value)
{
LogTool.Log("已到达最高星级:" + PlayerManager.Instance.gameConstantConfig.maxStar);
return;
}
heroInfo.Promote();
UpdateAttributeUI();
HeroUITools.SetStarShow(stars, heroInfo.star.Value);
SendEvent(HeroUpType.Promote);
}
private void OnClickUpgrade()
{
if (PlayerManager.Instance.gameConstantConfig.maxLv <= heroInfo.level.Value)
{
LogTool.Log("已到达最高等级:" + PlayerManager.Instance.gameConstantConfig.maxLv);
return;
}
heroInfo.Upgrade();
UpdateAttributeUI();
SendEvent(HeroUpType.Level);
}
///
/// 发送英雄提升的事件
///
/// 提升类型:升级、升星等.
private void SendEvent(HeroUpType upType)
{
HeroPowerUpEventData data = new HeroPowerUpEventData();
data.heroModelID = heroInfo.modelID;
data.upType = upType;
PlayerManager.Instance.lastHeroInfo = heroInfo;
EventManager.Instance.Dispatch(CustomEventType.HeroPowerUp, data);
if (upType == HeroUpType.Level)
{
EventManager.Instance.Dispatch(CustomEventType.HeroLvUp, data);
}
else if (upType == HeroUpType.Promote)
{
EventManager.Instance.Dispatch(CustomEventType.HeroPromote, data);
}
}
private void OnClickClose()
{
UIManager.Instance.HideUIUIPanel(this);
}
public void InitHeroDetailPanel(HeroInfo heroInfo)
{
this.heroInfo = heroInfo;
iconZhiYe.icon_name = heroInfo.iconZhiYe;
heroName.text = LanguageManager.Instance.Text(heroInfo.modelConfig.name);
HeroUITools.SetStarShow(stars, heroInfo.star.Value);
switch (heroInfo.modelConfig.rarity)
{
case 1:
heroRarity.text = LanguageManager.Instance.Text(32);
break;
case 2:
heroRarity.text = LanguageManager.Instance.Text(31);
break;
case 3:
heroRarity.text = LanguageManager.Instance.Text(30);
break;
default:
LogTool.Error("找不到hero的稀有度:" + heroInfo.modelConfig.ID);
break;
}
UpdateAttributeUI();
}
public void UpdateAttributeUI()
{
txtHP.text = heroInfo.hp.Value.ToString();
txtATK.text = heroInfo.attack.Value.ToString();
txtDEF.text = heroInfo.defense.Value.ToString();
txtSHANBI.text = heroInfo.shanbi.Value.ToString();
txtLv.text = heroInfo.level.Value.ToString();
txtExpGain.text = heroInfo.expGain.Value.ToString();
}
}
}