private void UpdateCompatibility(KeyboardComponentFeatures compatibility) { EnableFeatureEditing = compatibility.HasFlag(KeyboardComponentFeatures.Enhances); EnableCassetteOptionSelection = EnableFeatureEditing && UsesCassette; if (!EnableFeatureEditing) { UsesCassette = false; UsesPrinter = false; UsesMicrophone = false; Basic = null; } else { if (Basic == null) { Basic = BasicOptions.First(b => b.Flags == (uint)KeyboardComponentFeatures.BasicTolerated); } if (compatibility == KeyboardComponentFeatures.Enhances) { if ((Basic != null) && (Basic.Flags == (uint)KeyboardComponentFeatures.BasicRequired)) { Basic = BasicOptions.First(b => b.Flags == (uint)KeyboardComponentFeatures.BasicTolerated); } if ((Cassette != null) && (Cassette.Flags == (uint)KeyboardComponentFeatures.TapeRequired)) { Cassette = CassetteOptions.First(c => c.Flags == (uint)KeyboardComponentFeatures.TapeOptional); } } } }
/// <summary> /// Converts KeyboardComponent features to LuigiFeatureFlags. /// </summary> /// <param name="features">The features to convert.</param> /// <returns>The compatibility represented as appropriate LuigiFeatureFlags.</returns> /// <remarks>The additional aspects described by <see cref="KeyboardComponentFeatures"/> are not retained in /// <see cref="LuigiFeatureFlags"/>, only basic compatibility.</remarks> public static LuigiFeatureFlags ToLuigiFeatureFlags(this KeyboardComponentFeatures features) { var compatibilty = (FeatureCompatibility)features & FeatureCompatibilityHelpers.ValidFeaturesMask; var luigiFeatureFlags = compatibilty.ToLuigiFeatureFlags(FeatureCategory.KeyboardComponent); return(luigiFeatureFlags); }
/// <summary> /// Initializes a new instance of the KeyboardComponentFeaturesConfigurationPageViewModel type. /// </summary> public KeyboardComponentFeaturesConfigurationPageViewModel() { var selectableOptions = new KeyboardComponentFeatures[] { KeyboardComponentFeatures.Incompatible, KeyboardComponentFeatures.Tolerates, KeyboardComponentFeatures.Enhances, KeyboardComponentFeatures.Requires }; KeyboardComponentOptions = new ObservableCollection <ProgramFeatureImageViewModel>(selectableOptions.ToFeatureViewModels(KeyboardComponentFeatureSet.Data)); selectableOptions = new KeyboardComponentFeatures[] { KeyboardComponentFeatures.TapeOptional, KeyboardComponentFeatures.TapeRequired }; CassetteOptions = new ObservableCollection <ProgramFeatureImageViewModel>(selectableOptions.ToFeatureViewModels(KeyboardComponentFeatureSet.Data)); selectableOptions = new KeyboardComponentFeatures[] { KeyboardComponentFeatures.BasicIncompatible, KeyboardComponentFeatures.BasicTolerated, KeyboardComponentFeatures.BasicRequired }; BasicOptions = new ObservableCollection <ProgramFeatureImageViewModel>(selectableOptions.ToFeatureViewModels(KeyboardComponentFeatureSet.Data)); }
/// <inheritdoc /> public IProgramFeaturesBuilder WithKeyboardComponentFeatures(KeyboardComponentFeatures keyboardComponentFeatures) { _programFeatures.KeyboardComponent = keyboardComponentFeatures; return(this); }
/// <summary> /// Creates a new instance if the UnmergedProgram structure. /// </summary> /// <param name="code">INTV Funhouse code for the ROM.</param> /// <param name="title">The title of the program (typically title screen title).</param> /// <param name="vendor">Vendor who wrote the program.</param> /// <param name="year">The year the program was copyrighted (or released).</param> /// <param name="crcData">The CRC values of known versions of the program.</param> /// <param name="crcDescriptions">The descriptions of the known versions of the program for each CRC.</param> /// <param name="generalFeatures">Generic program features.</param> /// <param name="keyboardComponent">Keyboard component features.</param> internal UnmergedProgram(string code, string title, string vendor, string year, uint[] crcData, string[] crcDescriptions, GeneralFeatures generalFeatures, KeyboardComponentFeatures keyboardComponent) { Code = code; CrcData = crcData; CrcDescriptions = crcDescriptions; CrcCfgs = Enumerable.Repeat(-1, crcData.Count()).ToArray(); Year = year; Title = title; Vendor = vendor; Features = new ProgramFeatures(); Features.GeneralFeatures = generalFeatures; Features.KeyboardComponent = keyboardComponent; }