/// <summary> /// Add a resource to the transfer request. /// </summary> /// <param name="resource">The <see cref="OrbitalLogisticsResource"/> to transfer from the source <see cref="Vessel"/>.</param> /// <param name="amount">The amount to transfer to the destination <see cref="Vessel"/>.</param> /// <returns></returns> public OrbitalLogisticsTransferRequestResource AddResource(OrbitalLogisticsResource resource, double amount) { // Determine if requested transfer amount is feasible double available = resource.GetAvailableAmount(); if (amount > available) { amount = available; } // Check if there is already a transfer setup for the selected resource var transferResource = ResourceRequests.Where(r => r.ResourceDefinition.id == resource.ResourceDefinition.id).SingleOrDefault(); if (transferResource == null) { // Add the resource to the transfer request transferResource = new OrbitalLogisticsTransferRequestResource(resource.ResourceDefinition, amount); ResourceRequests.Add(transferResource); } else { transferResource.TransferAmount = amount; } // Update duration CalculateDuration(); return(transferResource); }
/// <summary> /// Implementation of <see cref="IConfigNode.Load(ConfigNode)"/>. /// </summary> /// <param name="node"></param> public void Load(ConfigNode node) { ConfigNode.LoadObjectFromConfig(this, node); if (ResourceRequests == null) { ResourceRequests = new List <OrbitalLogisticsTransferRequestResource>(); } foreach (ConfigNode subNode in node.nodes) { ResourceRequests.Add(ConfigNode.CreateObjectFromConfig <OrbitalLogisticsTransferRequestResource>(subNode)); } }