示例#1
0
        private void SOIChange(GameEvents.HostedFromToAction <Vessel, CelestialBody> VB)
        {
            if (VB.host == null)
            {
                return;
            }

            if (!VB.host.loaded)
            {
                return;
            }

            if (VB.host != vessel)
            {
                return;
            }

            values = null;
        }
        private void getScienceData(bool sensorOnly, bool asteroid, bool silent)
        {
            ScienceData data = null;

            if (asteroid)
            {
                DMSeismicHammer hammer = vessel.FindPartModulesImplementing <DMSeismicHammer>().FirstOrDefault();

                if (hammer == null)
                {
                    data = DMSeismicHandler.makeData(values, values.Score, exp, experimentID, sensorOnly, asteroid);
                }
                else
                {
                    hammer.DeployExperiment();
                    return;
                }
            }
            else
            {
                DMSeismometerValues v = values.getBestHammer();
                data = DMSeismicHandler.makeData(v, v.Score, exp, experimentID, sensorOnly, asteroid);
            }

            if (data == null)
            {
                return;
            }

            GameEvents.OnExperimentDeployed.Fire(data);

            scienceReports.Add(data);
            Deployed = true;
            if (!silent)
            {
                ReviewData();
            }
        }
        private void Update()
        {
            base.EventsCheck();

            if (!HighLogic.LoadedSceneIsFlight)
            {
                return;
            }

            if (values == null)
            {
                values = DMSeismicHandler.Instance.getSeismicSensor(part.flightID);
                if (values != null)
                {
                    values.OnAsteroid = DMAsteroidScience.AsteroidGrappled;
                }
                return;
            }

            bool valid = vessel.Landed || values.OnAsteroid;

            if (valid)
            {
                scoreString = values.Score.ToString("P0");
            }
            else
            {
                scoreString = "Not Valid";
            }

            if (values.Armed && values.NearbySensorCount >= 1)
            {
                setEmissive(signalLightOne, greenLight);
            }
            else
            {
                setEmissive(signalLightOne, offColor);
            }

            if (!values.Armed || !valid)
            {
                setEmissive(scoreLightOne, offColor);
                setEmissive(scoreLightTwo, offColor);
                setEmissive(scoreLightThree, offColor);
                setEmissive(scoreLightFour, offColor);
                setEmissive(scoreLightFive, offColor);
            }
            else if (values.Score < 0.21f)
            {
                setEmissive(scoreLightOne, redLight);
                setEmissive(scoreLightTwo, offColor);
                setEmissive(scoreLightThree, offColor);
                setEmissive(scoreLightFour, offColor);
                setEmissive(scoreLightFive, offColor);
            }
            else if (values.Score < 0.56f)
            {
                setEmissive(scoreLightOne, redLight);
                setEmissive(scoreLightTwo, yellowLight);
                setEmissive(scoreLightThree, offColor);
                setEmissive(scoreLightFour, offColor);
                setEmissive(scoreLightFive, offColor);
            }
            else if (values.Score < 0.71f)
            {
                setEmissive(scoreLightOne, redLight);
                setEmissive(scoreLightTwo, yellowLight);
                setEmissive(scoreLightThree, yellowLight);
                setEmissive(scoreLightFour, offColor);
                setEmissive(scoreLightFive, offColor);
            }
            else if (values.Score < 0.86f)
            {
                setEmissive(scoreLightOne, redLight);
                setEmissive(scoreLightTwo, yellowLight);
                setEmissive(scoreLightThree, yellowLight);
                setEmissive(scoreLightFour, greenLight);
                setEmissive(scoreLightFive, offColor);
            }
            else
            {
                setEmissive(scoreLightOne, redLight);
                setEmissive(scoreLightTwo, yellowLight);
                setEmissive(scoreLightThree, yellowLight);
                setEmissive(scoreLightFour, greenLight);
                setEmissive(scoreLightFive, greenLight);
            }
        }