public void ProcessMessage(IncommingMessage incommingMessage) { switch (incommingMessage.Type) { case MessageType.REQUEST_PLAYER_NAME: _messageSender.SendMessage(CreatePlayerNameMessage(), _playerName); break; case MessageType.REQUEST_SESSION_CHOICE: _messageSender.SendMessage(CreateSessionChoiceMessage(), _playerName); break; case MessageType.SESSION_JOINED: // TODO break; case MessageType.DEAL_CARDS: _gameState.MyCards.UnionWith(incommingMessage.Cards); break; case MessageType.REQUEST_TRUMPF: var trumpf = new TrumpfChooser().ChooseTrumpf(_gameState.MyCards, incommingMessage.SchiebenAllowed); if (!trumpf.Mode.Equals(TrumpfMode.SCHIEBE)) { _gameState.DidNotSchiebe = true; } _messageSender.SendMessage(CreateChooseTrumpfMessage(trumpf), _playerName); break; case MessageType.BROADCAST_TRUMPF: _gameState.Trumpf = incommingMessage.Trumpf; break; case MessageType.REQUEST_CARD: _gameState.CardsOnTable = incommingMessage.CardsOnTable; var card = _cardChooser.ChooseCard(_gameState); _gameState.MyCards.Remove(card); _messageSender.SendMessage(CreateChooseCardMessage(card), _playerName); break; case MessageType.BROADCAST_STICH: Console.WriteLine(_playerName + ": " + incommingMessage.Stich); _gameState.StartNextRound(); break; // One game finished (9 rounds) case MessageType.BROADCAST_GAME_FINISHED: _gameState.ResetAfterGameRound(); break; case MessageType.BROADCAST_WINNER_TEAM: Console.Write("Game #" + _numberOfGamesPlayed + "Finished! Press any key to play another game."); _gameState = new GameState(); _numberOfGamesPlayed++; break; } }
public void FirstAllowedCardOnMyHandIsChosen() { var gameState = new GameState { MyCards = CreateMyCards(), CardsOnTable = NoCardsOnTable(), Trumpf = new Trumpf(TrumpfMode.TRUMPF, Suit.CLUBS) }; var chosenCard = _cardChooser.ChooseCard(gameState); Assert.IsNotNull(chosenCard); Assert.AreEqual(gameState.MyCards.First(), chosenCard); }