using System.Collections.Generic; using System.Text; using UnityEngine; public class LineupRecommendCell : MonoBehaviour { [SerializeField] List lineupRecommendItems = new List(); [SerializeField] TextEx txtLineupName; [SerializeField] TextEx txtHeroCount; [SerializeField] ButtonEx btnUse; [SerializeField] Transform transOn; [SerializeField] ButtonEx btnOff; [SerializeField] RichText txtLineupDesc; [SerializeField] Transform transOff; [SerializeField] ButtonEx btnOn; LineupRecommendManager manager { get { return LineupRecommendManager.Instance; } } public void Display(int index) { var list = manager.GetSortShowList(); if (index < 0 || index >= list.Count) return; var recommendID = list[index]; if (!LineupRecommendConfig.HasKey(recommendID)) return; var config = LineupRecommendConfig.Get(recommendID); if (!manager.TryGetHeroIDListByRecommendID(recommendID, out int[] heroIDArr) || heroIDArr.IsNullOrEmpty()) return; if (!TryGetHasLineupHeroCount(recommendID, out int hasCout, out int totalCount)) return; bool isOn = manager.IsOn(recommendID); transOn.SetActive(isOn); transOff.SetActive(!isOn); for (int i = 0; i < lineupRecommendItems.Count; i++) { if (i < heroIDArr.Length) { lineupRecommendItems[i].SetActive(true); lineupRecommendItems[i].Display(recommendID, i); } else { lineupRecommendItems[i].SetActive(false); } } txtLineupName.text = config.Name; txtHeroCount.text = Language.Get("LineupRecommend02", hasCout, totalCount); txtLineupDesc.text = GetDesc(recommendID); btnUse.SetListener(() => { bool hasHeroAll = manager.HasHeroAll(recommendID); if (hasHeroAll) { manager.UseTeam(recommendID); return; } ConfirmCancel.ShowPopConfirm( Language.Get("L1003"), Language.Get("LineupRecommend06"), (bool isOK) => { if (isOK) { manager.UseTeam(recommendID); } }); }); btnOff.SetListener(() => { manager.SetOn(recommendID, false); }); btnOn.SetListener(() => { manager.SetOn(recommendID, true); }); } public bool TryGetHasLineupHeroCount(int recommendID, out int hasCout, out int totalCount) { hasCout = 0; totalCount = 0; if (!manager.TryGetHeroIDListByRecommendID(recommendID, out int[] heroIDArr) || heroIDArr.IsNullOrEmpty()) return false; totalCount = heroIDArr.Length; foreach (var heroID in heroIDArr) { bool isHasHero = HeroManager.Instance.HasHero(heroID); if (isHasHero) { hasCout += 1; } } return true; } public string GetDesc(int recommendID) { if (!LineupRecommendConfig.HasKey(recommendID)) return string.Empty; var config = LineupRecommendConfig.Get(recommendID); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(Language.Get("LineupRecommend04")); stringBuilder.Append(config.Feature); stringBuilder.AppendLine(); stringBuilder.Append(Language.Get("LineupRecommend05")); stringBuilder.Append(config.Desc); return stringBuilder.ToString(); } }