private void trackLaunch()
        {
            MissionLaunch launch = new MissionLaunch
            {
                Time       = (float)Planetarium.GetUniversalTime(),
                Body       = vessel.mainBody.name,
                VesselName = vessel.name,
                Funds      = RmmUtil.CalculateVesselPrice(vessel),
                Crew       = RmmUtil.AstronautCrewCount(vessel),
                Parts      = MissionPart.GetMissionPartList(vessel),
            };

            _mission.TrackLaunch(launch);
            trackingActive  = true;
            trackingPrimary = true;
            trackingStatus  = "Underway";

            //-----------------------
            trackPartCount    = RmmUtil.CountVesselParts(vessel);
            trackCrew         = RmmUtil.AstronautCrewCount(vessel);
            trackCrewCapacity = RmmUtil.CrewCapacityCount(vessel);

            ScreenMessages.PostScreenMessage("mission tracking-LAUNCH", 4, ScreenMessageStyle.UPPER_CENTER);
            setOtherModules();
            updateTrackingVars(vessel);
            updateNextLogicTime(vessel);
        }
        private void TrackLanding()
        {
            MissionLanding landing = new MissionLanding
            {
                Time         = Planetarium.GetUniversalTime(),
                Body         = vessel.mainBody.name,
                Coordinates  = MissionCoordinates.GetMissionCoordinates(vessel.latitude, vessel.longitude),
                Funds        = RmmUtil.CalculateVesselPrice(vessel),
                Crew         = (int)trackCrew,
                CrewCapacity = (int)trackCrewCapacity,
                Parts        = MissionPart.GetMissionPartList(vessel),
                Resources    = MissionResource.GetMissionResourceList(vessel),
            };

            _mission.TrackLanding(landing);

            trackingPrimary = false;
            trackingActive  = false;
            trackingStatus  = "Landed";

            ScreenMessages.PostScreenMessage("mission tracking-LANDING", 4, ScreenMessageStyle.UPPER_CENTER);
            _partModule.nextLogicTime = 0;
            updateTrackingVars(vessel);
            updateNextLogicTime(vessel);
        }
Exemple #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;
            }
        }