public GameController(ISolitaireGameModel gameModel, IGameViewFactory gameViewFactory) { if (gameModel == null) { throw new ArgumentNullException(nameof(gameModel)); } if (gameViewFactory == null) { throw new ArgumentNullException(nameof(gameViewFactory)); } _gameModel = gameModel; _gameView = gameViewFactory.Create(this, gameModel); }
public ConsoleGameView( IGameController gameController, ISolitaireGameModel gameModel, IStringViewProvider <Card> cardStringViewProvider, IStringViewProvider <CardSuit> cardSuitStringViewProvider) { if (gameController == null) { throw new ArgumentNullException(nameof(gameController)); } if (gameModel == null) { throw new ArgumentNullException(nameof(gameModel)); } if (cardStringViewProvider == null) { throw new ArgumentNullException(nameof(cardStringViewProvider)); } if (cardSuitStringViewProvider == null) { throw new ArgumentNullException(nameof(cardSuitStringViewProvider)); } _gameController = gameController; _gameModel = gameModel; _cardStringViewProvider = cardStringViewProvider; _cardSuitStringViewProvider = cardSuitStringViewProvider; _gameModel.Subscribe((IObserver <GameStarted>) this); _gameModel.Subscribe((IObserver <StepDone>) this); _gameModel.Subscribe((IObserver <GameEnded>) this); _gameActions = new List <GameAction> { new GameAction { Action = MoveCardToResultPileAction, Name = "Переместить карту в результирующую стопку" }, new GameAction { Action = MoveCardToAnotherPileAction, Name = "Переместить карту из одной стопки в другую" }, new GameAction { Action = MoveSixCardToResultPile, Name = "Переместить шестерку из середины стопки в результирующую стопку" }, new GameAction { Action = EndGameAction, Name = "Завершить игру" } }; Console.OutputEncoding = Encoding.UTF8; }
public IGameView Create(IGameController gameController, ISolitaireGameModel gameModel) => new ConsoleGameView(gameController, gameModel, _serviceProvider.GetRequiredService <IStringViewProvider <Card> >(), _serviceProvider.GetRequiredService <IStringViewProvider <CardSuit> >());