Files
PGiZ4_2/Assets/Scripts/CardContainer.cs
T
2026-10-27 21:43:24 +03:00

53 lines
1.5 KiB
C#

using System.Collections.Generic;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
public class CardContainer : MonoBehaviour
{
public ContainerType type;
public RectTransform cardHolder;
public List<CardView> Cards { get; private set; } = new List<CardView>();
private void Awake()
{
if (cardHolder == null)
cardHolder = GetComponent<RectTransform>();
}
public void AddCardInstant(CardView card)
{
Cards.Add(card);
card.CurrentContainer = this;
card.transform.SetParent(cardHolder, false);
card.transform.localPosition = Vector3.zero;
card.SetFaceInstant(type != ContainerType.Deck);
}
public async UniTask AddCardAnimatedAsync(CardView card, int siblingIndex = -1, CancellationToken ct = default)
{
if (!Cards.Contains(card))
Cards.Add(card);
var shouldBeFaceUp = type != ContainerType.Deck;
var moveTask = card.AnimateToTargetAsync(this, siblingIndex, 0.3f, ct);
var flipTask = card.FlipAsync(shouldBeFaceUp, 0.25f, ct);
await UniTask.WhenAll(moveTask, flipTask);
SoundManager.Instance?.PlayDrop();
SyncListOrderWithHierarchy();
}
public void RemoveCardListReference(CardView card)
{
Cards.Remove(card);
}
public void SyncListOrderWithHierarchy()
{
Cards.Sort((a, b) => a.transform.GetSiblingIndex().CompareTo(b.transform.GetSiblingIndex()));
}
}