예제 #1
0
        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);
        }