private void AttemptTransfer() { Part targetPart = GetPartClicked(); // No part was clicked if (targetPart == null) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_NFElectrical_ModuleRadioactiveStorageContainer_Message_AbortNoPartSelected"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); EndTransfer(); } else { // part cannot be on another vessel if (!VesselConnected(targetPart)) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_NFElectrical_ModuleRadioactiveStorageContainer_Message_AbortUnconnected"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); EndTransfer(); return; } RadioactiveStorageContainer container = targetPart.GetComponent <RadioactiveStorageContainer>(); if (container == null) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_NFElectrical_ModuleRadioactiveStorageContainer_Message_AbortNoRadStorage"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); EndTransfer(); } else { ModuleResourceConverter converter = container.GetComponent <ModuleResourceConverter>(); FissionReactor reactor = container.GetComponent <FissionReactor>(); if (core != null && core.CoreTemperature > container.MaxTempForTransfer) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_NFElectrical_ModuleRadioactiveStorageContainer_Message_AbortTooHot", container.MaxTempForTransfer.ToString("F0")), 5.0f, ScreenMessageStyle.UPPER_CENTER)); } else if (converter != null && converter.ModuleIsActive()) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_NFElectrical_ModuleRadioactiveStorageContainer_Message_AbortToRunningConverter"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); } else if (reactor != null && reactor.ModuleIsActive()) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_NFElectrical_ModuleRadioactiveStorageContainer_Message_AbortToRunningReactor"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); } else { // get available space in the target container double availableSpace = container.GetResourceAmount(curTransferType, true) - container.GetResourceAmount(curTransferType); double availableResource = this.GetResourceAmount(curTransferType); // transfer as much as possible double amount = this.part.RequestResource(curTransferType, availableSpace); container.part.RequestResource(curTransferType, -amount); ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_NFElectrical_ModuleRadioactiveStorageContainer_Message_Success", amount.ToString("F1"), curTransferType.ToString()), 5.0f, ScreenMessageStyle.UPPER_CENTER)); transferring = false; curTransferType = ""; } } } }
private void AttemptTransfer() { Part targetPart = GetPartClicked(); // No part was clicked if (targetPart == null) { ScreenMessages.PostScreenMessage(new ScreenMessage("No part selected, exiting transfer mode...", 5.0f, ScreenMessageStyle.UPPER_CENTER)); EndTransfer(); } else { // part cannot be on another vessel if (!VesselConnected(targetPart)) { ScreenMessages.PostScreenMessage(new ScreenMessage("Cannot transfer to an unconnected vessel, exiting transfer mode...", 5.0f, ScreenMessageStyle.UPPER_CENTER)); EndTransfer(); return; } RadioactiveStorageContainer container = targetPart.GetComponent <RadioactiveStorageContainer>(); if (container == null) { ScreenMessages.PostScreenMessage(new ScreenMessage("Selected part can't handle radioactive storage, exiting transfer mode...", 5.0f, ScreenMessageStyle.UPPER_CENTER)); EndTransfer(); } else { Debug.Log("A"); ModuleResourceConverter converter = container.GetComponent <ModuleResourceConverter>(); FissionReactor reactor = container.GetComponent <FissionReactor>(); Debug.Log("B"); if (part.temperature > container.MaxTempForTransfer) { ScreenMessages.PostScreenMessage(new ScreenMessage(String.Format("Selected part must be below {0:F0} K to transfer!", container.MaxTempForTransfer), 5.0f, ScreenMessageStyle.UPPER_CENTER)); } else if (converter != null && converter.ModuleIsActive()) { ScreenMessages.PostScreenMessage(new ScreenMessage("Cannot transfer into a running converter!", 5.0f, ScreenMessageStyle.UPPER_CENTER)); } else if (reactor != null && reactor.ModuleIsActive()) { ScreenMessages.PostScreenMessage(new ScreenMessage("Cannot transfer into a running reactor! Seriously a bad idea!", 5.0f, ScreenMessageStyle.UPPER_CENTER)); } else { Debug.Log("s"); // get available space in the target container double availableSpace = container.GetResourceAmount(curTransferType, true) - container.GetResourceAmount(curTransferType); double availableResource = this.GetResourceAmount(curTransferType); Debug.Log("1"); // transfer as much as possible double amount = this.part.RequestResource(curTransferType, availableSpace); container.part.RequestResource(curTransferType, -amount); Debug.Log("2"); ScreenMessages.PostScreenMessage(new ScreenMessage(String.Format("Transferred {0:F0} ", amount) + curTransferType + " to container!", 5.0f, ScreenMessageStyle.UPPER_CENTER)); } } } }