TH1/Unity/Assets/Scripts/TH1_UI/View/Info/UIInfoCultureTaskMono.cs
2026-04-09 23:12:21 +08:00

70 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Logic.Multilingual;
using RuntimeData;
using TH1_Logic.Core;
using TH1_Logic.MatchConfig;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace TH1_UI.View.Info
{
public class UIInfoCultureTaskMono : MonoBehaviour
{
public Image Icon;
public TextMeshProUGUI Desc;
public TextMeshProUGUI CultureValue;
public TextMeshProUGUI ExecuteCountText;
public GameObject CompletedGroup;
public GameObject ValueGroup;
public GameObject AwardTitle;
public GameObject AwardTitlePer;
private MomentItemBase _momentItem;
private MomentSubData _momentSubData;
public void Init(MomentItemBase momentItem)
{
_momentItem = momentItem;
if (_momentItem == null) return;
var subType = _momentItem.GetMomentSubType();
if (!Table.Instance.MomentDataAssets.GetMomentSubData(subType, out _momentSubData)) return;
// 描述
if (Desc != null)
MultilingualManager.Instance.SetUIText(Desc, _momentSubData.Desc);
// 图标
if (Icon != null && _momentSubData.Icon != null)
Icon.sprite = _momentSubData.Icon;
// 文化值
if (CultureValue != null)
CultureValue.text = _momentItem.PlayerCultureValue.ToString();
}
public void UpdateInfo(PlayerData player)
{
if (_momentItem == null) return;
// 判断是否是一次性momentIsExecute为true说明是已完成的一次性
// ExecuteCount>0但IsExecute为false说明是可重复的
bool isOneTime = _momentItem.IsExecute || _momentItem.ExecuteCount == 0;
bool oneTimeCompleted = _momentItem.IsExecute;
// 一次性显示AwardTitle可重复显示AwardTitlePer
if (AwardTitle != null) AwardTitle.SetActive(isOneTime);
if (AwardTitlePer != null) AwardTitlePer.SetActive(!isOneTime);
// 执行次数
if (ExecuteCountText != null)
ExecuteCountText.text = _momentItem.ExecuteCount.ToString();
// 一次性且已完成显示CompletedGroup隐藏ValueGroup
// 否则显示ValueGroup隐藏CompletedGroup
if (CompletedGroup != null) CompletedGroup.SetActive(oneTimeCompleted);
if (ValueGroup != null) ValueGroup.SetActive(!oneTimeCompleted);
}
}
}