using System; using System.Collections.Generic; using Animancer; using Logic; using Logic.Action; using Logic.AI; using Logic.Audio; using Logic.Config; using Logic.Multilingual; using ParadoxNotion; using RuntimeData; using Steamworks; using TH1_Core.Events; using TH1_Core.Managers; using TH1_Logic.Action; using TH1_Logic.Config; using TH1_Logic.Core; using TH1_Logic.Net; using TH1_Logic.Steam; using TH1_UI.View.Announce; using TH1Resource; using TMPro; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; using ConfigManager = TH1_Logic.Config.ConfigManager; namespace TH1_UI.View.Outside { public class UIOutsideLibraryGridItemMono : MonoBehaviour { public Button Button; public Image HeroAvatar; public Image WonderAvatar; public TextMeshProUGUI Name; public Transform StarGroup; public List Stars; public Sprite StarImg; public Sprite StarImgGray; //关闭时执行的委托 public ViDelegateAssisstant.Dele OnBtnCloseClick; //开始游戏时执行的委托(目前委托内容就是执行controller的Close()) public ViDelegateAssisstant.Dele OnStartGame; public void SetHeroContent(GiantType giantType,Action onClick) { //if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(new UnitFullType(UnitType.Giant, giantType, 0), out var unitInfo)) return; if (!Table.Instance.LibraryDataAssets.GetLibraryInfoByGiant(giantType, out var info)) return; HeroAvatar.gameObject.SetActive(true); WonderAvatar.gameObject.SetActive(false); HeroAvatar.sprite = info.Illust; SetUITextOrRaw(Name,info.Name); var showAchievements = UIOutsideLibraryAchievementVisibility.ShouldShowHeroAchievements(giantType); if (StarGroup != null) StarGroup.gameObject.SetActive(showAchievements); if (showAchievements) { var hasAchievement = AchievementDataManager.Instance.GetSmallIdByGiantType(giantType, out var smallid); for (uint k = 1;k <= 3;k++) { if(Stars.Count < k)continue; bool isFinished = hasAchievement && AchievementDataManager.Instance.IsFinished(2, smallid, k); Stars[(int)k - 1].sprite = isFinished ? StarImg : StarImgGray; } } var giantTypeCopy = giantType; Button.onClick.RemoveAllListeners(); Button.onClick.AddListener(()=>onClick.Invoke(giantTypeCopy)); } public void SetWonderContent(Empire empire,WonderTypeEnum wonderType,Action onClick) { Table.Instance.GridAndResourceDataAssets.GetWonderInfoByType(wonderType, empire, out var wonderInfo); HeroAvatar.gameObject.SetActive(false); WonderAvatar.gameObject.SetActive(true); WonderAvatar.sprite = wonderInfo.Sprite; MultilingualManager.Instance.SetUIText(Name,wonderInfo.Name); if (StarGroup != null) StarGroup.gameObject.SetActive(true); var hasAchievement = AchievementDataManager.Instance.GetSmallIdByWonderAndEmpire(empire,wonderType, out var smallid); for (uint k = 1;k <= 3;k++) { if(Stars.Count < k)continue; bool isFinished = hasAchievement && AchievementDataManager.Instance.IsFinished(3, smallid, k); Stars[(int)k - 1].sprite = isFinished ? StarImg : StarImgGray; } var empireCopy = empire; var wonderTypeCopy = wonderType; Button.onClick.RemoveAllListeners(); Button.onClick.AddListener(()=>onClick.Invoke(empireCopy,wonderTypeCopy)); } private static void SetUITextOrRaw(TextMeshProUGUI text, string value) { if (text == null) return; var multilingual = text.gameObject.GetComponent(); if (string.IsNullOrEmpty(value)) { if (multilingual != null) { multilingual.ID = 0; multilingual.Ban = true; } text.text = string.Empty; return; } if (uint.TryParse(value, out _)) { if (multilingual != null) multilingual.Ban = false; MultilingualManager.Instance.SetUIText(text, value); } else { if (multilingual != null) { multilingual.ID = 0; multilingual.Ban = true; } text.text = value; } } } }