/// <inheritdoc/>
        public void DistributeWorkersIntoSlots(
            int workerCount, IEnumerable <IWorkerSlot> slots, ICity sourceCity,
            YieldFocusType focus
            )
        {
            foreach (var slot in slots)
            {
                slot.IsOccupied = false;
            }

            switch (focus)
            {
            case YieldFocusType.Food:       PerformFocusedDistribution(workerCount, slots, sourceCity, YieldType.Food);       break;

            case YieldFocusType.Gold:       PerformFocusedDistribution(workerCount, slots, sourceCity, YieldType.Gold);       break;

            case YieldFocusType.Production: PerformFocusedDistribution(workerCount, slots, sourceCity, YieldType.Production); break;

            case YieldFocusType.Culture:    PerformFocusedDistribution(workerCount, slots, sourceCity, YieldType.Culture);    break;

            case YieldFocusType.Science:    PerformFocusedDistribution(workerCount, slots, sourceCity, YieldType.Science);    break;

            case YieldFocusType.TotalYield: PerformUnfocusedDistribution(workerCount, slots, sourceCity); break;

            default: break;
            }
        }
Пример #2
0
 private void SetCityFields(
     ICity city, int population, int foodStockpile, int cultureStockpile, YieldFocusType resourceFocus
     )
 {
     city.Population       = population;
     city.FoodStockpile    = foodStockpile;
     city.CultureStockpile = cultureStockpile;
     city.YieldFocus       = resourceFocus;
 }
Пример #3
0
        /// <summary>
        /// Constructs a comparison that orders slots based on their capacity to satisfy a particular
        /// ResourceFocusType for the argued city.
        /// </summary>
        /// <param name="sourceCity">The city whose hypothetical yield is being considered</param>
        /// <param name="focus">The ResourceFocusType to be maximized for</param>
        /// <param name="generationLogic">The IResourceGenerationLogic used to determine the yield for the argued city</param>
        /// <returns>A Comparison that'll sort IHexCells based on their usefulness to the argued focus</returns>
        public static Comparison <IHexCell> BuildComparisonAscending(
            ICity sourceCity, YieldFocusType focus, IYieldGenerationLogic generationLogic
            )
        {
            switch (focus)
            {
            case YieldFocusType.Food:       return(BuildYieldComparisonAscending(YieldType.Food, sourceCity, generationLogic));

            case YieldFocusType.Gold:       return(BuildYieldComparisonAscending(YieldType.Gold, sourceCity, generationLogic));

            case YieldFocusType.Production: return(BuildYieldComparisonAscending(YieldType.Production, sourceCity, generationLogic));

            case YieldFocusType.Culture:    return(BuildYieldComparisonAscending(YieldType.Culture, sourceCity, generationLogic));

            case YieldFocusType.Science:    return(BuildYieldComparisonAscending(YieldType.Science, sourceCity, generationLogic));

            case YieldFocusType.TotalYield: return(BuildTotalYieldComparisonAscending(sourceCity, generationLogic));

            default: return(null);
            }
        }