private void HandleMenuWindow()
        {
            if (_menuWindow == null)
            {
                return;
            }
            if (!WindowManager.IsOpen(_menuWindow))
            {
                CancelMenu();
                return;
            }

            if (RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name) &&
                (RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel) || FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING))
            {
                _menuWindow.TrackingEnabled = true;
            }
            else
            {
                _menuWindow.TrackingEnabled = false;
            }

            if (RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name) &&
                FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING)
            {
                _menuWindow.RoutineArrivalEnabled       = true;
                _menuWindow.RoutineDepartureEnabled     = true;
                _menuWindow.RegisterDockingPortsEnabled = true;
            }
            else
            {
                _menuWindow.RoutineArrivalEnabled   = false;
                _menuWindow.RoutineDepartureEnabled = false;
            }
        }
Esempio n. 2
0
        private void setModule()
        {
            if (commercialvehiclemode && commercialvehicleOfferingLoaded)
            {
                Events["setAutoDepart"].guiActive = true;
            }
            else
            {
                Events["setAutoDepart"].guiActive = false;
            }
            if ((RmmUtil.IsPreLaunch(vessel) && !trackingActive && IsDockingPort()) || (returnMission && !trackingActive))
            {
                Events["tracking"].guiActive = true;
            }
            else
            {
                Events["tracking"].guiActive = false;
            }

            if (PortCode == "" && vessel.situation == Vessel.Situations.ORBITING && RmmUtil.AllowedBody(vessel.mainBody.name) && IsDockingPort())
            {
                Events["register"].guiActive = true;
            }
            else
            {
                Events["register"].guiActive = false;
            }
        }
Esempio n. 3
0
        private void HandleStartTrackingWindow()
        {
            if (_startTrackingWindow == null)
            {
                return;
            }
            if (!WindowManager.IsOpen(_startTrackingWindow))
            {
                CancelStartTracking();
                return;
            }
            if (_startTrackingVessel != null)
            {
                if (RmmUtil.IsTrackingActive(FlightGlobals.ActiveVessel) ||
                    !RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel))
                {
                    CancelStartTracking();
                    return;
                }

                _startTrackingWindow.VesselName  = _startTrackingVessel.vesselName;
                _startTrackingWindow.Price       = RmmUtil.CalculateVesselPrice(_startTrackingVessel);
                _startTrackingWindow.MinimumCrew = RmmUtil.AstronautCrewCount(_startTrackingVessel);
            }
            else if (_startDockingPort != null)
            {
                if (FlightGlobals.ActiveVessel.situation != Vessel.Situations.ORBITING)
                {
                    CancelStartTracking();
                    return;
                }

                List <Part> dockedVesselParts = RmmUtil.GetDockedParts(_startDockingPort.vessel, _startDockingPort);
                // determine minimum crew
                _startTrackingWindow.MinimumCrew = RmmUtil.AstronautCrewCount(dockedVesselParts);

                // determine minimum resources
                List <string>   propellants      = RmmUtil.DetermineProppellantArray(dockedVesselParts);
                List <Resource> minimumResources = new List <Resource>();

                foreach (String propellant in propellants)
                {
                    var amount = RmmUtil.ReadResource(dockedVesselParts, propellant);
                    if (amount != 0)
                    {
                        Resource resource = new Resource
                        {
                            Name   = propellant,
                            Amount = amount,
                        };
                        minimumResources.Add(resource);
                    }
                }

                _startTrackingWindow.MinimumResources = minimumResources;
            }
        }
        private bool ToolBarButtonVisible()
        {
            if (RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel) ||
                (FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING &&
                 RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name) &&
                 RmmUtil.HasDockingPorts(FlightGlobals.ActiveVessel)) ||
                RmmUtil.IsTrackingActive(FlightGlobals.ActiveVessel))
            {
                return(true);
            }

            return(false);
        }
        public void OpenGUITracking()
        {
            if (RmmUtil.IsPreLaunch(vessel) && !trackingActive)
            {
                trackStrName        = vessel.vesselName;
                trackStrVehicleName = vessel.vesselName;
                SetThisPortPrimary();
            }

            if (returnMission && !trackingActive)
            {
                SetThisPortPrimary();
            }

            renderGUITracking = true;
        }
        public void StartTrackingOption()
        {
            if (!RmmUtil.AllowedBody(FlightGlobals.ActiveVessel.mainBody.name))
            {
                return;
            }

            if (!RmmUtil.IsTrackingActive(FlightGlobals.ActiveVessel) && RmmUtil.IsPreLaunch(FlightGlobals.ActiveVessel))
            {
                _trackingControl.CreateLaunchTracking(FlightGlobals.ActiveVessel);
            }

            if (FlightGlobals.ActiveVessel.situation == Vessel.Situations.ORBITING)
            {
                EnableDepartureTracking();
            }
        }
        /// <summary>
        /// GUI Tracking
        /// </summary>
        /// <param name="windowID"></param>
        private void WindowGUITracking(int windowID)
        {
            GUI.DragWindow(new Rect(0, 0, 200, 30));
            GUILayout.BeginVertical();

            if (!trackingActive && RmmUtil.IsPreLaunch(vessel))
            {
                if (trackWinMode != 0)
                {
                    windowPosGUITracking = new Rect(200, 200, 300, 100);
                    trackWinMode         = 0;
                }
                createMissionForm();
            }
            else if (trackingActive)
            {
                if (trackWinMode != 1)
                {
                    windowPosGUITracking = new Rect(0, 400, 200, 50);
                    trackWinMode         = 1;
                }
                GUILayout.BeginHorizontal();
                GUILayout.Label("tracking", RmmStyle.Instance.LabelStyle, GUILayout.Width(60));
                if (GUILayout.Button("stop tracking", RmmStyle.Instance.ButtonStyle, GUILayout.Width(100), GUILayout.Height(22)))
                {
                    trackAbort();
                }
                GUILayout.EndHorizontal();
            }
            else if (returnMission && !trackingActive && RmmUtil.IsDocked(vessel, part))
            {
                if (trackWinMode != 2)
                {
                    windowPosGUITracking = new Rect(200, 200, 300, 50);
                    trackWinMode         = 2;
                }
                returnMissionForm();
            }
            else
            {
                CloseGUITracking();
            }

            GUILayout.EndVertical();
        }