internal void EnsurePopulated()
 {
     if (Lights == null)
     {
         Lights = new AircraftConfigurationLights();
     }
     Lights.EnsurePopulated();
     if (Engines == null)
     {
         Engines = new AircraftConfigurationEngines();
     }
     Engines.EnsurePopulated();
     if (!GearDown.HasValue)
     {
         GearDown = true;
     }
     if (!FlapsPercent.HasValue)
     {
         FlapsPercent = 0;
     }
     if (!SpoilersDeployed.HasValue)
     {
         SpoilersDeployed = false;
     }
     if (!OnGround.HasValue)
     {
         OnGround = true;
     }
 }
        internal AircraftConfigurationLights CreateIncremental(AircraftConfigurationLights cfg)
        {
            EnsurePopulated();
            cfg.EnsurePopulated();
            if (cfg.Equals(this))
            {
                return(null);
            }
            AircraftConfigurationLights inc = new AircraftConfigurationLights();

            if (cfg.StrobesOn != StrobesOn)
            {
                inc.StrobesOn = cfg.StrobesOn;
            }
            if (cfg.LandingOn != LandingOn)
            {
                inc.LandingOn = cfg.LandingOn;
            }
            if (cfg.TaxiOn != TaxiOn)
            {
                inc.TaxiOn = cfg.TaxiOn;
            }
            if (cfg.BeaconOn != BeaconOn)
            {
                inc.BeaconOn = cfg.BeaconOn;
            }
            if (cfg.NavOn != NavOn)
            {
                inc.NavOn = cfg.NavOn;
            }
            return(inc);
        }
        internal static AircraftConfigurationLights FromUserAircraftData(UserAircraftData uad)
        {
            AircraftConfigurationLights acl = new AircraftConfigurationLights
            {
                StrobesOn = uad.StrobeLightsOn,
                LandingOn = uad.LandingLightsOn,
                TaxiOn    = uad.TaxiLightsOn,
                BeaconOn  = uad.BeaconLightsOn,
                NavOn     = uad.NavLightsOn
            };

            return(acl);
        }
        internal AircraftConfigurationLights Clone()
        {
            AircraftConfigurationLights clone = new AircraftConfigurationLights
            {
                StrobesOn = StrobesOn,
                LandingOn = LandingOn,
                TaxiOn    = TaxiOn,
                BeaconOn  = BeaconOn,
                NavOn     = NavOn
            };

            return(clone);
        }
        internal static AircraftConfiguration FromUserAircraftData(UserAircraftData uad)
        {
            AircraftConfiguration cfg = new AircraftConfiguration
            {
                Lights           = AircraftConfigurationLights.FromUserAircraftData(uad),
                Engines          = AircraftConfigurationEngines.FromUserAircraftData(uad),
                GearDown         = uad.GearDown,
                FlapsPercent     = RoundUpToNearest5(uad.FlapsPercentage),
                SpoilersDeployed = uad.SpeedBrakeDeployed,
                OnGround         = uad.OnGround
            };

            return(cfg);
        }
 internal void ApplyIncremental(AircraftConfigurationLights inc)
 {
     if (inc.StrobesOn.HasValue)
     {
         StrobesOn = inc.StrobesOn.Value;
     }
     if (inc.LandingOn.HasValue)
     {
         LandingOn = inc.LandingOn.Value;
     }
     if (inc.TaxiOn.HasValue)
     {
         TaxiOn = inc.TaxiOn.Value;
     }
     if (inc.BeaconOn.HasValue)
     {
         BeaconOn = inc.BeaconOn.Value;
     }
     if (inc.NavOn.HasValue)
     {
         NavOn = inc.NavOn.Value;
     }
 }