80 lines
1.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|