private void MarkRequiredIfNeeded() { var markRequired = (Cassette != null) && ((KeyboardComponentFeatures)Cassette.Flags).HasFlag(KeyboardComponentFeatures.TapeRequired); markRequired |= (Basic != null) && ((KeyboardComponentFeatures)Basic.Flags).HasFlag(KeyboardComponentFeatures.BasicRequired); if (markRequired) { KeyboardComponent = KeyboardComponentOptions.First(k => k.Flags == (uint)KeyboardComponentFeatures.Requires); } }
/// <inheritdoc /> public override void Initialize(ProgramFeatures features) { base.Initialize(features); _keyboardComponent = KeyboardComponentOptions.FirstOrDefault(e => (e != null) && (e.Flags == ((uint)features.KeyboardComponent & FeatureCompatibilityHelpers.CompatibilityMask))); _usesMicrophone = features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.Microphone); _usesPrinter = features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.Printer); _usesCassette = features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.TapeOptional) || features.KeyboardComponent.HasFlag(KeyboardComponentFeatures.TapeRequired); _cassette = CassetteOptions.FirstOrDefault(s => s.Flags == (uint)(features.KeyboardComponent & KeyboardComponentFeaturesHelpers.TapeMask)); _basic = BasicOptions.FirstOrDefault(s => s.Flags == (uint)(features.KeyboardComponent & KeyboardComponentFeaturesHelpers.BasicMask)); RaiseAllPropertiesChanged(); UpdateCompatibility((KeyboardComponentFeatures)_keyboardComponent.Flags); }