namespace MauMau_Server.Mau; public class Deck { public List UnusedDeck = new(); public List UsedDeck = new(); public Deck() { foreach (CardType cardType in Enum.GetValues(typeof(CardType))) { if (cardType == CardType.JOKER) { UnusedDeck.Add(new Card(cardType, CardValue.RED)); UnusedDeck.Add(new Card(cardType, CardValue.BLACK)); continue; } foreach (CardValue cardValue in Enum.GetValues(typeof(CardValue))) { if (cardValue is CardValue.RED or CardValue.BLACK) continue; UnusedDeck.Add(new Card(cardType, cardValue)); } } ShuffleDeck(); } public List GetUnusedDeck() { return UnusedDeck; } public Card DrawCard() { if (UnusedDeck.Count == 0) ReshuffleDeck(); var card = UnusedDeck[0]; UnusedDeck.RemoveAt(0); return card; } public List DrawCards(int amount) { var cards = new List(); 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(); } }