Example #1
0
        private void monitorAnomScience(CelestialBody B, string s, string name)
        {
            if (FlightGlobals.currentMainBody == B)
            {
                if (s == scienceContainer.exp.id)
                {
                    DMAnomalyList.updateAnomaly(FlightGlobals.ActiveVessel, city);
                    DMUtils.Logging("Distance To Anomaly: {0} ; Altitude Above Anomaly: {1} ; Horizontal Distance To Anomaly: {2}", city.Vdistance, city.Vheight, city.Vhorizontal);

                    //Draw a cone above the anomaly position up to 100km with a diameter of 60km at its widest
                    if (city.Vdistance < 100000)
                    {
                        if (situation == ExperimentSituations.FlyingLow || situation == ExperimentSituations.InSpaceLow || situation == ExperimentSituations.FlyingHigh)
                        {
                            if (city.Vheight > 625 && city.Vheight < 100000)
                            {
                                double vHeight = city.Vheight;
                                if (vHeight > 50000)
                                {
                                    vHeight = 50000;
                                }
                                if (city.Vhorizontal < (60000 * (city.Vheight / 50000)))
                                {
                                    ScreenMessages.PostScreenMessage("Results From Anomalous Signal Recovered", 6f, ScreenMessageStyle.UPPER_CENTER);
                                    collected = true;
                                }
                                else
                                {
                                    ScreenMessages.PostScreenMessage("Anomalous signal too weak, try again when closer", 6f, ScreenMessageStyle.UPPER_CENTER);
                                }
                            }
                            else if (city.Vheight < 625)
                            {
                                if (city.Vhorizontal < 750)
                                {
                                    ScreenMessages.PostScreenMessage("Results From Anomalous Signal Recovered", 6f, ScreenMessageStyle.UPPER_CENTER);
                                    collected = true;
                                }
                                else
                                {
                                    ScreenMessages.PostScreenMessage("Anomalous signal too weak, try again when closer", 6f, ScreenMessageStyle.UPPER_CENTER);
                                }
                            }
                        }
                        else if (situation == ExperimentSituations.SrfLanded)
                        {
                            if (city.Vhorizontal < 500)
                            {
                                ScreenMessages.PostScreenMessage("Results From Anomalous Signal Recovered", 6f, ScreenMessageStyle.UPPER_CENTER);
                                collected = true;
                            }
                            else
                            {
                                ScreenMessages.PostScreenMessage("Anomalous signal too weak, try again when closer", 6f, ScreenMessageStyle.UPPER_CENTER);
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        public override void OnLoad(ConfigNode node)
        {
            if (DMagicVersion != DMUtils.version)
            {
                DMUtils.DebugLog("[DM] New DMagic Version Detected; Resetting Contracts");
                DMagicVersion   = DMUtils.version;
                contractsReload = true;
            }
            else
            {
                contractsReload = false;
            }

            DMUtils.DebugLog("Loading Science Scenario");
            recoveredScienceList.Clear();
            ConfigNode results_node = node.GetNode("Asteroid_Science");

            if (results_node != null)
            {
                foreach (ConfigNode scienceResults_node in results_node.GetNodes("DM_Science"))
                {
                    string title = scienceResults_node.GetValue("title");
                    float  bsv   = float.Parse(scienceResults_node.GetValue("bsv"));
                    float  scv   = float.Parse(scienceResults_node.GetValue("scv"));
                    float  sci   = float.Parse(scienceResults_node.GetValue("sci"));
                    float  cap   = float.Parse(scienceResults_node.GetValue("cap"));
                    RecordNewScience(title, bsv, scv, sci, cap);
                }
            }
            if (HighLogic.LoadedScene == GameScenes.SPACECENTER || HighLogic.LoadedScene == GameScenes.TRACKSTATION)
            {
                recoveryWatcher = gameObject.AddComponent <DMRecoveryWatcher>();
            }
            if (HighLogic.LoadedSceneIsFlight)
            {
                tranWatcher = gameObject.AddComponent <DMTransmissionWatcher>();
                anomalyList = gameObject.AddComponent <DMAnomalyList>();
                updateRemainingData();
            }
        }