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