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 TrumpfIsAlwaysObenabe() { var cards = CreateCardsWithJackNineAndThirdCard(); var trumpf = new TrumpfChooser().ChooseTrumpf(cards, true); Assert.IsNotNull(trumpf); Assert.AreEqual(TrumpfMode.OBEABE, trumpf.Mode); }