TH1/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideLibraryGridItemMono.cs
2026-01-12 23:16:27 +08:00

102 lines
3.0 KiB
C#

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<Image> Stars;
public Sprite StarImg;
public Sprite StarImgGray;
//关闭时执行的委托
public ViDelegateAssisstant.Dele OnBtnCloseClick;
//开始游戏时执行的委托(目前委托内容就是执行controller的Close())
public ViDelegateAssisstant.Dele OnStartGame;
public void SetHeroContent(GiantType giantType,Action<GiantType> 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;
MultilingualManager.Instance.SetUIText(Name,info.Name);
for (uint k = 1;k <= 3;k++)
{
if (!AchievementDataManager.Instance.GetSmallIdByGiantType(giantType, out var smallid)) continue;
bool isFinished = AchievementDataManager.Instance.IsFinished(2, smallid, k);
if(Stars.Count < k)continue;
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<Empire,WonderTypeEnum> 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);
for (uint k = 1;k <= 3;k++)
{
if (!AchievementDataManager.Instance.GetSmallIdByWonderAndEmpire(empire,wonderType, out var smallid)) continue;
bool isFinished = AchievementDataManager.Instance.IsFinished(3, smallid, k);
if(Stars.Count < k)continue;
Stars[(int)k - 1].sprite = isFinished ? StarImg : StarImgGray;
}
var empireCopy = empire;
var wonderTypeCopy = wonderType;
Button.onClick.RemoveAllListeners();
Button.onClick.AddListener(()=>onClick.Invoke(empireCopy,wonderTypeCopy));
}
}
}