/// <summary> /// Create a new deck /// </summary> /// <param name="pCardType">The cards type are the cards the deck needs to contain</param> /// <param name="pDeckType">The type of deck we want</param> /// <returns></returns> public static Deck GreateDeck(DeckCardType pCardType, DeckType pDeckType, Vector3 pPosition) { switch (pCardType) { case DeckCardType.Poker: { return GreatePokerDeck(pDeckType, pPosition); } } System.Diagnostics.Debug.Assert(false,"The card type is not implemented"); return null; }
private static void AddDeckCards(Deck newDeck, List <ApiDeckCard> cards, DeckCardType cardType, Dictionary <string, Card> cardsByCode) { foreach (var card in cards) { newDeck.DeckCards.Add( new DeckCard { CardId = cardsByCode[card.Code].Id, Card = cardsByCode[card.Code], CardType = cardType, Count = card.Count, Deck = newDeck }); } }
private void UpdateDeckCards(Deck deck, List <ApiDeckCard> cards, DeckCardType cardType, Dictionary <string, Card> cardsByCode) { var existingCodes = deck.DeckCards.Where(dc => dc.CardType == cardType).Select(dc => dc.Card.Code).ToList(); var updateCodes = cards.Select(c => c.Code).ToList(); var newCodes = updateCodes.Except(existingCodes); var removedCodes = existingCodes.Except(updateCodes); var toRemove = deck.DeckCards.Where(dc => dc.CardType == cardType && removedCodes.Contains(dc.Card.Code)).ToList(); foreach (var deckCard in toRemove) { deck.DeckCards.Remove(deckCard); } var toAdd = cards.Where(dc => newCodes.Contains(dc.Code)).ToList(); AddDeckCards(deck, toAdd, cardType, cardsByCode); }
public static int CountCards(this Deck deck, DeckCardType cardType, Func <Card, bool> filterFunction) { return(deck.DeckCards.Sum(dc => dc.CardType == cardType && filterFunction(dc.Card) ? dc.Count : 0)); }