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