Example #1
0
        // 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);
        }