コード例 #1
0
 /// <summary>
 /// Allows enabling/disabling electric generators (and fuel cells)
 /// </summary>
 /// <param name="state"></param>
 public void ButtonEnableElectricGenerator(bool state)
 {
     if (vessel != null)
     {
         foreach (PartModule pm in ElectricGenerators(vessel))
         {
             if (pm is ModuleGenerator)
             {
                 ModuleGenerator gen = pm as ModuleGenerator;
                 if (state)
                 {
                     gen.Activate();
                 }
                 else
                 {
                     gen.Shutdown();
                 }
             }
             else if (pm is ModuleResourceConverter)
             {
                 ModuleResourceConverter gen = pm as ModuleResourceConverter;
                 if (state)
                 {
                     gen.StartResourceConverter();
                 }
                 else
                 {
                     gen.StopResourceConverter();
                 }
             }
         }
     }
 }
コード例 #2
0
        protected virtual void updateExperimentState()
        {
            if (isGUIVisible)
            {
                //Check auto restart field.
                if (!rerunnable && Fields["autoRestartExperiment"].guiActive && HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight)
                {
                    Fields["autoRestartExperiment"].guiActive       = false;
                    Fields["autoRestartExperiment"].guiActiveEditor = false;
                }
            }

            //If we're not in flight, then we're done.
            if (HighLogic.LoadedSceneIsFlight == false)
            {
                return;
            }

            //Base class actions and events are always disabled.
            Events["DeployExperiment"].active         = false;
            Events["DeployExperimentExternal"].active = false;
            Actions["DeployAction"].active            = false;

            //If the experiment isn't running then we're done.
            if (!isRunning && isGUIVisible)
            {
                //Check for reset
                if (isCompleted && !rerunnable && (resettable || resettableOnEVA) && !Events["ResetExperiment"].active && !Events["ResetExperimentExternal"].active && !Events["StartExperiment"].active)
                {
                    Events["StartExperiment"].active = true;
                }
                return;
            }

            //If the experiment has been completed then stop the experiment from running.
            if (isCompleted)
            {
                StopExperiment();
                if (isGUIVisible)
                {
                    Events["ReviewDataEvent"].active   = true;
                    Events["TransferDataEvent"].active = true;
                    if (!rerunnable)
                    {
                        Events["StartExperiment"].active = false;
                    }
                }
                status = "Completed";

                if (autoRestartExperiment)
                {
                    ResetExperiment();
                    StartExperiment();
                }
                else
                {
                    ModuleResourceConverter converter = this.part.FindModuleImplementing <ModuleResourceConverter>();
                    if (converter != null && converter.IsActivated)
                    {
                        converter.StopResourceConverter();
                    }
                }
                return;
            }

            //Check for completion. We do this if the GUI is visible (we're not being managed by an experiment lab)
            if (isGUIVisible)
            {
                CheckCompletion();
            }
        }