using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
/// <summary>
|
/// 武将突破界面
|
/// </summary>
|
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<string> attrStrArr = new List<string>();
|
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<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false));
|
//设置个等待回复的标识 显示成功界面
|
HeroUIManager.Instance.waitResponse = new WaitHeroFuncResponse()
|
{
|
guid = guid,
|
type = HeroFuncType.Break,
|
time = Time.time
|
};
|
}
|
}
|