// Finds a list of all fission containers List <FissionContainer> FindFissionContainers() { List <FissionContainer> fissionContainers = new List <FissionContainer>(); List <Part> allParts = this.vessel.parts; foreach (Part pt in allParts) { PartModuleList pml = pt.Modules; for (int i = 0; i < pml.Count; i++) { PartModule curModule = pml.GetModule(i); FissionContainer candidate = curModule.GetComponent <FissionContainer>(); if (candidate != null) { fissionContainers.Add(candidate); } } } if (fissionContainers.Count == 0) { ScreenMessages.PostScreenMessage(new ScreenMessage("No nuclear fuel containers attached to this ship.", 4f, ScreenMessageStyle.UPPER_CENTER)); } return(fissionContainers); }
// #################################### // Refuelling // #################################### // Tries to refeul the reactor void TryRefuel() { if (Enabled || CurrentCoreTemperature > 0f) { ScreenMessages.PostScreenMessage(new ScreenMessage("Cannot refuel while reactor is running or hot!", 4f, ScreenMessageStyle.UPPER_CENTER)); return; } else { Debug.Log("NFPP: Searching for valid containers..."); FissionContainer from = FindValidFissionContainer(); if (from != null) { Debug.Log("NFPP: Refuelling valid container..."); from.RefuelReactorFromContainer(this, this.part.Resources.Get(PartResourceLibrary.Instance.GetDefinition("DepletedUranium").id).amount); } } }
public override void OnFixedUpdate() { if (Enabled) { if (workContainer == null) { // try to get a container, turn us off if we can't find any workContainer = FindValidFissionContainer(); if (workContainer == null) { StopReprocessing(); Status = "No waste found"; return; } } // consume power double power = this.part.RequestResource("ElectricCharge", EnergyCost * TimeWarp.fixedDeltaTime); if (power <= 0d) { Status = "Not enough Electric Charge!"; } else { Status = String.Format("Processing at: {0:F0} U/s",ReprocessRate); double wasteRefined = workContainer.part.RequestResource("DepletedUranium", ReprocessRate * TimeWarp.fixedDeltaTime); if (wasteRefined >= 0d) { workContainer.part.RequestResource("EnrichedUranium", wasteRefined * RecycleEfficiency); } } } }
public override void OnFixedUpdate() { if (Enabled) { if (workContainer == null) { // try to get a container, turn us off if we can't find any workContainer = FindValidFissionContainer(); if (workContainer == null) { StopReprocessing(); Status = "No waste found"; return; } } // consume power double power = this.part.RequestResource("ElectricCharge", EnergyCost * TimeWarp.fixedDeltaTime); if (power <= 0d) { Status = "Not enough Electric Charge!"; } else { Status = String.Format("Processing at: {0:F0} U/s", ReprocessRate); double wasteRefined = workContainer.part.RequestResource("DepletedUranium", ReprocessRate * TimeWarp.fixedDeltaTime); if (wasteRefined >= 0d) { workContainer.part.RequestResource("EnrichedUranium", wasteRefined * RecycleEfficiency); } } } }