public ResourcePackage RequestResource(Structure requestingStructure, ResourceType resourceType, RequestPriority priority) { var providedPackage = Provisions.Dequeue(resourceType, rp => HasPathFilter(rp.StartStructure, requestingStructure)); if (providedPackage != null) { providedPackage.DestinationStructure = requestingStructure; providedPackage.SpecifyResourceType(resourceType); providedPackage.Move(); return(providedPackage); } var resourcePackage = new ResourcePackage(resourceType, World.PathFinder, World.GameSettings.GameplaySettings) { DestinationStructure = requestingStructure }; AddPackage(resourcePackage); Requests.Enqueue(resourcePackage, priority); return(resourcePackage); }