WizardDuels/WizardDuelsProject/Assets/Scripts/Deck/Deck.cs
2025-03-19 09:23:22 +01:00

80 lines
1.7 KiB
C#

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<CardData> _cards = new Stack<CardData>();
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;
}
}
}