using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
///
/// 武将突破界面
///
public class HeroLVBreakCell : MonoBehaviour
{
[SerializeField] Text breakLVText;
[SerializeField] Text nextBreakLVText;
// [SerializeField] Text lvText;
// [SerializeField] Text nextLVText;
[SerializeField] Text[] attrPerTextArr;
[SerializeField] Text[] nextAttrPerTextArr;
[SerializeField] Text potentialText;
[SerializeField] Image[] moneyIcons;
[SerializeField] Text[] moneyTexts;
[SerializeField] Transform[] moneyRects;
[SerializeField] Button breakBtn;
[SerializeField] Text needLVText;
// [SerializeField] ScrollRect scrollRect;
//满级
[SerializeField] Text[] fullAttrPerTextArr;
[SerializeField] Text fullBreakLVText;
[SerializeField] Transform fullRect;
[SerializeField] Transform normalRect;
string guid;
HeroInfo hero;
protected void Awake()
{
breakBtn.AddListener(BreakLV);
}
public void Display(HeroInfo _hero)
{
hero = _hero;
guid = _hero.itemHero.guid;
if (hero == null)
{
return;
}
if (hero.breakLevel >= HeroBreakConfig.GetMaxBreakLv(hero.heroId))
{
fullRect.SetActive(true);
normalRect.SetActive(false);
RefreshFull();
}
else
{
fullRect.SetActive(false);
normalRect.SetActive(true);
RefreshLV();
// scrollRect.verticalNormalizedPosition = 1;
}
}
void RefreshFull()
{
fullBreakLVText.text = Language.Get("herocardbreaklv", hero.heroConfig.Name, hero.breakLevel);
for (int i = 0; i < fullAttrPerTextArr.Length; i++)
{
fullAttrPerTextArr[i].text = PlayerPropertyConfig.GetValueDescription(PlayerPropertyConfig.basePerAttrs[i],
hero.qualityConfig.BreakLVAddPer * hero.breakLevel);
}
}
public void RefreshLV()
{
breakLVText.text = Language.Get("herocardbreaklv", hero.heroConfig.Name, hero.breakLevel);
nextBreakLVText.text = Language.Get("herocardbreaklv", hero.heroConfig.Name, hero.breakLevel + 1);
// lvText.text = hero.qualityBreakConfig.LVMax.ToString();
// var nextBreakLVConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel + 1);
// nextLVText.text = nextBreakLVConfig.LVMax.ToString();
for (int i = 0; i < attrPerTextArr.Length; i++)
{
attrPerTextArr[i].text = PlayerPropertyConfig.GetValueDescription(PlayerPropertyConfig.basePerAttrs[i],
hero.qualityConfig.BreakLVAddPer * hero.breakLevel);
}
for (int i = 0; i < nextAttrPerTextArr.Length; i++)
{
nextAttrPerTextArr[i].text = PlayerPropertyConfig.GetValueDescription(PlayerPropertyConfig.basePerAttrs[i],
hero.qualityConfig.BreakLVAddPer * (hero.breakLevel + 1));
}
for (int i = 0; i < moneyIcons.Length; i++)
{
if (i < hero.qualityBreakConfig.UPCostItemList.Length)
{
moneyRects[i].SetActive(true);
moneyIcons[i].SetOrgSprite(ItemConfig.Get(hero.qualityBreakConfig.UPCostItemList[i][0]).IconKey);
moneyTexts[i].text = UIHelper.ShowUseItem(PackType.Item, hero.qualityBreakConfig.UPCostItemList[i][0], hero.qualityBreakConfig.UPCostItemList[i][1]);
}
else
{
moneyRects[i].SetActive(false);
}
}
var nextQualityBreakConfig = HeroBreakConfig.GetHeroBreakConfig(hero.heroId, hero.breakLevel + 1);
if (nextQualityBreakConfig == null)
{
potentialText.text = "";
return;
}
List attrStrArr = new List();
for (int i = 0; i < nextQualityBreakConfig.AttrIDList.Length; i++)
{
if (nextQualityBreakConfig.AttrIDList[i] == 0)
{
continue;
}
attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) +
PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[i], nextQualityBreakConfig.AttrValueList[i]));
}
if (nextQualityBreakConfig.SkillID != 0)
{
var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID);
if (skill != null)
{
attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description);
}
else
{
Debug.LogError("未配置技能" + nextQualityBreakConfig.SkillID);
}
}
potentialText.text = Language.Get("L1100", Language.Get("herocard56"), string.Join("\n", attrStrArr));
string needLV = UIHelper.AppendColor(hero.heroLevel < hero.qualityBreakConfig.UPLVNeed ? TextColType.Red : TextColType.Green, $"{hero.heroLevel}/{hero.qualityBreakConfig.UPLVNeed}");
needLVText.text = Language.Get("herobreak3", needLV);
}
void BreakLV()
{
if (!HeroUIManager.Instance.IsCanBreak(hero, 2))
{
return;
}
var pack = new CB232_tagCSHeroBreak();
pack.ItemIndex = (ushort)hero.itemHero.gridIndex;
GameNetSystem.Instance.SendInfo(pack);
HeroUIManager.Instance.lastFightPower = new KeyValuePair(hero.itemHero.guid, hero.CalculateFightPower(false));
//设置个等待回复的标识 显示成功界面
HeroUIManager.Instance.waitResponse = new WaitHeroFuncResponse()
{
guid = guid,
type = HeroFuncType.Break,
time = Time.time
};
}
}