Ejemplo n.º 1
0
        public void DoSelectBuildingForBuild_True()
        {
            var status = new PlayerStatus(1, "Test");
            status.ReceiveDoubloons(10);
            var mainBoardController = new MainBoardController(4);
            var playerController = new PlayerController(mainBoardController, status);

            var university = new University();
            university.ReceiveColonist();

            status.Board.BuildBuilding(university);

            var result = playerController.DoSelectBuildingToBuild(mainBoardController.Status.Buildings.First().Key, true);

            Assert.IsTrue(result);
        }
Ejemplo n.º 2
0
        public static List<PlayerStatus> GeneratePlayers(MainBoardController mainBoardController, int playersCount, string[] names)
        {
            var result = new List<PlayerStatus>();
            for (int i = 0; i < playersCount; i++)
            {
                var player = new PlayerStatus(i, names[i]);
                var doubloons = Constants.DoubloonsByPlayers[playersCount];
                player.ReceiveDoubloons(mainBoardController.TakeDoubloons(doubloons));
                var plantation =
                    new Plantation(Constants.PlantationsByPlayersOrder[new Tuple<int, int>(i + 1, playersCount)]);
                player.Board.BuildPlantation(plantation);

                result.Add(player);
            }

            return result;
        }
Ejemplo n.º 3
0
        public GameController(IVisualizer visualizer, params IPlayerConnection[] connections)
        {
            InitEvents(visualizer);

            var playerCount = connections.Length;
            _mainBoardController = new MainBoardController(playerCount);
            _connections = Util.Shuffle(connections).ToList();
            var players = PlayerStatusFactory.GeneratePlayers(_mainBoardController, playerCount,
                _connections.Select(x => x.Name).ToArray());

            _players = players.ToDictionary(x => x.Id,
                x =>
                    new PlayerContainer
                    {
                        Connection = _connections.Single(c => c.Name == x.Name),
                        Status = x,
                        Controller = new PlayerController(_mainBoardController, x)
                    });

            _governor = 0;
        }
Ejemplo n.º 4
0
 public PlayerController(MainBoardController mainBoardController, PlayerStatus playerStatus)
 {
     _mainBoardController = mainBoardController;
     _playerStatus = playerStatus;
 }
Ejemplo n.º 5
0
        private void DoTradeFinishAction(MainBoardController mainBoardController)
        {
            var market = mainBoardController.Status.Market;
            var endPhaseResult = market.EndPhase();

            if (endPhaseResult != null)
            {
                mainBoardController.ReceiveGoods(endPhaseResult);
            }
        }
Ejemplo n.º 6
0
        private bool DoMayorInitAction(PlayerStatus currentPlayerStatus, MainBoardController mainBoardController,
            List<int> playerIds)
        {
            playerIds.Insert(0, currentPlayerStatus.Id);
            var playersCount = playerIds.Count;
            foreach (var playerId in playerIds)
            {
                var currentTotalColonistsCount = _mainBoardController.Status.AvailableColonists.CurrentColonistsCount;
                var status = _players[playerId].Status;
                var colonistsCount = currentTotalColonistsCount%playersCount + currentTotalColonistsCount/playersCount;

                _mainBoardController.Status.Colonists.Move(status.Board.ColonistsWarehouse, colonistsCount);

                playersCount--;
            }

            return true;
        }
Ejemplo n.º 7
0
 private void DoCaptainFinishAction(MainBoardController mainBoardController)
 {
     var freeGoods = mainBoardController.Status.Ships.Select(x => x.FinishRound()).Where(x => x != null);
     mainBoardController.ReceiveGoods(freeGoods);
 }