/// <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; } }
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; }
/// <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); } }