Beispiel #1
0
        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);
        }