// Find associated Engine module public ModuleSystemHeatFissionEngine FindEngineModule(Part part, string moduleName) { ModuleSystemHeatFissionEngine engine = part.GetComponents <ModuleSystemHeatFissionEngine>().ToList().Find(x => x.moduleID == moduleName); if (engine == null) { KSHUtils.LogError($"[{part}] No ModuleSystemHeatFissionEngine named {moduleName} was found, using first instance"); engineModule = part.GetComponents <ModuleSystemHeatFissionEngine>().ToList().First(); } if (engine == null) { KSHUtils.LogError($"[{part}] No ModuleSystemHeatFissionEngine was found."); } return(engine); }
/// <summary> /// Test to see if this part can transfter resources /// </summary> /// <param name="nm"></param> /// <returns></returns> protected bool CheckPartRequirements() { // Some modules need to be off. ModuleSystemHeat heat = GetComponent <ModuleSystemHeat>(); ModuleSystemHeatConverter[] converters = GetComponents <ModuleSystemHeatConverter>(); ModuleSystemHeatFissionReactor reactor = GetComponent <ModuleSystemHeatFissionReactor>(); ModuleSystemHeatFissionEngine engine = GetComponent <ModuleSystemHeatFissionEngine>(); // Fail if a converter is on foreach (ModuleSystemHeatConverter converter in converters) { if (converter != null && converter.ModuleIsActive()) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_SystemHeat_ModuleSystemHeatFissionFuelContainer_Message_AbortFromRunningConverter"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); return(false); } } // Fail if a reactor is on if (reactor != null && reactor.Enabled) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_SystemHeat_ModuleSystemHeatFissionFuelContainer_Message_AbortFromRunningReactor"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); return(false); } //Fail if an nuclear engine is on if (engine != null && engine.Enabled) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_SystemHeat_ModuleSystemHeatFissionFuelContainer_Message_AbortFromRunningReactor"), 5.0f, ScreenMessageStyle.UPPER_CENTER)); return(false); } // Fail if the part is too hot if (heat != null && heat.LoopTemperature > MaxTemperatureForRefuel) { ScreenMessages.PostScreenMessage(new ScreenMessage(Localizer.Format("#LOC_SystemHeat_ModuleSystemHeatFissionFuelContainer_Message_AbortTooHot", MaxTemperatureForRefuel.ToString("F0")), 5.0f, ScreenMessageStyle.UPPER_CENTER)); return(false); } return(true); }