Files
Continentis/Assets/Scripts/MainGame/Card/CardSubmodules/ContentSubmodule.cs
SoulliesOfficial ac98ec3aef 更新
2026-04-17 12:01:50 -04:00

76 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 System.Collections.Generic;
using System.Linq;
using SLSUtilities.General;
using UniRx;
using UnityEngine;
namespace Continentis.MainGame.Card
{
public class ContentSubmodule : SubmoduleBase<CardInstance>
{
public List<string> keywords;
public string cardName;
public Sprite cardSprite;
public Rarity cardRarity;
public CardType cardType;
public string originalFunctionText;
public string interpretedFunctionText;
/// <summary>
/// 标记:内容已更改,需要刷新
/// </summary>
public bool dirtyMark;
/// <summary>
/// 标记hint shadow 颜色需要刷新,不触发文本重解析
/// </summary>
public bool hintDirtyMark;
public ContentSubmodule(CardInstance card) : base(card)
{
keywords = card.cardData.keywords;
cardName = card.cardData.displayName.Localize();
cardSprite = card.cardData.cardSprite ?? MainGameManager.Instance.basePrefabs.defaultCardImage;
originalFunctionText = card.cardData.functionText.Localize();
cardRarity = card.cardData.cardRarity;
cardType = card.cardData.cardType;
dirtyMark = false;
hintDirtyMark = false;
Observable.EveryLateUpdate().Subscribe(_ =>
{
if (dirtyMark)
{
RefreshContent();
dirtyMark = false;
}
if (hintDirtyMark)
{
RefreshHintShadow();
hintDirtyMark = false;
}
}).AddTo(card.disposables);
}
public void RefreshContent()
{
CardTextInterpreter.InterpretText(owner);
owner.handCardView?.Setup();
owner.intentionCardView?.Setup();
// 文本刷新后hint 也需要同步更新
hintDirtyMark = true;
}
/// <summary>
/// 仅刷新 hint shadow 颜色,不触发文本重解析。
/// </summary>
public void RefreshHintShadow()
{
if (owner.handCardView == null || owner.handCardView.isSelecting) return;
Color? hintColor = owner.cardLogic?.GetHintColor();
owner.handCardView.UpdateHintShadow(hintColor);
}
}
}