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); }
public IBuilding SelectBuildingToBuild(bool isHasPrivilage, PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { var allBuildings = board.Buildings.Where(x => x.Value > 0); var param = new BuilderParameters(); status.Board.Buildings.OfType<BuildingBase<BuilderParameters>>() .ToList() .ForEach(x => x.DoAction(ref param)); var discount = status.Board.Quarries.Count(x => x.IsActive); var availableBuldings = allBuildings.Where(x => x.Key.Cost - Math.Min(discount, x.Key.Discount) <= status.Doubloons).ToArray(); var building = availableBuldings[new Random().Next(availableBuldings.Count() - 1)]; return building.Key; }
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; }
public IEnumerable<Goods> SelectGoodsForWarehouse(PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }
public Goods SelectAdditionalGoods(PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }
public MoveDirection MoveColonist(bool isHasPrivilage, PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }
private void DoCaptainAction(PlayerStatus status, IPlayerConnection connection, PlayerController controller, bool isHasPrivilage, List<PlayerStatus> opponents) { var goodsToShip = connection.SelectGoodsToShip(status, _mainBoardController.Status, opponents); controller.DoCaptainAction(goodsToShip); }
public IEnumerable<IISlandObject> SelectISlandObjects(bool isHasPrivilage, PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }
public RoleCardStatus SelectRole(List<RoleCardStatus> cards, PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { var rand = new Random(); return cards[rand.Next(cards.Count - 1)]; }
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); } } }
private void DoTradeAction(IPlayerConnection connection, bool isHasPrivilage, PlayerStatus status, List<PlayerStatus> opponents, PlayerController controller) { var goodsForTrade = connection.SelectGoodsToTrade(isHasPrivilage, status, _mainBoardController.Status, opponents); if (goodsForTrade.HasValue) { controller.DoTradeAction(goodsForTrade.Value, isHasPrivilage); } }
private void DoSettlerAction(IPlayerConnection connection, bool isHasPrivilage, PlayerStatus status, List<PlayerStatus> opponents, PlayerController controller) { var islandObjects = connection.SelectISlandObjects(isHasPrivilage, status, _mainBoardController.Status, opponents); controller.DoSettlerAction(islandObjects.ToList(), isHasPrivilage); }
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; }
private void DoMayorAction(bool isHasPrivilage, IPlayerConnection connection, PlayerStatus status, List<PlayerStatus> opponents, PlayerController controller) { if (isHasPrivilage) { var usePrivilage = connection.IsUsePrivilage(status, _mainBoardController.Status, opponents); controller.DoMayorActionTakeAdditionalColinists(usePrivilage); } Func<MoveDirection> moveDirectionAction = () => connection.MoveColonist(isHasPrivilage, status, _mainBoardController.Status, opponents); var moveDirection = moveDirectionAction(); while (moveDirection != null) { controller.DoMoveColonistAction(moveDirection); moveDirection = moveDirectionAction(); } }
private void DoCraftsmanAction(IPlayerConnection currentConnection, PlayerController currentPlayerController, MainBoardStatus boardStatus, IEnumerable<PlayerStatus> currentOpponents, PlayerStatus currentPlayerStatus) { var players = GeneratePlayersOrder(_governor); foreach (var player in players) { var status = _players[player].Status; var param = new CraftsmanParameters(); status.Board.Buildings.OfType<GoodsFactoryBase>().ToList().ForEach(x => x.DoAction(ref param)); var plantations = status.Board.Plantations.Where(x => x.IsActive).Select(x => x.Type).GroupBy(x => x); var production = plantations.ToDictionary(plantation => plantation.Key, plantation => Math.Min(plantation.Count(), param.GoodsProduction[plantation.Key])); currentPlayerController.DoCraftsmanAction(production); } var additionalGoods = currentConnection.SelectAdditionalGoods(currentPlayerStatus, boardStatus, currentOpponents); currentPlayerController.DoCraftsmanActionReceiveAdditionalGoods(additionalGoods); }
public GoodsToShip SelectGoodsToShip(PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }
public Goods? SelectGoodsToTrade(bool isHasPrivilage, PlayerStatus status, MainBoardStatus board, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }
private SimulateTradeActionData SimulateTradeAction(PlayerStatus playerStatus) { var warehouse = playerStatus.Warehouse; int? cornPossiblePrice = CalculateGoodsPrice(Goods.Corn); int? indigoPossiblePrice = CalculateGoodsPrice(Goods.Indigo); int? sugarPossiblePrice = CalculateGoodsPrice(Goods.Sugar); int? tabaccoPossiblePrice = CalculateGoodsPrice(Goods.Tabacco); int? coffeePossiblePrice = CalculateGoodsPrice(Goods.Coffee); var result = new SimulateTradeActionData(cornPossiblePrice, indigoPossiblePrice, sugarPossiblePrice, tabaccoPossiblePrice, coffeePossiblePrice); return result; }
public Goods? SelectOneGoodsForStore(PlayerStatus status, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }
public bool IsTakeAdditionalColonist(bool isHasPrivilage, PlayerStatus status, MainBoardStatus board, List<PlayerStatus> opponents) { throw new NotImplementedException(); }
public PlayerController(MainBoardController mainBoardController, PlayerStatus playerStatus) { _mainBoardController = mainBoardController; _playerStatus = playerStatus; }
public bool IsUsePrivilage(PlayerStatus status, MainBoardStatus mainBoardStatus, IEnumerable<PlayerStatus> opponents) { throw new NotImplementedException(); }