| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | |
| | | |
| | | public void Display(int index) |
| | | { |
| | | // 第5个格子为混搭阵型 |
| | | if (index == 4) |
| | | { |
| | | DisplayMixedFormation(); |
| | | return; |
| | | } |
| | | |
| | | Int2 result; |
| | | if (HeroUIManager.Instance.isCustonHeroFormation) |
| | | { |
| | |
| | | } |
| | | attrText.text = text; |
| | | } |
| | | |
| | | void DisplayMixedFormation() |
| | | { |
| | | // 获取当前激活的混搭配置 |
| | | HeroLineupHaloConfig activeMixedConfig; |
| | | List<TeamHero> teamHeroes = null; |
| | | if (HeroUIManager.Instance.isCustonHeroFormation) |
| | | teamHeroes = HeroUIManager.Instance.custonTeamHeroes; |
| | | |
| | | if (teamHeroes != null) |
| | | activeMixedConfig = HeroUIManager.Instance.GetMixedFormationConfig(teamHeroes); |
| | | else |
| | | activeMixedConfig = HeroUIManager.Instance.GetMixedFormationConfig(HeroUIManager.Instance.selectTeamType, true); |
| | | |
| | | bool hasActive = activeMixedConfig != null; |
| | | activeImg.SetActive(hasActive); |
| | | countryOnImg.SetSprite("heroTeamCountryHe"); |
| | | |
| | | // 激活点显示:使用当前激活配置的阵营颜色 |
| | | List<int> participatingCountries = null; |
| | | if (teamHeroes != null) |
| | | participatingCountries = HeroUIManager.Instance.GetParticipatingCountriesByPriority(teamHeroes); |
| | | else |
| | | participatingCountries = HeroUIManager.Instance.GetParticipatingCountriesByPriority(HeroUIManager.Instance.selectTeamType, true); |
| | | |
| | | if (activeMixedConfig != null && participatingCountries != null && participatingCountries.Count > 0) |
| | | { |
| | | int totalPoints = activeMixedConfig.Countrys * activeMixedConfig.NeedHeroCount; |
| | | for (int i = 0; i < OnCountImgs.Length; i++) |
| | | { |
| | | if (i < totalPoints) |
| | | { |
| | | int countryIndex = i / activeMixedConfig.NeedHeroCount; |
| | | OnCountImgs[i].SetActive(true); |
| | | OnCountImgs[i].SetSprite("heroTeamCountryPoint" + participatingCountries[countryIndex]); |
| | | } |
| | | else |
| | | { |
| | | OnCountImgs[i].SetActive(false); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | for (int i = 0; i < OnCountImgs.Length; i++) |
| | | OnCountImgs[i].SetActive(false); |
| | | } |
| | | |
| | | // 获取所有混搭配置并展平,按 Countrys 排序 |
| | | var allMixedConfigs = HeroLineupHaloConfig.GetAllMixedConfigs(); |
| | | List<HeroLineupHaloConfig> sortedConfigs = new List<HeroLineupHaloConfig>(); |
| | | if (allMixedConfigs != null) |
| | | { |
| | | foreach (var kvp in allMixedConfigs) |
| | | { |
| | | foreach (var innerKvp in kvp.Value) |
| | | { |
| | | sortedConfigs.Add(innerKvp.Value); |
| | | } |
| | | } |
| | | sortedConfigs.Sort((a, b) => |
| | | { |
| | | if (a.Countrys != b.Countrys) return a.Countrys.CompareTo(b.Countrys); |
| | | return a.NeedHeroCount.CompareTo(b.NeedHeroCount); |
| | | }); |
| | | } |
| | | |
| | | // 属性文本:遍历所有混搭配置,激活的高亮,未激活的灰色 |
| | | string text = string.Empty; |
| | | for (int k = 0; k < sortedConfigs.Count; k++) |
| | | { |
| | | var config = sortedConfigs[k]; |
| | | bool isActive = activeMixedConfig != null && activeMixedConfig.Id == config.Id; |
| | | string lineText = (k == 0 ? "" : "</r>") + Language.Get("herocard74", config.Countrys, config.NeedHeroCount); |
| | | |
| | | for (int i = 0; i < config.AttrIDList.Length; i++) |
| | | { |
| | | string format = !isActive ? "{0}+{1}" : "{0}+" + UIHelper.AppendColor(TextColType.Green, "{1}"); |
| | | lineText += " " + PlayerPropertyConfig.GetFullDescription(config.AttrIDList[i], config.AttrValueList[i], format); |
| | | } |
| | | |
| | | text += UIHelper.AppendColor(isActive ? TextColType.NavyBrown : TextColType.Gray, lineText); |
| | | } |
| | | attrText.text = text; |
| | | } |
| | | } |
| | | |