Esempio n. 1
0
 public void RequestIngredients(ResourceTypeSource[] resourceTypes)
 {
     if (RequestedNetworkResourceList.Any() || RequestedHexagonResourceList.Any())
     {
         throw new InvalidOperationException("Can't request new Resources until all current requests are completed");
     }
     if (HasAdjacentWater && Structure.Description.CanExtractWater && resourceTypes.Any(r => r.SourceType == SourceType.Network && r.ResourceType == ResourceType.Water))
     {
         var waterCount = resourceTypes.Count(r => r.SourceType == SourceType.Network && (r.ResourceType == ResourceType.PureWater || r.ResourceType == ResourceType.Water));
         resourceTypes = resourceTypes.Where(r => r.SourceType == SourceType.Network && r.ResourceType != ResourceType.Water && r.ResourceType != ResourceType.PureWater).ToArray();
         for (int i = 0; i < waterCount; i++)
         {
             RequestedHexagonResourceList.Add(ResourceType.PureWater);
         }
     }
     foreach (var resourceType in resourceTypes)
     {
         if (resourceType.SourceType == SourceType.Network)
         {
             var resourcePackage = World.ResourceManager.RequestResource(Structure, resourceType.ResourceType, Priority);
             RequestedNetworkResourceList.Add(resourcePackage);
         }
         else
         {
             RequestedHexagonResourceList.Add(resourceType.ResourceType);
         }
     }
 }
Esempio n. 2
0
 public void ResourceArrived(ResourcePackage resourcePackage)
 {
     RequestedNetworkResourceList.Remove(resourcePackage);
     ArrivedResourceList.Add(resourcePackage.ResourceType);
     NewResourceAvailable();
 }