public override void OnItemUse(KIS_Item item, KIS_Item.UseFrom useFrom) { if (useFrom != KIS_Item.UseFrom.KeyUp) { if (item.inventory.invType == ModuleKISInventory.InventoryType.Pod) { // Refuel item ScreenMessaging.ShowPriorityScreenMessage("Fuel tank refueled"); foreach (KIS_Item.ResourceInfo itemRessource in item.GetResources()) { if (itemRessource.resourceName == EvaPropellantResource) { item.SetResource(EvaPropellantResource, itemRessource.maxAmount); item.inventory.PlaySound(refuelSndPath, false, false); } } } if (item.inventory.invType == ModuleKISInventory.InventoryType.Eva) { // Refuel eva foreach (KIS_Item.ResourceInfo itemRessource in item.GetResources()) { if (itemRessource.resourceName == EvaPropellantResource) { PartResource evaRessource = item.inventory.part.GetComponent<PartResource>(); if (evaRessource) { double amountToFill = evaRessource.maxAmount - evaRessource.amount; if (itemRessource.amount > amountToFill) { ScreenMessaging.ShowPriorityScreenMessage("EVA pack refueled"); evaRessource.amount = evaRessource.maxAmount; item.SetResource(EvaPropellantResource, (itemRessource.amount - amountToFill)); if (item.equippedPart) { PartResource equippedTankRessource = item.equippedPart.Resources.list.Find( p => p.resourceName == EvaPropellantResource); if (equippedTankRessource) { equippedTankRessource.amount = (itemRessource.amount - amountToFill); } } item.inventory.PlaySound(refuelSndPath, false, false); } else { if (itemRessource.amount == 0) { ScreenMessaging.ShowPriorityScreenMessage( "Fuel tank is empty ! Cannot refuel EVA pack"); } else { ScreenMessaging.ShowPriorityScreenMessage( "Available propellant is not enough to refuel, EVA pack partially refueled"); } evaRessource.amount += itemRessource.amount; item.SetResource("EVA Propellant", 0); item.inventory.PlaySound(refuelSndPath, false, false); } } } } } } }
/// <summary> /// Refuels kerbal's EVA pack up to the maximum, and decreases canister reserve. /// </summary> /// <param name="item">Item to get fuel from.</param> protected virtual void RefillEVAPack(KIS_Item item) { var canisterFuelResource = GetCanisterFuelResource(item); var evaFuelResource = item.inventory.part.Resources.Get( item.inventory.part.GetComponent <KerbalEVA>().propellantResourceName); var needsFuel = evaFuelResource.maxAmount - evaFuelResource.amount; if (needsFuel < double.Epsilon) { ScreenMessaging.ShowPriorityScreenMessage(NoNeedToRefillMsg); } else { if (canisterFuelResource.amount < double.Epsilon) { ScreenMessaging.ShowPriorityScreenMessage(CanisterIsEmptyMsg); UISounds.PlayBipWrong(); } else { var canRefuel = Math.Min(needsFuel, canisterFuelResource.amount); item.SetResource(StockResourceNames.EvaPropellant, canisterFuelResource.amount - canRefuel); evaFuelResource.amount += canRefuel; if (canRefuel < needsFuel) { ScreenMessaging.ShowPriorityScreenMessage(NotEnoughPropellantMsg); } else { ScreenMessaging.ShowPriorityScreenMessage(JetpackRefueledMsg); } UISoundPlayer.instance.Play(refuelSndPath); } } }
public override void OnItemUse(KIS_Item item, KIS_Item.UseFrom useFrom) { if (useFrom != KIS_Item.UseFrom.KeyUp) { if (item.inventory.invType == ModuleKISInventory.InventoryType.Pod) { // Refuel item ScreenMessages.PostScreenMessage("Fuel tank refueled", 5, ScreenMessageStyle.UPPER_CENTER); foreach (KIS_Item.ResourceInfo itemRessource in item.GetResources()) { if (itemRessource.resourceName == "EVA Propellant") { item.SetResource("EVA Propellant", itemRessource.maxAmount); item.inventory.PlaySound(refuelSndPath, false, false); } } } if (item.inventory.invType == ModuleKISInventory.InventoryType.Eva) { // Refuel eva foreach (KIS_Item.ResourceInfo itemRessource in item.GetResources()) { if (itemRessource.resourceName == "EVA Propellant") { PartResource evaRessource = item.inventory.part.GetComponent <PartResource>(); if (evaRessource) { double amountToFill = evaRessource.maxAmount - evaRessource.amount; if (itemRessource.amount > amountToFill) { ScreenMessages.PostScreenMessage("EVA pack refueled", 5, ScreenMessageStyle.UPPER_CENTER); evaRessource.amount = evaRessource.maxAmount; item.SetResource("EVA Propellant", (itemRessource.amount - amountToFill)); if (item.equippedPart) { PartResource equippedTankRessource = item.equippedPart.Resources.list.Find(p => p.resourceName == "EVA Propellant"); if (equippedTankRessource) { equippedTankRessource.amount = (itemRessource.amount - amountToFill); } } item.inventory.PlaySound(refuelSndPath, false, false); } else { if (itemRessource.amount == 0) { ScreenMessages.PostScreenMessage("Fuel tank is empty ! Cannot refuel EVA pack", 5, ScreenMessageStyle.UPPER_CENTER); } else { ScreenMessages.PostScreenMessage("Available propellant is not enough to refuel, EVA pack partially refueled", 5, ScreenMessageStyle.UPPER_CENTER); } evaRessource.amount += itemRessource.amount; item.SetResource("EVA Propellant", 0); item.inventory.PlaySound(refuelSndPath, false, false); } } } } } } }
/// <summary>Fills up canister to the maximum capacity.</summary> /// <param name="item">Item to refill.</param> protected virtual void RefillCanister(KIS_Item item) { item.SetResource(EvaPropellantResourceName, GetCanisterFuelResource(item).maxAmount); ScreenMessaging.ShowPriorityScreenMessage(CanisterRefilledMsg); UISoundPlayer.instance.Play(refuelSndPath); }