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);
        }
示例#2
0
        private void DoBuilderAction(IPlayerConnection connection, bool isHasPrivilage, PlayerStatus status,
            MainBoardStatus board, List<PlayerStatus> opponents, PlayerController controller)
        {
            var isSuccessfull = false;
            IBuilding selectedBuilding = null;
            while (!isSuccessfull)
            {
                var building = connection.SelectBuildingToBuild(isHasPrivilage, status, board,
                    opponents);

                isSuccessfull = controller.DoSelectBuildingToBuild(building, isHasPrivilage);
                if (isSuccessfull && building != null)
                {
                    selectedBuilding = status.Board.Buildings.Single(x => x.GetType() == building.GetType());
                }
            }

            if (selectedBuilding == null)
            {
                return;
            }

            var param = new BuilderParameters();
            status.Board.Buildings.OfType<BuildingBase<BuilderParameters>>().Where(x=>x.IsActive).ToList().ForEach(x=>x.DoAction(ref param));

            if (param.TakeAdditionalColonist && board.Colonists.CurrentColonistsCount > 0)
            {
                var isTakeAdditionalColonist = connection.IsTakeAdditionalColonist(isHasPrivilage, status, board,
                    opponents);

                if (isTakeAdditionalColonist)
                {
                    board.Colonists.Move(selectedBuilding);
                }
            }
        }