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);
        }
        private void trackArrival(Part dockedPort)
        {
            MissionArrival arrival = new MissionArrival
            {
                Time             = Planetarium.GetUniversalTime(),
                Body             = vessel.mainBody.name,
                Orbit            = MissionOrbit.GetMissionOrbit(vessel.orbit),
                flightIDDockPart = dockedPort.flightID,
                Crew             = (int)trackCrew,
                CrewCapacity     = (int)trackCrewCapacity,
                Parts            = MissionPart.GetMissionPartList(RmmUtil.GetDockedParts(vessel, dockedPort))
            };

            _mission.TrackArrival(arrival);

            trackingActive  = false;
            trackingPrimary = false;
            trackingStatus  = "Arrived";

            //-----------------------
            StoreVesselSnapShot("arrival");

            _partModule.PortCode = "";


            ScreenMessages.PostScreenMessage("mission tracking-ARRIVAL", 4, ScreenMessageStyle.UPPER_CENTER);
            _partModule.nextLogicTime = 0;
            updateTrackingVars(vessel);
            updateNextLogicTime(vessel);
        }
        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 trackDeparture()
        {
            Part dockedPart = null;

            foreach (Part p in vessel.parts)
            {
                if (p.flightID == trackPort)
                {
                    dockedPart = p;
                    break;
                }
            }

            MissionDeparture departure = new MissionDeparture
            {
                Time             = (float)Planetarium.GetUniversalTime(),
                Body             = vessel.mainBody.name,
                Orbit            = MissionOrbit.GetMissionOrbit(vessel.orbit),
                flightIDDockPart = trackPort,
                VesselName       = vessel.name,
                Crew             = RmmUtil.AstronautCrewCount(vessel),
                Parts            = MissionPart.GetMissionPartList(vessel),
                Resources        = MissionResource.GetMissionResourceList(vessel),
                Proppellants     = RmmUtil.DetermineProppellantArray(vessel),
                Structure        = Structure.GetDockedStructure(vessel, dockedPart)
            };

            _mission.TrackDeparture(departure);
            trackingActive  = true;
            trackingPrimary = true;
            trackingStatus  = "Underway";

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

            ScreenMessages.PostScreenMessage("mission tracking-DEPARTURE", 4, ScreenMessageStyle.UPPER_CENTER);
            setOtherModules();
            updateTrackingVars(vessel);
            updateNextLogicTime(vessel);
        }