public void FlightSelected(FlightMetadata flightMetadata) { _activeWarnings.Clear(); _passengers.Clear(); if (flightMetadata == null) { _selectedFlight = null; } else if (_selectedFlight == null || _selectedFlight.UniqueId != flightMetadata.UniqueId) { _selectedFlight = _wolf.GetCrewRoute(flightMetadata.UniqueId); if (flightMetadata.Status == FlightStatus.Boarding || flightMetadata.Status == FlightStatus.Arrived) { ShowWarning(SelectedFlightPanelLabels.NoPassengersSelectedMessage, true); } } }
public void Launch() { if (!_activeWarnings.Any(w => w.Value.PreventsAction)) { var activeVessel = FlightGlobals.ActiveVessel; var landedSituations = Vessel.Situations.LANDED | Vessel.Situations.PRELAUNCH | Vessel.Situations.SPLASHED; var landedOnly = (activeVessel.situation & landedSituations) == landedSituations; var vessels = LogisticsTools .GetNearbyVessels(TERMINAL_RANGE, true, activeVessel, landedOnly); var passengers = _passengers.Values.Select(p => p.Name); foreach (var vessel in vessels) { var crew = vessel.GetVesselCrew().ToArray(); foreach (var kerbal in crew) { if (passengers.Contains(kerbal.name)) { if (_selectedFlight.Embark(new Passenger(kerbal))) { vessel.CrewListSetDirty(); var parts = vessel.parts; foreach (var part in parts) { if (part.protoModuleCrew.Contains(kerbal)) { part.RemoveCrewmember(kerbal); break; } } kerbal.rosterStatus = ProtoCrewMember.RosterStatus.Missing; kerbal.SetTimeForRespawn(double.MaxValue); } else { ShowWarning("Could not launch.", false); return; } } } } _selectedFlight.Launch(Planetarium.GetUniversalTime()); _passengers.Clear(); _activeWarnings.Clear(); var metadata = new FlightMetadata() { ArrivalBiome = _selectedFlight.DestinationBiome, ArrivalBody = _selectedFlight.DestinationBody, DepartureBiome = _selectedFlight.OriginBiome, DepartureBody = _selectedFlight.OriginBody, Duration = GetDuration(_selectedFlight), EconomySeats = GetEconomySeats(_selectedFlight), FlightNumber = _selectedFlight.FlightNumber, LuxurySeats = GetLuxurySeats(_selectedFlight), Status = _selectedFlight.FlightStatus, UniqueId = _selectedFlight.UniqueId, }; _window.Launched(metadata); } }