/// <summary>
 /// Attempts to call ResetExperiment() on subclasses. Falls back to default on failure.
 /// </summary>
 /// <param name="moduleScienceExperiment"></param>
 public static void ResetExperimentUsingReflection(this ModuleScienceExperiment moduleScienceExperiment)
 {
     try {
         moduleScienceExperiment.GetType().InvokeMember("ResetExperiment", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.IgnoreReturn | System.Reflection.BindingFlags.InvokeMethod, null, moduleScienceExperiment, null);
     } catch {
         moduleScienceExperiment.ResetExperiment();
     }
 }
Exemplo n.º 2
0
 public void Reset()
 {
     if (Inoperable)
     {
         throw new InvalidOperationException("Experiment is inoperable");
     }
     experiment.ResetExperiment();
 }
        public override void ResetExperiment()
        {
            ThrowIfNotCPUVessel();

            if (Inoperable())
            {
                throw new KOSException("Experiment is inoperable");
            }

            module.ResetExperiment();
        }
Exemplo n.º 4
0
        public void ResetExperiment()
        {
            if (experiment == null)
            {
                return;
            }

            //Make sure that the active vessel has a robonaut.
            if (FlightGlobals.ActiveVessel.FindPartModuleImplementing <ModuleRobonaut>() == null)
            {
                ScreenMessages.PostScreenMessage(ModuleRobonaut.NoRobonautMsg, ModuleRobonaut.MessageDuration, ScreenMessageStyle.UPPER_CENTER);
                FlightLogger.fetch.LogEvent(ModuleRobonaut.NoRobonautMsg);
                return;
            }

            bool experienceEnabled = HighLogic.CurrentGame.Parameters.CustomParams <GameParameters.AdvancedParams>().EnableKerbalExperience;

            HighLogic.CurrentGame.Parameters.CustomParams <GameParameters.AdvancedParams>().EnableKerbalExperience = false;
            experiment.ResetExperiment();
            HighLogic.CurrentGame.Parameters.CustomParams <GameParameters.AdvancedParams>().EnableKerbalExperience = experienceEnabled;
        }
Exemplo n.º 5
0
 public void SaveExperiment(Vessel vessel)
 {
     if (persistentId != 0)
     {
         ModuleScienceExperiment mod = vessel.FindPartModulesImplementing <ModuleScienceExperiment>()
                                       .Where(m => (m.part.persistentId == persistentId) && (m.experimentID == experimentID))
                                       .First();
         mod.Inoperable = inoperable;
         if (inoperable)
         {
             mod.Deployed = true;
             mod.SetInoperable();
             mod.DumpData(null);
         }
         else
         {
             mod.DumpData(null);
             mod.ResetExperiment();
         }
     }
 }
Exemplo n.º 6
0
 public void Reset(ModuleScienceExperiment baseExperiment)
 {
     Log(baseExperiment.experimentID, ": Reseting experiment");
     baseExperiment.ResetExperiment();
 }
 private void ResetExperiment(ModuleScienceExperiment currentExperiment)
 {
     //Same as DeployExperiment just switched out the name
       try
       {
     currentExperiment.GetType().InvokeMember("ResetExperiment", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.IgnoreReturn | System.Reflection.BindingFlags.InvokeMethod, null, currentExperiment, null);
       }
       catch (Exception e)
       {
     Utilities.debug(modName, Utilities.LogMode.Error, "Failed to invoke \"ResetExperiment\" using GetType(). " + e);
     currentExperiment.ResetExperiment();
       }
       currentExperiment.Inoperable = false;
 }
Exemplo n.º 8
0
 public void Reset(ModuleScienceExperiment baseExperiment)
 {
     _AutomatedScienceSamplerInstance.Log(baseExperiment.experimentID, ": Reseting experiment");
     baseExperiment.ResetExperiment();
 }
Exemplo n.º 9
0
    void drawExperiment(ModuleScienceExperiment experiment)
    {
        var page = pages.Find(p => p.host == experiment.part);
        var data = experiment.GetData()[0];
        bool hasData = data != null;
        string stats = "";

        if (hasData) {
            var sv = simulateScience(data);
            var tsv = simulateScience(data, true);
            dataAmount += data.dataAmount;
            returnScience += sv;
            transmitScience += tsv;
            stats = string.Format("( {0:F1} / {1:F1} )", sv, tsv);

            if (page != null) {
                var sub = ResearchAndDevelopment.GetSubjectByID(data.subjectID);
                if (sub.science < sub.scienceCap) {
                    page.OnKeepData(page.pageData);
                }
                else {
                    page.OnDiscardData(page.pageData);
                }
            }
        }

        ScienceExperiment exp = ResearchAndDevelopment.GetExperiment(experiment.experiment.id);
        string tooltip = "";

        CelestialBody body = experiment.vessel.mainBody;
        foreach (ExperimentSituations sit in Enum.GetValues(typeof(ExperimentSituations)))
        {
            if (exp.IsAvailableWhile(sit, body) &&
                 !((sit == ExperimentSituations.FlyingHigh || sit == ExperimentSituations.FlyingLow) && !body.atmosphere) &&
                 !(sit == ExperimentSituations.SrfSplashed && !body.ocean)
               )
            {
                string key;
                if (exp.BiomeIsRelevantWhile(sit))
                {
                    if (body.BiomeMap != null && body.BiomeMap.Attributes != null)
                        foreach (CBAttributeMap.MapAttribute biome in body.BiomeMap.Attributes)
                        {
                            ScienceSubject sub = ResearchAndDevelopment.GetExperimentSubject(exp, sit, body, biome.name);
                            tooltip += body.name + " " + sit.ToString() + " " + biome.name + " " + sub.science.ToString("F1") + "/" + Mathf.RoundToInt(sub.scienceCap) + "\n";

                        }
                    if (body.name == "Kerbin")
                    {
                        string[] specials = { "KSC", "Runway", "Launchpad" };
                        foreach (string special in specials)
                        {
                            ScienceSubject sub = ResearchAndDevelopment.GetExperimentSubject(exp, sit, body, special);
                            tooltip += body.name + " " + sit.ToString() + " " + special + " " + sub.science.ToString("F1") + "/" + Mathf.RoundToInt(sub.scienceCap) + "\n";

                        }
                    }
                }
                else
                {
                    key = body.name + sit.ToString();
                    ScienceSubject sub = ResearchAndDevelopment.GetExperimentSubject(exp, sit, body, "");
                    if (sub != null)
                        tooltip += body.name + " " + sit.ToString() + " " +  sub.science.ToString("F1") + "/" + Mathf.RoundToInt(sub.scienceCap) + "\n";
                    else
                        tooltip += body.name + " " + sit.ToString() + " 0/" + Mathf.RoundToInt(exp.scienceCap) + "\n";
                }
            }
        }

        GUILayout.BeginVertical();

        GUILayout.BeginHorizontal(GUILayout.MaxHeight(18));
        GUILayout.Label(new GUIContent(experiment.experimentID + (stats != "" ? " - " + stats : ""), tooltip), styleTitle);
        if (hasData) {
            GUILayout.Label(data.title, styleTitle);
        }
        GUILayout.FlexibleSpace();
        if (GUILayout.Button((hasData ? "Reset" : "Deploy"), new GUILayoutOption[] { GUILayout.MaxHeight(18), GUILayout.ExpandWidth(false) })) {
            if (hasData) {
                experiment.ResetExperiment();
            }
            else {
                experiment.DeployExperiment();
        //				experiment.StartCoroutine((IEnumerator)miGatherData.Invoke(experiment, new object[] { false })); // KSP doesn't like window free results yet
            }
        }
        GUILayout.Space(5);
        GUILayout.EndHorizontal();

        GUILayout.EndVertical();
    }
Exemplo n.º 10
0
    void drawExperiment(ModuleScienceExperiment experiment)
    {
        var page = pages.Find(p => p.host == experiment.part);
        var data = experiment.GetData()[0];
        bool hasData = data != null;
        string stats = "";

        if (hasData) {
            var sv = simulateScience(data);
            var tsv = simulateScience(data, true);
            dataAmount += data.dataAmount;
            returnScience += sv;
            transmitScience += tsv;
            stats = string.Format("( {0:F1} / {1:F1} )", sv, tsv);

            if (page != null) {
                var sub = ResearchAndDevelopment.GetSubjectByID(data.subjectID);
                if (sub.science < sub.scienceCap) {
                    page.OnKeepData(page.pageData);
                }
                else {
                    page.OnDiscardData(page.pageData);
                }
            }
        }

        GUILayout.BeginVertical();

        GUILayout.BeginHorizontal(GUILayout.MaxHeight(18));
        GUILayout.Label(experiment.experimentID + (stats != "" ? " - " + stats : ""), styleTitle);
        if (hasData) {
            GUILayout.Label(data.title, styleTitle);
        }
        GUILayout.FlexibleSpace();
        if (GUILayout.Button((hasData ? "Reset" : "Deploy"), new GUILayoutOption[] { GUILayout.MaxHeight(18), GUILayout.ExpandWidth(false) })) {
            if (hasData) {
                experiment.ResetExperiment();
            }
            else {
                experiment.DeployExperiment();
        //				experiment.StartCoroutine((IEnumerator)miGatherData.Invoke(experiment, new object[] { false })); // KSP doesn't like window free results yet
            }
        }
        GUILayout.Space(5);
        GUILayout.EndHorizontal();

        GUILayout.EndVertical();
    }
Exemplo n.º 11
0
 public void resetExperiment(ModuleScienceExperiment exp)
 {
     exp.ResetExperiment();
 }