public static AircraftEndorsement GetEndorsementMask(AircraftCategory category) { AircraftEndorsement mask = AircraftEndorsement.None; switch (category) { case AircraftCategory.Airplane: mask |= AircraftEndorsement.SingleEngineLand; mask |= AircraftEndorsement.SingleEngineSea; mask |= AircraftEndorsement.MultiEngineLand; mask |= AircraftEndorsement.MultiEngineSea; mask |= AircraftEndorsement.Complex; mask |= AircraftEndorsement.HighPerformance; mask |= AircraftEndorsement.TailDragger; break; case AircraftCategory.Rotorcraft: mask |= AircraftEndorsement.Helicoptor; mask |= AircraftEndorsement.Gryoplane; break; case AircraftCategory.Glider: mask = AircraftEndorsement.Glider; break; case AircraftCategory.LighterThanAir: mask |= AircraftEndorsement.Airship; mask |= AircraftEndorsement.Balloon; break; case AircraftCategory.PoweredLift: mask = AircraftEndorsement.PoweredLift; break; case AircraftCategory.PoweredParachute: mask |= AircraftEndorsement.PoweredParachuteLand; mask |= AircraftEndorsement.PoweredParachuteSea; break; case AircraftCategory.WeightShiftControl: mask |= AircraftEndorsement.WeightShiftControlLand; mask |= AircraftEndorsement.WeightShiftControlSea; break; default: throw new ArgumentOutOfRangeException(); } return(mask); }
static RootElement CreateEndorsementsElement(AircraftEndorsement endorsements) { var root = new RootElement("Aircraft Ratings & Endorsements"); Section section; foreach (AircraftCategory category in Enum.GetValues(typeof(AircraftCategory))) { section = new Section(category.ToHumanReadableName()); PopulateEndorsementSection(section, endorsements, Pilot.GetEndorsementMask(category)); root.Add(section); } return(root); }
static void PopulateEndorsementSection(Section section, AircraftEndorsement endorsements, AircraftEndorsement mask) { string caption; foreach (AircraftEndorsement endorsement in Enum.GetValues(typeof(AircraftEndorsement))) { if (endorsement == AircraftEndorsement.None || !mask.HasFlag(endorsement)) { continue; } caption = endorsement.ToHumanReadableName(); section.Add(new BooleanElement(caption, endorsements.HasFlag(endorsement), endorsement.ToString())); } }
static void PopulateEndorsementSection(Section section, AircraftEndorsement endorsements, AircraftEndorsement mask) { string caption; foreach (AircraftEndorsement endorsement in Enum.GetValues (typeof (AircraftEndorsement))) { if (endorsement == AircraftEndorsement.None || !mask.HasFlag (endorsement)) continue; caption = endorsement.ToHumanReadableName (); section.Add (new BooleanElement (caption, endorsements.HasFlag (endorsement), endorsement.ToString ())); } }
static RootElement CreateEndorsementsElement(AircraftEndorsement endorsements) { var root = new RootElement ("Aircraft Ratings & Endorsements"); Section section; foreach (AircraftCategory category in Enum.GetValues (typeof (AircraftCategory))) { section = new Section (category.ToHumanReadableName ()); PopulateEndorsementSection (section, endorsements, Pilot.GetEndorsementMask (category)); root.Add (section); } return root; }