using System; using System.Collections.Generic; using DefaultNamespace; using UnityEngine; namespace Deck { public class Deck : MonoBehaviour { [SerializeField] private DeckData deckData; public event Action CardDrawn; public event Action CardAdded; public event Action Shuffled; private Stack _cards = new Stack(); private void Awake() { foreach (CardData cardData in deckData.Cards) { _cards.Push(cardData); _cards.Shuffle(); } } private void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Shuffle(); } } public bool DrawCard(out CardData card) { if (_cards.Count > 0) { card = _cards.Pop(); CardDrawn?.Invoke(); return true; } else { card = null; return false; } } public void Shuffle() { _cards.Shuffle(); Shuffled?.Invoke(); } public void AddCard(CardData card) { _cards.Push(card); CardAdded?.Invoke(); } public void AddCards(CardData[] cards) { foreach (CardData card in cards) { _cards.Push(card); } } public int GetCardCount() { return _cards.Count; } public Sprite GetCardBack() { return deckData.cardBack; } } }