TH1/Unity/Assets/Scripts/TH1_UI/View/Outside/UIOutsideLibraryHeroPanelMono.cs
2026-01-12 02:40:14 +08:00

84 lines
2.6 KiB
C#

using System;
using System.Collections.Generic;
using Animancer;
using Logic.Multilingual;
using RuntimeData;
using TH1Resource;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace TH1_UI.View.Outside
{
public class UIOutsideLibraryHeroPanelMono : MonoBehaviour
{
public TextMeshProUGUI TopTitle;
public Image Illustration;
public TextMeshProUGUI Name;
public TextMeshProUGUI CivName;
public Image CivBG;
public RectTransform CivRect;
public TextMeshProUGUI Desc;
public TextMeshProUGUI Dialogue;
public Image DialogueAvatar;
public List<UIOutsideLibraryAchieveItemMono> AchieveItems;
public Button CloseButton;
public AnimancerComponent Animancer;
public void Init(Action onStartClick)
{
}
public void SetContent(GiantType giantType)
{
if (!Table.Instance.LibraryDataAssets.GetLibraryInfoByGiant(giantType, out var info)) return;
if (!Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(new UnitFullType(UnitType.Giant, giantType, 0),
out var unitInfo)) return;
var empire = unitInfo.GiantEmpire;
if (!Table.Instance.PlayerDataAssets.GetPlayerInfo(empire, out var playerInfo)) return;
MultilingualManager.Instance.SetUIText(TopTitle,info.Name);
Illustration.sprite = info.Illust;
MultilingualManager.Instance.SetUIText(Name,info.Name);
MultilingualManager.Instance.SetUIText(CivName,playerInfo.CivName);
CivBG.color = playerInfo.Color;
MultilingualManager.Instance.SetUIText(Desc,info.Desc);
MultilingualManager.Instance.SetUIText(Dialogue,info.Diag);
DialogueAvatar.sprite = unitInfo.Sprite;
CloseButton.onClick.RemoveAllListeners();
CloseButton.onClick.AddListener(Hide);
}
public void Show()
{
gameObject.SetActive(true);
LayoutRebuilder.ForceRebuildLayoutImmediate(CivRect);
Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeIn);
}
public void Hide()
{
var state = Animancer.Play(ResourceCache.Instance.AnimCache.UICommonPanelFadeOut);
state.Events.OnEnd = () => { gameObject.SetActive(false); };
}
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
}