/// <summary> /// Initializes a new instance of the <see cref="Deck"/> class. /// </summary> /// <param name="deckProvider"> /// An implementation of <see cref="IDeckProvider"/> that creates the cards for the deck. /// </param> public Deck(IDeckProvider deckProvider) { if (deckProvider == null) { throw new ArgumentNullException("deckProvider"); } this.drawPile = new Stack <Card>(); this.discardPile = new Stack <Card>(); foreach (var card in deckProvider.ProvideCards()) { this.drawPile.Push(card); } }
public GameLogicService(IGameRepository gameRepository, IPlayerRepository playerRepository, ICardRepository cardRepository, IPlayerGameRepository playerGameRepository, IRoundRepository roundRepository, IHandRepository handRepository, IHandCardRepository handCardRepository, IMapper mapper, IGameUtility gameUtility, IDeckProvider deckProvider) { _gameRepository = gameRepository; _playerRepository = playerRepository; _playerGameRepository = playerGameRepository; _roundRepository = roundRepository; _handRepository = handRepository; _cardRepository = cardRepository; _handCardRepository = handCardRepository; _mapper = mapper; _gameUtility = gameUtility; _deckProvider = deckProvider; }