using AppleHills.Data.CardSystem;
using Core.SaveLoad;
using UnityEngine;
namespace UI.CardSystem.StateMachine
{
///
/// Shared context for card states.
/// Provides access to common components and data that states need.
///
public class CardContext : MonoBehaviour
{
[Header("Core Components")]
[SerializeField] private CardDisplay cardDisplay;
[SerializeField] private CardAnimator cardAnimator;
private AppleMachine stateMachine;
[Header("Card Data")]
private CardData cardData;
// Public accessors
public CardDisplay CardDisplay => cardDisplay;
public CardAnimator Animator => cardAnimator;
public AppleMachine StateMachine => stateMachine;
public Transform RootTransform => transform;
public CardData CardData => cardData;
// Runtime state
public bool IsNewCard { get; set; }
public int RepeatCardCount { get; set; }
private void Awake()
{
// Auto-find components if not assigned
if (cardDisplay == null)
cardDisplay = GetComponentInChildren();
if (cardAnimator == null)
cardAnimator = GetComponent();
if (stateMachine == null)
stateMachine = GetComponentInChildren();
}
///
/// Setup the card with data
///
public void SetupCard(CardData data, bool isNew = false, int repeatCount = 0)
{
cardData = data;
IsNewCard = isNew;
RepeatCardCount = repeatCount;
if (cardDisplay != null)
{
cardDisplay.SetupCard(data);
}
}
///
/// Get the card display component
///
public CardDisplay GetCardDisplay() => cardDisplay;
}
}