Example #1
0
        public void Start()
        {
            while (!_gameData.IsGameFinished)
            {
                var player       = _gameData.PlayersCircularManager.GetNext();
                var playerStatus = player.RoundStatus;
                playerStatus.Clear();

                var processor = new PlayerActionProcessorManager(_gameData, player.PlayerData, playerStatus);

                while (!playerStatus.IsMainActionDone)
                {
                    PlayerMainAction playerAction = player.Connection.DoMainAction(_gameData.GetGameDto());

                    processor.ProcessMainAction(playerAction);
                }

                while (!playerStatus.IsCustomerTaken && player.PlayerData.CanTakeCustomer(_gameData))
                {
                    Customer selectedCustomer = player.Connection.TakeCustomer(_gameData);

                    processor.ProcessTakeCustomerAction(selectedCustomer);
                }

                playerStatus.IsActionFinished = true;
            }
        }
Example #2
0
        public void ProcessMainAction(PlayerMainAction playerMainAction)
        {
            switch (playerMainAction.MainTurnAction)
            {
            case MainTurnAction.Take3DifferentGems:
                new Take3DifferentGemsProcessor(_gameData, _playerData, _playerRoundStatus).Process(playerMainAction.Parameters as Take3DifferentGemsParameters);
                break;

            case MainTurnAction.BuyCard:
                new BuyCardProcessor(_gameData, _playerData, _playerRoundStatus).Process(playerMainAction.Parameters as BuyCardParameters);
                break;

            case MainTurnAction.Take2TheSameGems:
                new Take2TheSameGemsProcessor(_gameData, _playerData, _playerRoundStatus).Process(playerMainAction.Parameters as Take2TheSameGemsParameters);
                break;

            case MainTurnAction.BookCardAndTake1Gold:
                new BookCardAndTake1GoldProcessor(_gameData, _playerData, _playerRoundStatus).Process(playerMainAction.Parameters as BookCardAndTake1GoldParameters);
                break;

            default:
                throw new InvalidOperationException();
            }
        }