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;
        }
Beispiel #2
0
        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;
        }