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); }
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); }
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); } }
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); }
public FlightEvent GetLastEvent() { if (subsequentEvents == null || subsequentEvents.Count == 0) { return(null); } FlightEvent flightEvent = subsequentEvents[subsequentEvents.Count - 1]; return(flightEvent); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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>()); }
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); } }
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); } }
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); }