private List <IBasicModule> AddTargetModules()
        {
            List <IBasicModule> modules = new List <IBasicModule>();

            targetName = new TargetName("Target Name");
            closest    = new ClosestApproach("Closest Approach");
            closestVel = new RelVelocityAtClosest("Rel Vel At Appr");
            distance   = new DistanceToTarget("Dist To Target");
            relInc     = new RelInclination("Rel Inclination");
            relVel     = new RelVelocity("Rel Velocity");
            angToPro   = new AngleToPrograde("Ang To Pro");
            phaseAngle = new PhaseAngle("Phase Angle");

            targetName.IsVisible  = BasicSettings.Instance.showTargetName;
            targetName.AlwaysShow = BasicSettings.Instance.showTargetNameAlways;
            closest.IsVisible     = BasicSettings.Instance.showClosestApproach;
            closest.AlwaysShow    = BasicSettings.Instance.showClosestApproachAlways;
            closestVel.IsVisible  = BasicSettings.Instance.showClosestApproachVelocity;
            closestVel.AlwaysShow = BasicSettings.Instance.showClosestApproachVelocityAlways;
            distance.IsVisible    = BasicSettings.Instance.showDistance;
            distance.AlwaysShow   = BasicSettings.Instance.showDistanceAlways;
            relInc.IsVisible      = BasicSettings.Instance.showRelInclination;
            relInc.AlwaysShow     = BasicSettings.Instance.showRelInclinationAlways;
            relVel.IsVisible      = BasicSettings.Instance.showRelVelocity;
            relVel.AlwaysShow     = BasicSettings.Instance.showRelVelocityAlways;
            angToPro.IsVisible    = BasicSettings.Instance.showAngleToPrograde;
            angToPro.AlwaysShow   = BasicSettings.Instance.showAngleToProgradeAlways;
            phaseAngle.IsVisible  = BasicSettings.Instance.showPhaseAngle;
            phaseAngle.AlwaysShow = BasicSettings.Instance.showPhaseAngleAlways;

            modules.Add(relVel);
            modules.Add(relInc);
            modules.Add(angToPro);
            modules.Add(phaseAngle);
            modules.Add(closestVel);
            modules.Add(closest);
            modules.Add(distance);
            modules.Add(targetName);

            return(modules);
        }
Exemple #2
0
        private int DrawTransferAngleButtons(KACAlarm tmpAlarm)
        {
            if ((tmpAlarm.TypeOfAlarm == KACAlarm.AlarmTypeEnum.Transfer || tmpAlarm.TypeOfAlarm == KACAlarm.AlarmTypeEnum.TransferModelled) &&
                (HighLogic.LoadedScene == GameScenes.TRACKSTATION || HighLogic.LoadedScene == GameScenes.FLIGHT))
            {
                //right type of alarm, now is the text there
                Match matchPhase      = Regex.Match(tmpAlarm.Notes, "(?<=Phase\\sAngle\\:\\s+)\\S+(?=°)");
                Match matchEjectPro   = Regex.Match(tmpAlarm.Notes, "(?<=Ejection\\sAngle\\:\\s+)\\S+(?=°\\sto\\sprograde)");
                Match matchEjectRetro = Regex.Match(tmpAlarm.Notes, "(?<=Ejection\\sAngle\\:\\s+)\\S+(?=°\\sto\\sretrograde)");
                if (matchPhase.Success && (matchEjectPro.Success || matchEjectRetro.Success))
                {
                    try
                    {
                        //LogFormatted_DebugOnly("{0}", matchPhase.Value);
                        Double dblPhase = Convert.ToDouble(matchPhase.Value);
                        Double dblEject;
                        if (matchEjectPro.Success)
                        {
                            dblEject = Convert.ToDouble(matchEjectPro.Value);
                        }
                        else
                        {
                            dblEject = Convert.ToDouble(matchEjectRetro.Value);
                        }

                        GUILayout.BeginHorizontal();

                        CelestialBody cbOrigin = FlightGlobals.Bodies.Single(b => b.bodyName == tmpAlarm.XferOriginBodyName);
                        CelestialBody cbTarget = FlightGlobals.Bodies.Single(b => b.bodyName == tmpAlarm.XferTargetBodyName);

                        GUIStyle styleAngleButton = new GUIStyle(KACResources.styleSmallButton)
                        {
                            fixedWidth = 180
                        };

                        if (DrawToggle(ref blnShowPhaseAngle, "Show Phase Angle", styleAngleButton))
                        {
                            if (blnShowPhaseAngle)
                            {
                                EjectAngle.HideAngle();
                                blnShowEjectAngle = false;
                                PhaseAngle.DrawAngle(cbOrigin, cbTarget, dblPhase);
                            }
                            else
                            {
                                PhaseAngle.HideAngle();
                            }
                        }
                        if (DrawToggle(ref blnShowEjectAngle, "Show Eject Angle", styleAngleButton))
                        {
                            if (blnShowEjectAngle)
                            {
                                PhaseAngle.HideAngle();
                                blnShowPhaseAngle = false;
                                EjectAngle.DrawAngle(cbOrigin, dblEject, matchEjectRetro.Success);
                            }
                            else
                            {
                                EjectAngle.HideAngle();
                            }
                        }
                        GUILayout.EndHorizontal();

                        //if (GUILayout.Toggle()) {

                        //}
                        //GUILayout.Label(String.Format("P:{0} - E:{1}",dblPhase,dblEject));

                        return(1);
                    }
                    catch (Exception)
                    {
                        GUILayout.Label("Unable to decipher TWP Phase and Eject Angle found in notes");
                        return(1);
                    }
                }
                else
                {
                    GUILayout.Label("No TWP Phase and Eject Angle found in notes");
                    return(1);
                }
            }
            else
            {
                return(0);
            }
        }