using System.Linq; using UnityEngine; using UnityEngine.UI; //阵型 public class HeroFormationCell : CellView { [SerializeField] Image activeImg; [SerializeField] Image countryOnImg; //上阵阵型激活国家 [SerializeField] Image[] OnCountImgs; //上阵数量激活 [SerializeField] RichText attrText; public void Display(int index) { Int2 result = HeroUIManager.Instance.GetMaxCountHeroCountry(HeroUIManager.Instance.selectTeamType, true); var config = HeroLineupHaloConfig.GetConfig(result.x, result.y); bool sameCountry = result.x == (index + 1); activeImg.SetActive(config != null && sameCountry); countryOnImg.SetSprite("heroTeamCountry" + (index + 1)); if (config == null || !sameCountry) { for (int i = 0; i < OnCountImgs.Length; i++) { OnCountImgs[i].SetActive(false); } } else { for (int i = 0; i < OnCountImgs.Length; i++) { if (i < result.y) { OnCountImgs[i].SetActive(true); OnCountImgs[i].SetSprite("heroTeamCountryPoint" + result.x); } else { OnCountImgs[i].SetActive(false); } } } var attrDict = HeroLineupHaloConfig.GetAttrsByCountry(index + 1); var countList = attrDict.Keys.ToList(); countList.Sort(); string text = string.Empty; for (int k = 0; k < countList.Count; k++) { int count = countList[k]; string lineText = string.Empty; bool isActive = sameCountry && count <= result.y; string countStr = isActive ? UIHelper.AppendColor(TextColType.Green, count.ToString()) : count.ToString(); lineText = (k == 0 ? "" : "") + Language.Get("herocard37", countStr, HeroUIManager.Instance.GetJobName(index + 1)); var attrConfig = attrDict[count]; for (int i = 0; i < attrConfig.AttrIDList.Length; i++) { string format = !isActive ? "{0}+{1}" : "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}"); lineText += " " + PlayerPropertyConfig.GetFullDescription(attrConfig.AttrIDList[i], attrConfig.AttrValueList[i], format); } text += UIHelper.AppendColor(isActive ? TextColType.NavyBrown : TextColType.Gray, lineText); } attrText.text = text; } }