Ejemplo n.º 1
0
        public long GetTotalFlightTime()
        {
            long        totalTime    = 0;
            FlightEvent currentStart = this;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is LaunchCrewEvent)
                {
                    currentStart = flightEvent;
                }
                else if (flightEvent is EndFlightCrewEvent)
                {
                    totalTime   += flightEvent.time - currentStart.time;
                    currentStart = null;
                }
            }
            if (currentStart != null)
            {
                totalTime += EventProcessor.GetTimeInTicks() - currentStart.time;
            }

            return(totalTime);
        }
Ejemplo n.º 2
0
        internal object GetTotalEvasTime()
        {
            long        totalTime    = 0;
            FlightEvent currentStart = null;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is EvaCrewEvent)
                {
                    currentStart = flightEvent;
                }
                else if (currentStart != null && (flightEvent is EndFlightCrewEvent || flightEvent is EvaCrewEndEvent))
                {
                    totalTime   += flightEvent.time - currentStart.time;
                    currentStart = null;
                }
            }
            if (currentStart != null)
            {
                totalTime += EventProcessor.GetTimeInTicks() - currentStart.time;
            }

            return(totalTime);
        }
Ejemplo n.º 3
0
        internal object GetFinalMass()
        {
            if (subsequentEvents.Count == 0)
            {
                return(-1);
            }
            if (GetEndDate() == -1)
            {
                return(currentMass);
            }
            FlightEvent flightEvent = subsequentEvents[subsequentEvents.Count - 1];

            if (flightEvent is EndFlightEvent)
            {
                return((flightEvent as EndFlightEvent).finalMass);
            }
            else if (flightEvent is FinishMissionEvent)
            {
                return((flightEvent as FinishMissionEvent).finalMass);
            }
            else
            {
                return(-1);
            }
        }
Ejemplo n.º 4
0
        public long GetTotalMissionTime()
        {
            long        totalTime    = 0;
            FlightEvent currentStart = this;
            FlightEvent lastStart    = null;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is LaunchEvent)
                {
                    currentStart = flightEvent;
                }
                else if (flightEvent is EndFlightEvent || flightEvent is FinishMissionEvent)
                {
                    if (currentStart == null)
                    {
                        currentStart = lastStart;
                    }
                    totalTime   += flightEvent.time - currentStart.time;
                    lastStart    = currentStart;
                    currentStart = null;
                }
            }
            if (currentStart != null)
            {
                totalTime += EventProcessor.GetTimeInTicks() - currentStart.time;
            }

            return(totalTime);
        }
Ejemplo n.º 5
0
        public FlightEvent GetLastEvent()
        {
            if (subsequentEvents == null || subsequentEvents.Count == 0)
            {
                return(null);
            }
            FlightEvent flightEvent = subsequentEvents[subsequentEvents.Count - 1];

            return(flightEvent);
        }
Ejemplo n.º 6
0
        internal double GetEventMaxGee()
        {
            double gee = 0;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is MaxGeeCrewEvent)
                {
                    gee = (flightEvent as MaxGeeCrewEvent).gee;
                }
            }
            return(gee);
        }
Ejemplo n.º 7
0
        internal IEnumerable <FlightEvent> GetLandings()
        {
            List <FlightEvent> landings = new List <FlightEvent>();

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is LandingEvent)
                {
                    landings.Add(flightEvent);
                }
            }
            return(landings);
        }
Ejemplo n.º 8
0
        internal double GetEventMaxSpeed()
        {
            double maxSpeed = 0;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is MaxSpeedEvent)
                {
                    maxSpeed = (flightEvent as MaxSpeedEvent).speed;
                }
            }
            return(maxSpeed);
        }
Ejemplo n.º 9
0
        public int GetEvas()
        {
            int count = 0;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is EvaEvent)
                {
                    count++;
                }
            }
            return(count);
        }
Ejemplo n.º 10
0
        internal List <SOIChangeEvent> GetSOIChanges()
        {
            List <SOIChangeEvent> changes = new List <SOIChangeEvent>();

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is SOIChangeEvent)
                {
                    changes.Add(flightEvent as SOIChangeEvent);
                }
            }
            return(changes);
        }
Ejemplo n.º 11
0
        internal int GetLandingsCount()
        {
            int count = 0;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is LandingEvent)
                {
                    count++;
                }
            }
            return(count);
        }
Ejemplo n.º 12
0
 internal float GetMassOnOrbit()
 {
     if (subsequentEvents.Count == 0)
     {
         return(-1);
     }
     for (int i = 0; i < subsequentEvents.Count; i++)
     {
         FlightEvent flightEvent = subsequentEvents[i];
         if (flightEvent is OrbitReachingEvent)
         {
             return((flightEvent as OrbitReachingEvent).massOnOrbit);
         }
     }
     return(-1);
 }
Ejemplo n.º 13
0
 internal List <string> GetFinalCrew()
 {
     if (subsequentEvents.Count == 0)
     {
         return(new List <string>());
     }
     for (int i = 0; i < subsequentEvents.Count; i++)
     {
         FlightEvent flightEvent = subsequentEvents[i];
         if (flightEvent is EndFlightEvent)
         {
             return((flightEvent as EndFlightEvent).crewMembers);
         }
         else if (flightEvent is FinishMissionEvent)
         {
             return((flightEvent as FinishMissionEvent).crewMembers);
         }
     }
     return(new List <string>());
 }
Ejemplo n.º 14
0
        internal long GetEndDate()
        {
            if (subsequentEvents.Count == 0)
            {
                return(-1);
            }
            FlightEvent flightEvent = subsequentEvents[subsequentEvents.Count - 1];

            if (flightEvent is EndFlightEvent)
            {
                return(flightEvent.time);
            }
            else if (flightEvent is FinishMissionEvent)
            {
                return(flightEvent.time);
            }
            else
            {
                return(-1);
            }
        }
Ejemplo n.º 15
0
        public void RecordLanding(Vessel vessel)
        {
            if (vessel.isEVA)
            {
                return;
            }
            LandingEvent landing = new LandingEvent();

            landing.mainBodyName = vessel.mainBody.name;
            landing.biome        = getBiomeName(vessel.mainBody, vessel.longitude, vessel.latitude);
            LaunchEvent launch = GetLaunch(vessel);

            if (launch != null)
            {
                FlightEvent flightEvent = launch.GetLastEvent();
                if (flightEvent is EvaEvent && (landing.time - flightEvent.time) / TimeSpan.TicksPerSecond < 1)
                {
                    return;
                }
                if (flightEvent is LandingEvent)
                {
                    if (((landing.time - flightEvent.time) / TimeSpan.TicksPerSecond < 2))
                    {
                        return;
                    }
                }
                launch.AddEvent(landing);
            }


            foreach (ProtoCrewMember kerbal in vessel.GetVesselCrew())
            {
                LandingCrewEvent landingCrewEvent = new LandingCrewEvent();
                LaunchCrewEvent  crewLaunch       = GetKerbalLaunch(kerbal.name);
                crewLaunch.AddEvent(landingCrewEvent);
            }
        }
Ejemplo n.º 16
0
        internal object GetIdleTime()
        {
            long        totalTime  = 0;
            FlightEvent currentEnd = null;

            for (int i = 0; i < subsequentEvents.Count; i++)
            {
                FlightEvent flightEvent = subsequentEvents[i];
                if (flightEvent is EndFlightCrewEvent)
                {
                    currentEnd = flightEvent;
                }
                else if (currentEnd != null && flightEvent is LaunchCrewEvent)
                {
                    currentEnd = null;
                }
            }
            if (currentEnd != null)
            {
                totalTime += EventProcessor.GetTimeInTicks() - currentEnd.time;
            }

            return(totalTime);
        }