Exemplo n.º 1
0
        private void SetFinalName(FlightGlobals.SpeedDisplayModes mode)
        {
            switch (mode)
            {
            case FlightGlobals.SpeedDisplayModes.Surface:
                if (FlightGlobals.ActiveVessel.vesselType == VesselType.EVA)
                {
                    FinalName = CutKerbalName(Surf3 + (settings.radar ? RadarAltitudeEVA_str() : ""), FlightGlobals.ActiveVessel);
                }

                else if (FlightGlobals.ActiveVessel.vesselType == VesselType.Flag)
                {
                    FinalName = CutName(Surf3, FlightGlobals.ActiveVessel.GetDisplayName());
                }
                break;

            case FlightGlobals.SpeedDisplayModes.Orbit:
                if (FlightGlobals.ActiveVessel.vesselType == VesselType.EVA && settings2.orbit_EVA)
                {
                    FinalName = CutKerbalName(settings2.orbit_time ? "" : Orb, FlightGlobals.ActiveVessel, false);
                }
                break;

            case FlightGlobals.SpeedDisplayModes.Target:
                Target = null;
                break;
            }
        }
Exemplo n.º 2
0
 // Detect navball context (orbit/surface/target) changes
 private void onSetSpeedMode(FlightGlobals.SpeedDisplayModes mode)
 {
     if (FlightGlobals.ActiveVessel.vesselModules.OfType <VesselModuleRotation>().Count() > 0)
     {
         FlightGlobals.ActiveVessel.vesselModules.OfType <VesselModuleRotation>().First().autopilotContextCurrent = (int)mode;
     }
 }
Exemplo n.º 3
0
 // Detect navball context (orbit/surface/target) changes
 private void onSetSpeedMode(FlightGlobals.SpeedDisplayModes mode)
 {
     foreach (VesselModule vm in FlightGlobals.ActiveVessel.vesselModules)
     {
         VesselModuleRotationRO vmr = vm as VesselModuleRotationRO;
         if (vmr != null)
         {
             vmr.autopilotContextCurrent = (int)mode;
             break;
         }
     }
 }
Exemplo n.º 4
0
        public static Services.SpeedMode ToSpeedMode(this FlightGlobals.SpeedDisplayModes mode)
        {
            switch (mode)
            {
            case FlightGlobals.SpeedDisplayModes.Orbit:
                return(Services.SpeedMode.Orbit);

            case FlightGlobals.SpeedDisplayModes.Surface:
                return(Services.SpeedMode.Surface);

            case FlightGlobals.SpeedDisplayModes.Target:
                return(Services.SpeedMode.Target);

            default:
                throw new ArgumentOutOfRangeException("mode");
            }
        }
Exemplo n.º 5
0
        public void SetGUITextMode()
        {
            switch (LHFlightData.lhGUImodeStatic)
            {
            case 1:
            {
                tumblerASLtext.text = "";
                break;
            }

            case 2:
            {
                if (FlightGlobals.speedDisplayMode == FlightGlobals.SpeedDisplayModes.Surface)         //only override if in surface mode
                {
                    tumblerASLtext.text = "AGL";
                }
                else
                {
                    tumblerASLtext.text = "ASL";
                }

                tumblerASLtext.color = Color.green;
                break;
            }

            case 3:
            {
                tumblerASLtext.text  = "ASL";
                tumblerASLtext.color = Color.red;
                break;
            }

            case 4:
            {
                tumblerASLtext.text  = "AGL";
                tumblerASLtext.color = Color.red;
                break;
            }
            }
            if (tumblerASLtext.text != "")
            {
                tumblerASLtext.text = "<b>" + tumblerASLtext.text + "</b>";
            }

            spdDisp = FlightGlobals.speedDisplayMode;
        }
Exemplo n.º 6
0
        public void LateUpdate()
        {
            if (display != null)
            {
                FlightGlobals.SpeedDisplayModes mode = FlightGlobals.speedDisplayMode;


                switch (mode)
                {
                case FlightGlobals.SpeedDisplayModes.Surface:
                {
                    Vessel.Situations situation  = FlightGlobals.ActiveVessel.situation;
                    VesselType        vesselType = FlightGlobals.ActiveVessel.vesselType;

                    double spd = FlightGlobals.ActiveVessel.srfSpeed;
                    string titleText;

                    //VesselType.Base;          //Situations.LANDED
                    //VesselType.Debris         //Situations.SPLASHED
                    //VesselType.EVA            //Situations.PRELAUNCH
                    //VesselType.Flag           //Situations.FLYING
                    //VesselType.Lander         //Situations.SUB_ORBITAL
                    //VesselType.Plane;         //Situations.ORBITING
                    //VesselType.Probe          //Situations.ESCAPING
                    //VesselType.Relay          //Situations.DOCKED
                    //VesselType.Rover
                    //VesselType.Ship
                    //VesselType.SpaceObject
                    //VesselType.Station
                    //VesselType.Unknown

                    switch (vesselType)
                    {
                    case VesselType.Plane:
                    case VesselType.Rover:
                    {
                        // Boat or Submarine
                        if (situation == Vessel.Situations.SPLASHED)
                        {
                            bool isradar = HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_radar;

                            if (FlightGlobals.ActiveVessel.altitude < -20 && isradar)                 // Submarine
                            {
                                titleText = Surf3 + Unitize_short(FlightGlobals.ActiveVessel.altitude - FlightGlobals.ActiveVessel.terrainAltitude) + "  " + (spd * kn_ms).ToString("F1") + kn;
                            }
                            else                                                                       // Boat
                            {
                                titleText = Surf5 + (spd * kn_ms).ToString("F1") + knots;
                            }
                        }
                        // Plane (not LANDED)
                        else if (vesselType == VesselType.Plane &&
                                 situation != Vessel.Situations.LANDED && situation != Vessel.Situations.PRELAUNCH)
                        {
                            bool isradar = HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_radar;
                            bool ismach  = HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_mach;
                            bool isATM   = FlightGlobals.ActiveVessel.atmDensity > 0.0;

                            if (isradar)
                            {
                                if (ismach)
                                {
                                    if (isATM)
                                    {
                                        titleText = Surf3 + Unitize_short(FlightGlobals.ActiveVessel.radarAltitude) + "  "
                                                    + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                    }

                                    else
                                    {
                                        titleText = Surf5 + Unitize_long(FlightGlobals.ActiveVessel.radarAltitude);
                                    }
                                }
                                else
                                {
                                    titleText = Surf3 + Unitize_short(FlightGlobals.ActiveVessel.radarAltitude) + "  "
                                                + (spd * kn_ms).ToString("F1") + kn;
                                }
                            }
                            else
                            {
                                if (ismach)
                                {
                                    if (isATM)
                                    {
                                        titleText = Surf5 + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                    }
                                    else
                                    {
                                        titleText = Surface;
                                    }
                                }
                                else
                                {
                                    titleText = Surf5 + (spd * kn_ms).ToString("F1") + knots;
                                }
                            }
                        }
                        // Rover (and LANDED Plane)  // and rover-carrier if ksp detect them as rover
                        // All mistake at ksp detecting vessel type can be fixed by some additional checking (ex. altitude for rover-carrier)
                        // but it make unclear to user, which values is showed up.
                        else                 //if FlightGlobals.ActiveVessel.radarAltitude < 100)
                        {
                            if (HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_kmph)
                            {
                                titleText = Surf5 + (spd * kmph_ms).ToString("F1") + kmph;
                            }
                            else
                            {
                                titleText = Surf5 + (spd * mph_ms).ToString("F1") + mph;
                            }
                        }
                    }
                    break;

                    case VesselType.EVA:
                    {
                        if (HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_radar)
                        {
                            double alt;

                            if (situation == Vessel.Situations.SPLASHED)
                            {
                                alt = FlightGlobals.ActiveVessel.radarAltitude + 0.2;
                            }
                            else
                            {
                                alt = FlightGlobals.ActiveVessel.radarAltitude - 0.2;
                            }

                            titleText = Surf3 + Unitize_short(alt) + " " + FlightGlobals.ActiveVessel.GetDisplayName();
                        }
                        else
                        {
                            titleText = Surf3 + FlightGlobals.ActiveVessel.GetDisplayName();
                        }

                        if (titleText.Length > 17)
                        {
                            titleText = titleText.Substring(0, 16) + "...";
                        }
                    }
                    break;

                    case VesselType.Flag:
                    {
                        titleText = Surf3 + FlightGlobals.ActiveVessel.GetDisplayName();

                        if (titleText.Length > 17)
                        {
                            titleText = titleText.Substring(0, 16) + "...";
                        }
                    }
                    break;

                    // Other: Rocket, Lander, Base etc
                    default:
                    {
                        if (HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_radar)
                        {
                            titleText = Surf5 + Unitize_long(FlightGlobals.ActiveVessel.radarAltitude);
                        }
                        else
                        {
                            titleText = Surface;
                        }
                    }
                    break;
                    }

                    display.textTitle.text = titleText;
                    break;
                }

                case FlightGlobals.SpeedDisplayModes.Orbit:
                {
                    if (FlightGlobals.ActiveVessel.vesselType == VesselType.EVA &&
                        HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_orbit_EVA)
                    {
                        string titleText = Orb + FlightGlobals.ActiveVessel.GetDisplayName();

                        if (titleText.Length > 17)
                        {
                            titleText = titleText.Substring(0, 16) + "...";
                        }

                        display.textTitle.text = titleText;
                    }
                    else if (HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_orbit)
                    {
                        string ApStr = Unitize_short(FlightGlobals.ship_orbit.ApA);
                        string PeStr = Unitize_short(FlightGlobals.ship_orbit.PeA);

                        display.textTitle.text = Orb + ApStr + " " + PeStr;
                    }

                    break;
                }

                case FlightGlobals.SpeedDisplayModes.Target:
                {
                    ITargetable obj = FlightGlobals.fetch.VesselTarget;

                    // ITargetable ->  CelestialBody;
                    //                 FlightCoMTracker;
                    //                 ModuleDockingNode;
                    //                 PositionTarget;
                    //                 Vessel;

                    string text;
                    string name;

                    if (obj is ModuleDockingNode)
                    {
                        name = obj.GetVessel().GetDisplayName();
                    }
                    else
                    {
                        name = obj.GetDisplayName();
                    }

                    if (name.Length > 1 && name.Substring(name.Length - 2, 1) == "^")
                    {
                        name = name.Substring(0, name.Length - 2);
                    }

                    if (HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>().setting_targetDistance)
                    {
                        // from Docking Port Alignment Indicator
                        Transform selfTransform    = FlightGlobals.ActiveVessel.ReferenceTransform;
                        Transform targetTransform  = FlightGlobals.fetch.VesselTarget.GetTransform();
                        Vector3   targetToOwnship  = selfTransform.position - targetTransform.position;
                        float     distanceToTarget = targetToOwnship.magnitude;

                        text = Trg + Unitize_short(distanceToTarget) + " " + name;
                    }
                    else
                    {
                        text = Trg + name;
                    }


                    if (text.Length <= 17)
                    {
                        display.textTitle.text = text;
                    }
                    else
                    {
                        display.textTitle.text = text.Substring(0, 16) + "...";
                    }

                    break;
                }
                }

                display.textTitle.alignment = TMPro.TextAlignmentOptions.MidlineLeft;
            }
        }
Exemplo n.º 7
0
        public void LateUpdate()
        {
            if (display == null)
            {
                return;
            }
            if (FlightGlobals.ActiveVessel == null)
            {
                return;
            }
            if (settings == null)
            {
                settings = HighLogic.CurrentGame.Parameters.CustomParams <SpeedUnitAnnexSettings>();
            }

            //Log("{0:F1}, {1:F1}={2:F1}, {3:F1}, {4:F1}={5:F1}",
            //    FlightGlobals.ActiveVessel.heightFromTerrain == FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude,
            //    FlightGlobals.ActiveVessel.heightFromTerrain, FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude,
            //    FlightGlobals.ship_altitude == FlightGlobals.ActiveVessel.altitude, FlightGlobals.ship_altitude, FlightGlobals.ActiveVessel.altitude);

            FlightGlobals.SpeedDisplayModes mode = FlightGlobals.speedDisplayMode;

            #region all VesselTypes and Situations
            //VesselType.Base;          //Situations.LANDED
            //VesselType.Debris         //Situations.SPLASHED
            //VesselType.EVA            //Situations.PRELAUNCH
            //VesselType.Flag           //Situations.FLYING
            //VesselType.Lander         //Situations.SUB_ORBITAL
            //VesselType.Plane;         //Situations.ORBITING
            //VesselType.Probe          //Situations.ESCAPING
            //VesselType.Relay          //Situations.DOCKED
            //VesselType.Rover
            //VesselType.Ship
            //VesselType.SpaceObject
            //VesselType.Station
            //VesselType.Unknown
            #endregion

            switch (mode)
            {
            case FlightGlobals.SpeedDisplayModes.Surface:
                string            titleText;
                Vessel.Situations situation  = FlightGlobals.ActiveVessel.situation;
                VesselType        vesselType = FlightGlobals.ActiveVessel.vesselType;

                double spd          = FlightGlobals.ship_srfSpeed;
                string srfSpeedText = spd.ToString("F1") + mps_s;

                switch (vesselType)
                {
                case VesselType.Plane:
                case VesselType.Rover:
                    // Boat or Submarine
                    if (situation == Vessel.Situations.SPLASHED)
                    {
                        // Submarine
                        if (FlightGlobals.ActiveVessel.altitude < BoatSubmarineBorderAlt && settings.radar)
                        {
                            titleText = Surf3 + Formatter.Distance_short(AGL())
                                        + "  " + (spd * knTOms).ToString("F1") + kn_s;
                        }
                        // Boat
                        else
                        {
                            titleText = Surf5 + (spd * knTOms).ToString("F1") + knots_s;
                        }
                    }
                    // Plane (not LANDED)
                    else if (vesselType == VesselType.Plane &&
                             situation != Vessel.Situations.LANDED && situation != Vessel.Situations.PRELAUNCH)
                    {
                        bool isATM = FlightGlobals.ActiveVessel.atmDensity > 0.0;
                        //double speedIAS = FlightGlobals.ActiveVessel.indicatedAirSpeed;

                        if (settings.radar)
                        {
                            double radar = FlightGlobals.ActiveVessel.radarAltitude;

                            if (settings.aircraft == MachNum)
                            {
                                if (isATM)
                                {
                                    titleText = Surf3 + Formatter.Distance_short(radar) + "  "
                                                + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                }

                                else
                                {
                                    titleText = Surf5 + Formatter.Distance_long(radar);
                                }
                            }
                            else if (settings.aircraft == knots)
                            {
                                titleText = Surf3 + Formatter.Distance_short(radar) + "  "
                                            + (spd * knTOms).ToString("F1") + kn_s;
                            }
                            else if (settings.aircraft == kmph)
                            {
                                titleText = Surf3 + Formatter.Distance_short(radar) + " "
                                            + (spd * kmphTOms).ToString("F1") + kmph_s;
                            }
                            else         // settings.aircraft == mph
                            {
                                titleText = Surf3 + Formatter.Distance_short(radar) + " "
                                            + (spd * mphTOms).ToString("F1") + mph_s;
                            }
                        }
                        else
                        {
                            if (settings.aircraft == MachNum)
                            {
                                if (isATM)
                                {
                                    titleText = Surf5 + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                }
                                else
                                {
                                    titleText = Surf_full;
                                }
                            }
                            else if (settings.aircraft == knots)
                            {
                                titleText = Surf5 + (spd * knTOms).ToString("F1") + knots_s;
                            }
                            else if (settings.aircraft == kmph)
                            {
                                titleText = Surf5 + (spd * kmphTOms).ToString("F1") + kmph_s;
                            }
                            else         // settings.aircraft == mph
                            {
                                titleText = Surf5 + (spd * mphTOms).ToString("F1") + mph_s;
                            }
                        }

                        if (settings.ias)
                        {
                            double speedIAS = 0;

                            if (isLoadedFAR)
                            {
                                speedIAS = FAR_ActiveVesselIAS();
                            }
                            else
                            {
                                speedIAS = FlightGlobals.ActiveVessel.indicatedAirSpeed;
                            }

                            if (speedIAS > 0)
                            {
                                srfSpeedText += " " + speedIAS.ToString("F1");
                            }
                        }
                    }
                    // Rover (and LANDED Plane)  // and rover-carrier if ksp detect them as rover
                    else
                    {
                        if (settings.rover == kmph)
                        {
                            titleText = Surf5 + (spd * kmphTOms).ToString("F1") + kmph_s;
                        }
                        else         // settings.rover == mph
                        {
                            titleText = Surf5 + (spd * mphTOms).ToString("F1") + mph_s;
                        }
                    }

                    // All mistake at ksp detecting vessel type can be fixed by
                    // some additional checking (ex. altitude for rover-carrier)
                    // but it make unclear to user, which values is showed up.
                    break;

                case VesselType.EVA:
                    titleText = Surf3 + (settings.radar ? RadarAltitudeEVA_str() : "") + FinalName;
                    break;

                case VesselType.Flag:
                    titleText = Surf3 + FinalName;
                    break;

                // Other: Rocket, Lander, Base etc
                default:

                    if (settings.radar)
                    {
                        titleText = Surf5 + Formatter.Distance_long(RadarAltitude());
                    }
                    else
                    {
                        titleText = Surf_full;
                    }
                    break;
                }

                display.textTitle.text = titleText;
                display.textSpeed.text = srfSpeedText;

                break;

            case FlightGlobals.SpeedDisplayModes.Orbit:

                if (FlightGlobals.ActiveVessel.vesselType == VesselType.EVA &&
                    settings2.orbit_EVA)
                {
                    display.textTitle.text = (settings2.orbit_ApPe && settings2.orbit_time ? "" : Orb) + FinalName;
                }
                else if (settings2.orbit_ApPe || settings2.orbit_time)
                {
                    double SOI_MASL = FlightGlobals.getMainBody().sphereOfInfluence - FlightGlobals.getMainBody().Radius;
                    bool   Ap_ok    = FlightGlobals.getMainBody().atmosphereDepth < FlightGlobals.ship_orbit.ApA && FlightGlobals.ship_orbit.ApA < SOI_MASL;
                    bool   Pe_ok    = FlightGlobals.getMainBody().atmosphereDepth < FlightGlobals.ship_orbit.PeA && FlightGlobals.ship_orbit.PeA < SOI_MASL;


                    if (settings2.orbit_ApPe)
                    {
                        string Ap      = Formatter.Distance_k(FlightGlobals.ship_orbit.ApA);
                        string Pe      = Formatter.Distance_k(FlightGlobals.ship_orbit.PeA);
                        string Apsises = String.Format("<color={0}>{1}</color> <color={2}>{3}</color>",
                                                       Ap_ok ? "#00ff00ff" : "#00ff009f", Ap,
                                                       Pe_ok ? "#00ff00ff" : "#00ff009f", Pe);

                        string TimeApsis;
                        bool   Apsis_ok;

                        if (settings2.orbit_time)
                        {
                            if (FlightGlobals.ship_orbit.timeToAp < FlightGlobals.ship_orbit.timeToPe)
                            {
                                Apsis_ok  = Ap_ok;
                                TimeApsis = Formatter.Time(FlightGlobals.ship_orbit.timeToAp, A_prefix);
                            }
                            else
                            {
                                Apsis_ok  = Pe_ok;
                                TimeApsis = Formatter.Time(FlightGlobals.ship_orbit.timeToPe, P_prefix);
                            }
                            display.textTitle.text = String.Format("{0} <color={1}>{2}</color>",
                                                                   Apsises, Apsis_ok ? "#ffffffff" : "#ffffff9f", TimeApsis);
                        }
                        else
                        {
                            display.textTitle.text = Orb + Apsises;
                        }
                    }
                    else if (settings2.orbit_time)
                    {
                        string TimeApsis;
                        bool   Apsis_ok;

                        if (FlightGlobals.ship_orbit.timeToAp < FlightGlobals.ship_orbit.timeToPe)
                        {
                            Apsis_ok  = Ap_ok;
                            TimeApsis = Formatter.TimeLong(FlightGlobals.ship_orbit.timeToAp, ApT_prefix);
                        }
                        else
                        {
                            Apsis_ok  = Pe_ok;
                            TimeApsis = Formatter.TimeLong(FlightGlobals.ship_orbit.timeToPe, PeT_prefix);
                        }
                        display.textTitle.text = String.Format("<color={0}>{1}</color>",
                                                               Apsis_ok ? "#00ff00ff" : "#00ff009f", TimeApsis);
                    }
                }

                else
                {
                    display.textTitle.text = Orb_full;
                }

                display.textSpeed.text = FlightGlobals.ship_obtSpeed.ToString("F1") + mps_s;
                break;

            case FlightGlobals.SpeedDisplayModes.Target:

                #region all Target
                // 1.6.0
                // ITargetable:
                //  * CelestialBody
                //  * FlightCoMTracker
                //  * ModuleDockingNode
                //  * PositionTarget:
                //    * DirectionTarget
                //  * Vessel
                #endregion

                ITargetable obj = FlightGlobals.fetch.VesselTarget;

                if (obj == null)
                {
                    display.textTitle.text = NoTrg;
                    return;
                }

                bool isMDN = obj is ModuleDockingNode;


                if (settings2.targetAngles && isMDN)
                {
                    Vector3 angles = GetOrientationDeviation(obj);

                    if (settings2.targetInteger)
                    {
                        display.textTitle.text = Trg +
                                                 Formatter.Angle(angles.x, true, 5) +
                                                 Formatter.Angle(angles.y, true, 5) +
                                                 Formatter.Angle(angles.z, true, 5);
                    }
                    else
                    {
                        display.textTitle.text = Formatter.Angle(angles.x) + Formatter.Angle(angles.y) + Formatter.Angle(angles.z);
                    }
                }
                else
                {
                    string TargetAngle      = "";
                    string distanceToTarget = "";

                    if (settings2.targetAngle && isMDN)
                    {
                        Vector3 angles = GetOrientationDeviation(obj);
                        if (settings2.targetInteger)
                        {
                            TargetAngle = Formatter.Angle(angles.z, true, 5);
                        }
                        else
                        {
                            TargetAngle = Formatter.Angle(angles.z);
                        }
                    }

                    if (settings2.targetDistance)
                    {
                        distanceToTarget = CalcTargetDistance(obj);
                    }

                    bool isAngleAndDistance = settings2.targetDistance && settings2.targetAngle && isMDN;

                    if (settings2.targetName && !isAngleAndDistance)
                    {
                        if (Target != obj)
                        {
                            TargetName = CutName(Trg + distanceToTarget + TargetAngle, GetTargetName(obj));
                            Target     = obj;
                        }
                        display.textTitle.text = Trg + distanceToTarget + TargetName + TargetAngle;
                    }
                    else
                    {
                        display.textTitle.text = Trg + distanceToTarget + " " + TargetAngle;    // 2 spaces
                    }
                }

                if (FlightGlobals.ship_tgtSpeed < 0.195)
                {
                    display.textSpeed.text = FlightGlobals.ship_tgtSpeed.ToString("F2") + mps_s;
                }
                else
                {
                    display.textSpeed.text = FlightGlobals.ship_tgtSpeed.ToString("F1") + mps_s;
                }
                break;
            }

            // need to be there, for every tick. Doesn't work in the  Start() or onSetSpeedMode()
            display.textTitle.alignment = TMPro.TextAlignmentOptions.MidlineLeft;
        }
Exemplo n.º 8
0
 void OnSetSpeedMode(FlightGlobals.SpeedDisplayModes mode)
 {
     //Log("onSetSpeedMode: " + mode.displayDescription());
     SetFinalName(mode);
 }
Exemplo n.º 9
0
        private void UpdateAltitudeValue(FlightGlobals.SpeedDisplayModes speedDisplayMode)
        {
            double realAltitude = FlightGlobals.ActiveVessel.terrainAltitude > 0 ? FlightGlobals.ActiveVessel.altitude - FlightGlobals.ActiveVessel.terrainAltitude : FlightGlobals.ActiveVessel.altitude;

            display.textTitle.overflowMode = TMPro.TextOverflowModes.Overflow;
            switch (speedDisplayMode)
            {
            case FlightGlobals.SpeedDisplayModes.Surface:
                display.textTitle.enableWordWrapping = false;
                switch (currentAltitudeIndication)
                {
                case METERS:
                    altitude = realAltitude;
                    if (altitude > THRESHOLD_TO_AUTO_CHANGE_M)
                    {
                        altitude    /= 1000000;
                        altitudeText = altitude.ToString("0.000") + " Mm";
                    }
                    else if (altitude > THRESHOLD_TO_AUTO_CHANGE_K)
                    {
                        altitude    /= 1000;
                        altitudeText = altitude.ToString("0.000") + " km";
                    }
                    else
                    {
                        altitudeText = altitude.ToString("0.000") + " m";
                    }
                    break;

                case KILOMETERS:
                    altitude = realAltitude;
                    if (altitude > THRESHOLD_TO_AUTO_CHANGE_M)
                    {
                        altitude    /= 1000000;
                        altitudeText = altitude.ToString("0.000") + " Mm";
                    }
                    else
                    {
                        altitude    /= 1000;
                        altitudeText = altitude.ToString("0.000") + " km";
                    }
                    break;

                case MILES:
                    altitude     = realAltitude / 1609.344;
                    altitudeText = altitude.ToString("0.000") + " mi";
                    break;

                case NAUTICAL_MILES:
                    altitude     = realAltitude / 1852;
                    altitudeText = altitude.ToString("0.000") + " nmi";
                    break;

                case FEET:
                    altitude     = realAltitude * 3.2808399;
                    altitudeText = altitude.ToString("0.000") + " ft";
                    break;
                }
                display.textTitle.fontSize = stockTitleFontSize;
                display.textSpeed.fontSize = stockSpeedFontSize;
                display.textTitle.text     = "AGL: " + altitudeText;
                break;

            case FlightGlobals.SpeedDisplayModes.Orbit:
                display.textTitle.enableWordWrapping = false;
                double apoapsis     = FlightGlobals.ActiveVessel.GetCurrentOrbit().ApA;
                string apoapsisUnit = "m";
                //Apoapsis: First check to avoid overflow: m to Mm
                if (apoapsis > THRESHOLD_TO_AUTO_CHANGE_M)
                {
                    apoapsis     = apoapsis / 1000000;
                    apoapsisUnit = "Mm";
                }
                //Apoapsis: Second check to avoid overflow: m to km
                else if (apoapsis > 100000)
                {
                    apoapsis     = apoapsis / 1000;
                    apoapsisUnit = "km";
                }

                StringBuilder titleDisplayText = new StringBuilder();
                titleDisplayText.Append(string.Format("Ap:{0}{1}", apoapsis.ToString("0.000"), apoapsisUnit));
                if (showSpeed)
                {
                    display.textSpeed.fontSize = stockSpeedFontSize;
                    display.textTitle.fontSize = stockTitleFontSize;
                }

                double periapsis = FlightGlobals.ActiveVessel.GetCurrentOrbit().PeA;
                if (periapsis > 0)
                {
                    string periapsisUnit = "m";
                    //Periapsis: First check to avoid overflow: m to km
                    if (periapsis > 100000)
                    {
                        periapsis     = periapsis / 1000;
                        periapsisUnit = "km";
                    }
                    //Periapsis: Second check to avoid overflow: km to Mm
                    else if (periapsis > THRESHOLD_TO_AUTO_CHANGE_M)
                    {
                        periapsis     = periapsis / 1000000;
                        periapsisUnit = "Mm";
                    }
                    if (showSpeed)
                    {
                        titleDisplayText.Append(Environment.NewLine);
                        titleDisplayText.Append(string.Format("Pe:{0}{1}", periapsis.ToString("0.000"), periapsisUnit));
                        display.textTitle.fontSize = 10;
                        display.textSpeed.fontSize = 11;
                    }
                    else
                    {
                        display.textTitle.text     = titleDisplayText.ToString();
                        display.textSpeed.fontSize = display.textTitle.fontSize;
                        display.textSpeed.text     = string.Format("Pe:{0}{1}", periapsis.ToString("0.000"), periapsisUnit);
                    }
                }
                else
                {
                    UpdateSpeedValue(FlightGlobals.speedDisplayMode, true);
                }

                display.textTitle.text = titleDisplayText.ToString();
                break;

            case FlightGlobals.SpeedDisplayModes.Target:
                string displayText = string.Format("->{0}", FlightGlobals.ActiveVessel.targetObject.GetName());
                if (displayText.Length <= 18)
                {
                    display.textTitle.text = displayText;
                }
                else
                {
                    display.textTitle.text = string.Format("{0}{1}", displayText.Substring(0, 15), "...");
                }
                display.textTitle.fontSize = stockTitleFontSize;
                display.textSpeed.fontSize = stockSpeedFontSize;
                break;
            }
        }
Exemplo n.º 10
0
        private void UpdateSpeedValue(FlightGlobals.SpeedDisplayModes speedDisplayMode, bool forceCalculate = false)
        {
            if (currentSpeedIndication != METERS_PER_SECOND && (forceCalculate || showSpeed || speedDisplayMode != FlightGlobals.SpeedDisplayModes.Orbit || speedDisplayMode == FlightGlobals.SpeedDisplayModes.Orbit && !showAltitude))
            {
                switch (currentSpeedIndication)
                {
                case KILOMETERS_PER_HOUR:
                    currentUnit = "km/h";
                    if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Surface)
                    {
                        currentSpeed = (FlightGlobals.ActiveVessel.srfSpeed * 3.6f).ToString("0.0");
                    }
                    else if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Target)
                    {
                        currentSpeed = (FlightGlobals.ship_tgtSpeed * 3.6f).ToString("0.0");
                    }
                    else
                    {
                        currentSpeed = (FlightGlobals.ship_obtSpeed * 3.6f).ToString("0.0");
                    }
                    break;

                case MILES_PER_HOUR:
                    currentUnit = "mph";
                    if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Surface)
                    {
                        currentSpeed = (FlightGlobals.ActiveVessel.srfSpeed * 2.23693629f).ToString("0.0");
                    }
                    else if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Target)
                    {
                        currentSpeed = (FlightGlobals.ship_tgtSpeed * 2.23693629f).ToString("0.0");
                    }
                    else
                    {
                        currentSpeed = (FlightGlobals.ship_obtSpeed * 2.23693629f).ToString("0.0");
                    }
                    break;

                case KNOTS:
                    currentUnit = "knots";
                    if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Surface)
                    {
                        currentSpeed = (FlightGlobals.ActiveVessel.srfSpeed * 1.94384449f).ToString("0.0");
                    }
                    else if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Target)
                    {
                        currentSpeed = (FlightGlobals.ship_tgtSpeed * 1.94384449f).ToString("0.0");
                    }
                    else
                    {
                        currentSpeed = (FlightGlobals.ship_obtSpeed * 1.94384449f).ToString("0.0");
                    }
                    break;

                case FEET_PER_SECOND:
                    currentUnit = "ft/s";
                    if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Surface)
                    {
                        currentSpeed = (FlightGlobals.ActiveVessel.srfSpeed * 3.2808399f).ToString("0.0");
                    }
                    else if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Target)
                    {
                        currentSpeed = (FlightGlobals.ship_tgtSpeed * 3.2808399f).ToString("0.0");
                    }
                    else
                    {
                        currentSpeed = (FlightGlobals.ship_obtSpeed * 3.2808399f).ToString("0.0");
                    }
                    break;

                case MACH:
                    currentUnit = "Mach";
                    if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Surface)
                    {
                        currentSpeed = (FlightGlobals.ActiveVessel.mach).ToString("0.00");
                    }
                    else if (speedDisplayMode == FlightGlobals.SpeedDisplayModes.Target)
                    {
                        currentSpeed = FlightGlobals.ship_tgtSpeed.ToString("0.0");
                        currentUnit  = "m/s";
                    }
                    else
                    {
                        currentSpeed = FlightGlobals.ship_obtSpeed.ToString("0.0");
                        currentUnit  = "m/s";
                    }
                    break;
                }

                display.textSpeed.text = currentSpeed + " " + currentUnit;
            }
        }
Exemplo n.º 11
0
 public void SetNavMode(FlightGlobals.SpeedDisplayModes navMode)
 {
     FlightGlobals.SetSpeedMode(navMode);
 }
Exemplo n.º 12
0
        public void LateUpdate()
        {
            if (display == null)
            {
                return;
            }
            if (FlightGlobals.ActiveVessel == null)
            {
                return;
            }

            FlightGlobals.SpeedDisplayModes mode = FlightGlobals.speedDisplayMode;

            #region all VesselTypes and Situations
            //VesselType.Base;          //Situations.LANDED
            //VesselType.Debris         //Situations.SPLASHED
            //VesselType.EVA            //Situations.PRELAUNCH
            //VesselType.Flag           //Situations.FLYING
            //VesselType.Lander         //Situations.SUB_ORBITAL
            //VesselType.Plane;         //Situations.ORBITING
            //VesselType.Probe          //Situations.ESCAPING
            //VesselType.Relay          //Situations.DOCKED
            //VesselType.Rover
            //VesselType.Ship
            //VesselType.SpaceObject
            //VesselType.Station
            //VesselType.Unknown
            #endregion

            switch (mode)
            {
            case FlightGlobals.SpeedDisplayModes.Surface:
                string            titleText;
                Vessel.Situations situation  = FlightGlobals.ActiveVessel.situation;
                VesselType        vesselType = FlightGlobals.ActiveVessel.vesselType;

                double spd          = FlightGlobals.ship_srfSpeed;
                string srfSpeedText = spd.ToString("F1") + mps;

                switch (vesselType)
                {
                case VesselType.Plane:
                case VesselType.Rover:
                    // Boat or Submarine
                    if (situation == Vessel.Situations.SPLASHED)
                    {
                        // Submarine
                        if (FlightGlobals.ActiveVessel.altitude < BoatSubmarineBorderAlt && settings.radar)
                        {
                            titleText = Surf3 + Formatter.Distance_short(AGL())
                                        + "  " + (spd * kn_ms).ToString("F1") + kn;
                        }
                        // Boat
                        else
                        {
                            titleText = Surf5 + (spd * kn_ms).ToString("F1") + knots;
                        }
                    }
                    // Plane (not LANDED)
                    else if (vesselType == VesselType.Plane &&
                             situation != Vessel.Situations.LANDED && situation != Vessel.Situations.PRELAUNCH)
                    {
                        bool   isATM    = FlightGlobals.ActiveVessel.atmDensity > 0.0;
                        double speedIAS = FlightGlobals.ActiveVessel.indicatedAirSpeed;

                        if (settings.radar)
                        {
                            double radar = FlightGlobals.ActiveVessel.radarAltitude;
                            if (settings.mach)
                            {
                                if (isATM)
                                {
                                    titleText = Surf3 + Formatter.Distance_short(radar) + "  "
                                                + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                }

                                else
                                {
                                    titleText = Surf5 + Formatter.Distance_long(radar);
                                }
                            }
                            else
                            {
                                titleText = Surf3 + Formatter.Distance_short(radar) + "  "
                                            + (spd * kn_ms).ToString("F1") + kn;
                            }
                        }
                        else
                        {
                            if (settings.mach)
                            {
                                if (isATM)
                                {
                                    titleText = Surf5 + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                }
                                else
                                {
                                    titleText = Surface;
                                }
                            }
                            else
                            {
                                titleText = Surf5 + (spd * kn_ms).ToString("F1") + knots;
                            }
                        }

                        if (settings.ias && speedIAS > 0)
                        {
                            srfSpeedText += " " + speedIAS.ToString("F1");
                        }
                    }
                    // Rover (and LANDED Plane)  // and rover-carrier if ksp detect them as rover
                    else
                    {
                        if (settings.kmph)
                        {
                            titleText = Surf5 + (spd * kmph_ms).ToString("F1") + kmph;
                        }
                        else
                        {
                            titleText = Surf5 + (spd * mph_ms).ToString("F1") + mph;
                        }
                    }

                    // All mistake at ksp detecting vessel type can be fixed by
                    // some additional checking (ex. altitude for rover-carrier)
                    // but it make unclear to user, which values is showed up.
                    break;

                case VesselType.EVA:
                    titleText = Surf3 + (settings.radar?RadarAltitudeEVA_str():"") + FinalName;
                    break;

                case VesselType.Flag:
                    titleText = Surf3 + FinalName;
                    break;

                // Other: Rocket, Lander, Base etc
                default:

                    if (settings.radar)
                    {
                        titleText = Surf5 + Formatter.Distance_long(RadarAltitude());
                    }
                    else
                    {
                        titleText = Surface;
                    }
                    break;
                }

                display.textTitle.text = titleText;
                display.textSpeed.text = srfSpeedText;

                break;

            case FlightGlobals.SpeedDisplayModes.Orbit:

                if (FlightGlobals.ActiveVessel.vesselType == VesselType.EVA &&
                    settings.orbit_EVA)
                {
                    display.textTitle.text = (settings.orbit_time ? "" : Orb) + FinalName;
                }
                else
                {
                    double SOI_MASL = FlightGlobals.getMainBody().sphereOfInfluence - FlightGlobals.getMainBody().Radius;
                    bool   Ap_ok    = FlightGlobals.getMainBody().atmosphereDepth < FlightGlobals.ship_orbit.ApA && FlightGlobals.ship_orbit.ApA < SOI_MASL;
                    bool   Pe_ok    = FlightGlobals.getMainBody().atmosphereDepth < FlightGlobals.ship_orbit.PeA && FlightGlobals.ship_orbit.PeA < SOI_MASL;
                    string Ap       = Formatter.Distance_k(FlightGlobals.ship_orbit.ApA);
                    string Pe       = Formatter.Distance_k(FlightGlobals.ship_orbit.PeA);
                    string Apsises  = String.Format("<color={0}>{1}</color> <color={2}>{3}</color>",
                                                    Ap_ok ? "#00ff00ff" : "#00ff009f", Ap,
                                                    Pe_ok ? "#00ff00ff" : "#00ff009f", Pe);

                    if (settings.orbit_time)
                    {
                        string TimeApsis;
                        bool   Apsis_ok;

                        if (FlightGlobals.ship_orbit.timeToAp < FlightGlobals.ship_orbit.timeToPe)
                        {
                            Apsis_ok  = Ap_ok;
                            TimeApsis = Formatter.Time(FlightGlobals.ship_orbit.timeToAp, Ap_pre);
                        }
                        else
                        {
                            Apsis_ok  = Pe_ok;
                            TimeApsis = Formatter.Time(FlightGlobals.ship_orbit.timeToPe, Pe_pre);
                        }

                        display.textTitle.text = String.Format("{0} <color={1}>{2}</color>",
                                                               Apsises, Apsis_ok ? "#ffffffff" : "#ffffff9f", TimeApsis);
                    }
                    else
                    {
                        display.textTitle.text = Orb + Apsises;
                    }
                }

                display.textSpeed.text = FlightGlobals.ship_obtSpeed.ToString("F1") + mps;
                break;

            case FlightGlobals.SpeedDisplayModes.Target:

                #region all Target
                // 1.5.1
                // ITargetable ->  CelestialBody;
                //                 FlightCoMTracker;
                //                 ModuleDockingNode;
                //                 PositionTarget;
                //                 Vessel;
                #endregion

                ITargetable obj = FlightGlobals.fetch.VesselTarget;
                if (obj == null)
                {
                    display.textTitle.text = NoTrg;
                    return;
                }

                string distanceToTarget = "";

                if (settings.targetDistance)
                {
                    distanceToTarget = CalcTargetDistance(obj);
                }


                if (Target != obj)
                {
                    TargetName = CutName(Trg + distanceToTarget, GetTargetName(obj));
                    Target     = obj;
                }

                display.textTitle.text = Trg + distanceToTarget + TargetName;


                if (FlightGlobals.ship_tgtSpeed < 0.195)
                {
                    display.textSpeed.text = FlightGlobals.ship_tgtSpeed.ToString("F2") + mps;
                }
                else
                {
                    display.textSpeed.text = FlightGlobals.ship_tgtSpeed.ToString("F1") + mps;
                }
                break;
            }

            // need to be there, for every tick. Doesn't work in the  Start() or onSetSpeedMode()
            display.textTitle.alignment = TMPro.TextAlignmentOptions.MidlineLeft;
        }
Exemplo n.º 13
0
        public void LateUpdate()
        {
            if (display != null)
            {
                FlightGlobals.SpeedDisplayModes mode = FlightGlobals.speedDisplayMode;

                switch (mode)
                {
                case FlightGlobals.SpeedDisplayModes.Surface:
                    Vessel.Situations situation  = FlightGlobals.ActiveVessel.situation;
                    VesselType        vesselType = FlightGlobals.ActiveVessel.vesselType;

                    double spd       = FlightGlobals.ship_srfSpeed;
                    string speedText = spd.ToString("F1") + mps;



                    #region all VesselTypes and Situations
                    //VesselType.Base;          //Situations.LANDED
                    //VesselType.Debris         //Situations.SPLASHED
                    //VesselType.EVA            //Situations.PRELAUNCH
                    //VesselType.Flag           //Situations.FLYING
                    //VesselType.Lander         //Situations.SUB_ORBITAL
                    //VesselType.Plane;         //Situations.ORBITING
                    //VesselType.Probe          //Situations.ESCAPING
                    //VesselType.Relay          //Situations.DOCKED
                    //VesselType.Rover
                    //VesselType.Ship
                    //VesselType.SpaceObject
                    //VesselType.Station
                    //VesselType.Unknown
                    #endregion

                    switch (vesselType)
                    {
                    case VesselType.Plane:
                    case VesselType.Rover:
                        // Boat or Submarine
                        if (situation == Vessel.Situations.SPLASHED)
                        {
                            if (FlightGlobals.ActiveVessel.altitude < -20 && settings.radar)         // Submarine
                            {
                                titleText = Surf3 + Formatter.Distance_short(FlightGlobals.ActiveVessel.altitude - FlightGlobals.ActiveVessel.terrainAltitude)
                                            + "  " + (spd * kn_ms).ToString("F1") + kn;
                            }
                            else                                                               // Boat
                            {
                                titleText = Surf5 + (spd * kn_ms).ToString("F1") + knots;
                            }
                        }
                        // Plane (not LANDED)
                        else if (vesselType == VesselType.Plane &&
                                 situation != Vessel.Situations.LANDED && situation != Vessel.Situations.PRELAUNCH)
                        {
                            bool   isATM    = FlightGlobals.ActiveVessel.atmDensity > 0.0;
                            double speedIAS = FlightGlobals.ActiveVessel.indicatedAirSpeed;

                            if (settings.radar)
                            {
                                if (settings.mach)
                                {
                                    if (isATM)
                                    {
                                        titleText = Surf3 + Formatter.Distance_short(FlightGlobals.ActiveVessel.radarAltitude) + "  "
                                                    + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                    }

                                    else
                                    {
                                        titleText = Surf5 + Formatter.Distance_long(FlightGlobals.ActiveVessel.radarAltitude);
                                    }
                                }
                                else
                                {
                                    titleText = Surf3 + Formatter.Distance_short(FlightGlobals.ActiveVessel.radarAltitude) + "  "
                                                + (spd * kn_ms).ToString("F1") + kn;
                                }
                            }
                            else
                            {
                                if (settings.mach)
                                {
                                    if (isATM)
                                    {
                                        titleText = Surf5 + Localizer.Format("#SpeedUnitAnnex_mach", FlightGlobals.ActiveVessel.mach.ToString("F1"));
                                    }
                                    else
                                    {
                                        titleText = Surface;
                                    }
                                }
                                else
                                {
                                    titleText = Surf5 + (spd * kn_ms).ToString("F1") + knots;
                                }
                            }

                            if (settings.ias && speedIAS > 0)
                            {
                                speedText += " " + speedIAS.ToString("F1");
                            }
                        }
                        // Rover (and LANDED Plane)  // and rover-carrier if ksp detect them as rover
                        // All mistake at ksp detecting vessel type can be fixed by some additional checking (ex. altitude for rover-carrier)
                        // but it make unclear to user, which values is showed up.
                        else         //if FlightGlobals.ActiveVessel.radarAltitude < 100)
                        {
                            if (settings.kmph)
                            {
                                titleText = Surf5 + (spd * kmph_ms).ToString("F1") + kmph;
                            }
                            else
                            {
                                titleText = Surf5 + (spd * mph_ms).ToString("F1") + mph;
                            }
                        }
                        break;

                    case VesselType.EVA:

                        if (settings.radar)
                        {
                            double alt = FlightGlobals.ActiveVessel.radarAltitude;

                            if (situation == Vessel.Situations.SPLASHED)
                            {
                                alt += 0.21;
                            }
                            else
                            {
                                alt -= 0.27;
                            }

                            titleText = Surf3 + Formatter.Distance_short(alt) + " " + FlightGlobals.ActiveVessel.GetDisplayName();
                        }
                        else
                        {
                            titleText = Surf3 + FlightGlobals.ActiveVessel.GetDisplayName();
                        }

                        if (titleText.Length > 17)
                        {
                            titleText = titleText.Substring(0, 16) + "...";
                        }
                        break;

                    case VesselType.Flag:

                        titleText = Surf3 + FlightGlobals.ActiveVessel.GetDisplayName();

                        if (titleText.Length > 17)
                        {
                            titleText = titleText.Substring(0, 16) + "...";
                        }
                        break;

                    // Other: Rocket, Lander, Base etc
                    default:

                        if (settings.radar)
                        {
                            titleText = Surf5 + Formatter.Distance_long(FlightGlobals.ActiveVessel.radarAltitude);
                        }
                        else
                        {
                            titleText = Surface;
                        }
                        break;
                    }

                    display.textTitle.text = titleText;
                    display.textSpeed.text = speedText;

                    break;

                case FlightGlobals.SpeedDisplayModes.Orbit:

                    if (FlightGlobals.ActiveVessel.vesselType == VesselType.EVA &&
                        settings.orbit_EVA)
                    {
                        if (settings.orbit_time)
                        {
                            titleText = FlightGlobals.ActiveVessel.GetDisplayName();
                        }
                        else
                        {
                            titleText = Orb + FlightGlobals.ActiveVessel.GetDisplayName();
                        }

                        if (titleText.Length > 17)
                        {
                            titleText = titleText.Substring(0, 16) + "...";
                        }

                        display.textTitle.text = titleText;
                    }
                    else
                    {
                        double SOI_MASL = FlightGlobals.getMainBody().sphereOfInfluence - FlightGlobals.getMainBody().Radius;
                        bool   Ap_ok    = FlightGlobals.getMainBody().atmosphereDepth < FlightGlobals.ship_orbit.ApA && FlightGlobals.ship_orbit.ApA < SOI_MASL;
                        bool   Pe_ok    = FlightGlobals.getMainBody().atmosphereDepth < FlightGlobals.ship_orbit.PeA && FlightGlobals.ship_orbit.PeA < SOI_MASL;
                        string Ap       = Formatter.Distance_k(FlightGlobals.ship_orbit.ApA);
                        string Pe       = Formatter.Distance_k(FlightGlobals.ship_orbit.PeA);
                        string Apsises  = (Ap_ok ? "<color=#00ff00ff>" : "<color=#00ff009f>") + Ap +
                                          (Pe_ok ? " <color=#00ff00ff>" : " <color=#00ff009f>") + Pe;



                        if (settings.orbit_time)
                        {
                            //double tTr = FlightGlobals.ship_orbit.timeToTransition1;
                            string TimeApsis;
                            bool   Apsis_ok;

                            if (FlightGlobals.ship_orbit.timeToAp < FlightGlobals.ship_orbit.timeToPe)
                            {
                                Apsis_ok  = Ap_ok;
                                TimeApsis = Formatter.Time(FlightGlobals.ship_orbit.timeToAp, Ap_pre);
                            }
                            else
                            {
                                Apsis_ok  = Pe_ok;
                                TimeApsis = Formatter.Time(FlightGlobals.ship_orbit.timeToPe, Pe_pre);
                            }

                            display.textTitle.text = Apsises +
                                                     (Apsis_ok ? " <color=#ffffffff>" : " <color=#ffffff9f>") + TimeApsis;
                        }
                        else
                        {
                            display.textTitle.text = Orb + Apsises;
                        }
                    }

                    display.textSpeed.text = FlightGlobals.ship_obtSpeed.ToString("F1") + mps;
                    break;

                case FlightGlobals.SpeedDisplayModes.Target:

                    ITargetable obj = FlightGlobals.fetch.VesselTarget;
                    #region all Target
                    // ITargetable ->  CelestialBody;
                    //                 FlightCoMTracker;
                    //                 ModuleDockingNode;
                    //                 PositionTarget;
                    //                 Vessel;
                    #endregion
                    string name;

                    if (obj is ModuleDockingNode)
                    {
                        name = obj.GetVessel().GetDisplayName();
                    }
                    else
                    {
                        name = obj.GetDisplayName();
                    }

                    if (name.Length > 1 && name.Substring(name.Length - 2, 1) == "^")
                    {
                        name = name.Substring(0, name.Length - 2);
                    }

                    if (settings.targetDistance)
                    {
                        // from Docking Port Alignment Indicator
                        Transform selfTransform    = FlightGlobals.ActiveVessel.ReferenceTransform;
                        Transform targetTransform  = FlightGlobals.fetch.VesselTarget.GetTransform();
                        Vector3   targetToOwnship  = selfTransform.position - targetTransform.position;
                        float     distanceToTarget = targetToOwnship.magnitude;

                        titleText = Trg + Formatter.Distance_short(distanceToTarget) + " " + name;
                    }
                    else
                    {
                        titleText = Trg + name;
                    }

                    if (titleText.Length <= 17)
                    {
                        display.textTitle.text = titleText;
                    }
                    else
                    {
                        display.textTitle.text = titleText.Substring(0, 16) + "...";
                    }

                    if (FlightGlobals.ship_tgtSpeed < 0.195)
                    {
                        display.textSpeed.text = FlightGlobals.ship_tgtSpeed.ToString("F2") + mps;
                    }
                    else
                    {
                        display.textSpeed.text = FlightGlobals.ship_tgtSpeed.ToString("F1") + mps;
                    }
                    break;
                }

                // need to be there, for every tick. Doesn't work in the  Start() or onSetSpeedMode()
                display.textTitle.alignment = TMPro.TextAlignmentOptions.MidlineLeft;
            }
        }