59 lines
1.2 KiB
C#
59 lines
1.2 KiB
C#
namespace MauMau_Server.Mau;
|
|
|
|
public class Deck
|
|
{
|
|
public List<Card> UnusedDeck = new();
|
|
public List<Card> UsedDeck = new();
|
|
|
|
public Deck()
|
|
{
|
|
foreach (CardType cardType in Enum.GetValues(typeof(CardType)))
|
|
{
|
|
foreach (CardValue cardValue in Enum.GetValues(typeof(CardValue)))
|
|
{
|
|
UnusedDeck.Add(new Card(cardType, cardValue));
|
|
}
|
|
}
|
|
ShuffleDeck();
|
|
}
|
|
|
|
public List<Card> GetUnusedDeck()
|
|
{
|
|
return UnusedDeck;
|
|
}
|
|
|
|
public Card DrawCard()
|
|
{
|
|
if (UnusedDeck.Count == 0) ReshuffleDeck();
|
|
var card = UnusedDeck[0];
|
|
UnusedDeck.RemoveAt(0);
|
|
return card;
|
|
}
|
|
|
|
public List<Card> DrawCards(int amount)
|
|
{
|
|
var cards = new List<Card>();
|
|
for (var i = 0; i < amount; i++)
|
|
{
|
|
cards.Add(DrawCard());
|
|
}
|
|
return cards;
|
|
}
|
|
|
|
public void AddCardToUsedDeck(Card card)
|
|
{
|
|
UsedDeck.Add(card);
|
|
}
|
|
|
|
private void ReshuffleDeck()
|
|
{
|
|
UnusedDeck.AddRange(UsedDeck);
|
|
UsedDeck.Clear();
|
|
ShuffleDeck();
|
|
}
|
|
|
|
private void ShuffleDeck()
|
|
{
|
|
UnusedDeck = UnusedDeck.OrderBy(x => Guid.NewGuid()).ToList();
|
|
}
|
|
} |