public void OnLoad(ConfigNode node) { ArrivalTime = double.Parse(node.GetValue(nameof(ArrivalTime))); DestinationBiome = node.GetValue(nameof(DestinationBiome)); DestinationBody = node.GetValue(nameof(DestinationBody)); Duration = double.Parse(node.GetValue(nameof(Duration))); EconomyBerths = int.Parse(node.GetValue(nameof(EconomyBerths))); if (!node.HasValue(nameof(FlightNumber))) { FlightNumber = _registry.GetNewFlightNumber(); } else { FlightNumber = node.GetValue(nameof(FlightNumber)); } LuxuryBerths = int.Parse(node.GetValue(nameof(LuxuryBerths))); OriginBiome = node.GetValue(nameof(OriginBiome)); OriginBody = node.GetValue(nameof(OriginBody)); if (!node.HasValue(nameof(UniqueId))) { UniqueId = Guid.NewGuid().ToString("N"); } else { UniqueId = node.GetValue(nameof(UniqueId)); } if (node.HasNode(PASSENGERS_NODE_NAME)) { var passengersNode = node.GetNode(PASSENGERS_NODE_NAME); var passengerNodes = passengersNode.GetNodes(); foreach (var passengerNode in passengerNodes) { var passenger = new Passenger(); passenger.OnLoad(passengerNode); Passengers.Add(passenger); } Passengers.Sort(new PassengerComparer()); } // We need to reset some things if flight status can't be loaded from the config var flightStatus = FlightStatus.Unknown; if (!node.TryGetEnum(nameof(FlightStatus), ref flightStatus, FlightStatus.Unknown) || flightStatus == FlightStatus.Unknown) { flightStatus = FlightStatus.Boarding; Passengers.Clear(); ArrivalTime = 0d; } FlightStatus = flightStatus; OriginDepot = _registry.GetDepot(OriginBody, OriginBiome); DestinationDepot = _registry.GetDepot(DestinationBody, DestinationBiome); }