/// <summary> /// Constructor with 2 parameters and 1 optional parameter. /// </summary> /// <param name="numberOfPlayers">Number of players.</param> /// <param name="numberOfDecks">Number of decks.</param> /// <param name="playerList">(Optional)List with players' names.</param> public GameWindow(int numberOfPlayers, int numberOfDecks, List <string> playerList = null) { InitializeComponent(); Initialize(); gameStarted = false; CanDraw(false); Game = playerList == null ? new Game(numberOfPlayers, numberOfDecks) : new Game(playerList, numberOfDecks); UnitOfWork.Players.AddRange(Game.Players); UnitOfWork.Decks.Add(Game.MyDeck); UnitOfWork.Decks.Add(Game.Discarded); UnitOfWork.Games.Add(Game); try { Game.StartGame(); } catch (NotEnoughCardsException) { MessageBox.Show("There are not enough cards in the deck\nStart a new game", "Not enough cards", MessageBoxButton.OK, MessageBoxImage.Error); } UnitOfWork.Cards.AddRange(Game.MyDeck.Cards); UnitOfWork.Complete(); UpdateCards(Game.GetCroupier()); UpdateCards(Game.GetPlayer()); UpdateDiscarded(); CheckHand(); Debug(); #if DEBUG txtDebug.Visibility = Visibility.Visible; #else txtDebug.Visibility = Visibility.Collapsed; #endif gameStarted = true; cmbDbSet.ItemsSource = Enum.GetValues(typeof(cmbDbSets)); cmbDbSet.SelectedItem = cmbDbSets.Cards; DataBaseShow.ItemsSource = Context.Cards.Local.ToList(); }