public bool DoSettlerAction(List<IISlandObject> islandObjects, bool isHasPrivilage) { var param = new SettlerParameters(); _playerStatus.Board.Buildings.OfType<BuildingBase<SettlerParameters>>() .Where(x => x.IsActive) .ToList() .ForEach(x => x.DoAction(ref param)); var tooManyObjects = islandObjects.Count() > 1 && !param.CanTakeAdditionalPlantation; var notAllowedQuarry = islandObjects.OfType<Quarry>().Any() && !(param.CanTakeQuarryInsteadPlantation || isHasPrivilage); if (tooManyObjects || notAllowedQuarry) { return false; } var quarries = islandObjects.OfType<Quarry>(); var plantations = islandObjects.OfType<Plantation>(); foreach (var quarry in quarries) { var newQuarry = _mainBoardController.Status.Quarries.Dequeue(); _playerStatus.Board.BuildQuarry(quarry); } foreach (var plantation in plantations) { _mainBoardController.Status.AvailablePlantations.Remove(plantation); _playerStatus.Board.BuildPlantation(plantation); } if (param.CanTakeAdditionalColonist) { foreach (var islandObject in islandObjects) { _mainBoardController.Status.Colonists.Move(islandObject); } } return true; }
private void UpdateSettlerData(ref SimulateSettlerActionData data, IEnumerable<IBuilding> buildings) { var settlerParameters = new SettlerParameters(); foreach (var building in buildings.OfType<BuildingBase<SettlerParameters>>()) { building.DoAction(ref settlerParameters); } data.CanTakeAdditionalColonist = settlerParameters.CanTakeAdditionalColonist; data.CanTakeAdditionalPlantation = settlerParameters.CanTakeAdditionalPlantation; data.CanTakeQuarryInsteadPlantation = settlerParameters.CanTakeQuarryInsteadPlantation; //data.AvailablePlantations = _mainBoardController.Status.AvailablePlantations; //data.AvailableQuarryCount = _mainBoardController.Status.Quarries.Count; }