/// <summary> /// Gets the name used in a .cfg file for the given metadata ID tag. /// </summary> /// <param name="tag">The tag to get the name of.</param> /// <returns>The name used in a .cfg file for the tag.</returns> public static string ToCfgVarString(this CfgVarMetadataIdTag tag) { #if DEBUG // Sanity check the CfgVar table and enum. System.Diagnostics.Debug.Assert(!CfgVarIdTagNames.Any(e => string.IsNullOrEmpty(e.Value)), "There's an empty CFGVAR name!"); #endif var name = CfgVarIdTagNames.FirstOrDefault(e => e.Key == tag).Value; return(name); }
public void CfgVarMetadtaIdTag_ToCfgVarString_ProducesCorrectString(CfgVarMetadataIdTag idTag, string expectedCfgVarString) { var actualCfgVarString = idTag.ToCfgVarString(); Assert.Equal(expectedCfgVarString, actualCfgVarString); }
public void CfgVarMetadataIdTag_ConvertToLuigiMetadataIdTag_ProducesExpectedLuigiMetadataIdTag(CfgVarMetadataIdTag idTag, LuigiMetadataIdTag expectedLuigiMetadataIdTag, FeatureCategory expectedFeatureCategory, CfgVarMetadataIdTag expectedUnsupportedMetadataValue) { CfgVarMetadataIdTag actualUnsupportedMetadataValue; FeatureCategory actualFeatureCategory; var actualRomMetadataIdTag = idTag.ToLuigiMetadataIdTag(out actualFeatureCategory, out actualUnsupportedMetadataValue); Assert.Equal(expectedLuigiMetadataIdTag, actualRomMetadataIdTag); }
public void CfgVarMetadataIdTag_StringToCfgVarMetadataIdTag_ProducesCorrectCfgVarMetadataIdTag(CfgVarMetadataIdTag expectedIdTag, string stringToConvert) { var actualIdTag = stringToConvert.ToCfgVarMetadataIdTag(); Assert.Equal(expectedIdTag, actualIdTag); }
public void CfgVarMetadata_InflateLegacyCompatibility_GetsExpectedFeatureCompatibility(CfgVarMetadataIdTag legacyTag, string cfgFileValue, FeatureCompatibility expectedCfgVarMetadataFeatureCompatibilityValue) { var cfgLegacyFeatureCompatibilityEntry = legacyTag.ToCfgVarString() + " = " + cfgFileValue; using (var stream = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(cfgLegacyFeatureCompatibilityEntry))) { var cfgVarMetadataFeatureCompatibility = CfgVarMetadataBlock.Inflate(stream) as CfgVarMetadataFeatureCompatibility; Assert.Equal(expectedCfgVarMetadataFeatureCompatibilityValue, cfgVarMetadataFeatureCompatibility.Compatibility); } }
/// <summary> /// Initializes a new instance of the <see cref="INTV.Core.Model.CfgVarMetadataFeatureCompatibility"/> class. /// </summary> /// <param name="type">The specific kind of compatibility metadata.</param> public CfgVarMetadataFeatureCompatibility(CfgVarMetadataIdTag type) : base(type) { Compatibility = FeatureCompatibility.Tolerates; }
/// <summary> /// Converts a CFGVAR ID tag to a tuple of of LUIGI and other metadata identifiers. /// </summary> /// <param name="tag">The CFGVAR ID to convert.\.</param> /// <param name="feature">If <paramref name="tag"/> indicates a program feature, receives which type of feature.</param> /// <param name="cfgVarTag">If <paramref name="tag"/> indicates a value not directly part of LUIGI's metadata, nor its feature support.</param> /// <returns>The LUIGI metadata identifier tag.</returns> /// <remarks>All feature-related data is directly supported by the LUIGI format. Therefore, a CFG metadata tag /// that describes a feature will cause this function to return <see cref="LuigiMetadataIdTag.Miscellaneous"/> /// and set the specific feature in the <paramref name="feature"/> output. CFGVAR metadata that is not directly represented /// by the LUIGI format, nor its defined metadata tags, will cause this function to return <see cref="LuigiMetadataIdTag.Miscellaneous"/> /// and the original value of the <paramref name="tag"/> argument will be returned via <paramref name="cfgVarTag"/>.</remarks> public static LuigiMetadataIdTag ToLuigiMetadataIdTag(this CfgVarMetadataIdTag tag, out FeatureCategory feature, out CfgVarMetadataIdTag cfgVarTag) { cfgVarTag = CfgVarMetadataIdTag.Invalid; feature = FeatureCategory.None; var luigiTag = LuigiMetadataIdTag.Unknown; switch (tag) { case CfgVarMetadataIdTag.Name: luigiTag = LuigiMetadataIdTag.Name; break; case CfgVarMetadataIdTag.ShortName: luigiTag = LuigiMetadataIdTag.ShortName; break; case CfgVarMetadataIdTag.Author: luigiTag = LuigiMetadataIdTag.Author; break; case CfgVarMetadataIdTag.GameArt: luigiTag = LuigiMetadataIdTag.Graphics; break; case CfgVarMetadataIdTag.Music: luigiTag = LuigiMetadataIdTag.Music; break; case CfgVarMetadataIdTag.SoundEffects: luigiTag = LuigiMetadataIdTag.SoundEffects; break; case CfgVarMetadataIdTag.VoiceActing: luigiTag = LuigiMetadataIdTag.VoiceActing; break; case CfgVarMetadataIdTag.Documentation: luigiTag = LuigiMetadataIdTag.Documentation; break; case CfgVarMetadataIdTag.BoxOrOtherArtwork: luigiTag = LuigiMetadataIdTag.BoxOrOtherArtwork; break; case CfgVarMetadataIdTag.ConceptDesign: luigiTag = LuigiMetadataIdTag.ConceptDesign; break; case CfgVarMetadataIdTag.MoreInfo: luigiTag = LuigiMetadataIdTag.UrlContactInfo; break; case CfgVarMetadataIdTag.Publisher: luigiTag = LuigiMetadataIdTag.Publisher; break; case CfgVarMetadataIdTag.License: luigiTag = LuigiMetadataIdTag.License; break; case CfgVarMetadataIdTag.Description: luigiTag = LuigiMetadataIdTag.Description; break; case CfgVarMetadataIdTag.ReleaseDate: case CfgVarMetadataIdTag.Year: luigiTag = LuigiMetadataIdTag.Date; break; case CfgVarMetadataIdTag.BuildDate: cfgVarTag = tag; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.Version: cfgVarTag = tag; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.EcsCompatibility: feature = FeatureCategory.Ecs; break; case CfgVarMetadataIdTag.IntellivoiceCompatibility: feature = FeatureCategory.Intellivoice; break; case CfgVarMetadataIdTag.IntellivisionIICompatibility: feature = FeatureCategory.IntellivisionII; break; case CfgVarMetadataIdTag.KeyboardComponentCompatibility: feature = FeatureCategory.KeyboardComponent; break; case CfgVarMetadataIdTag.TutorvisionCompatibility: feature = FeatureCategory.Tutorvision; break; case CfgVarMetadataIdTag.Ecs: feature = FeatureCategory.EcsLegacy; break; case CfgVarMetadataIdTag.Voice: feature = FeatureCategory.IntellivoiceLegacy; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.IntellivisionII: feature = FeatureCategory.IntellivisionIILegacy; luigiTag = LuigiMetadataIdTag.Miscellaneous; break; case CfgVarMetadataIdTag.LtoFlashMapper: feature = FeatureCategory.LtoFlash; break; case CfgVarMetadataIdTag.JlpAccelerators: case CfgVarMetadataIdTag.Jlp: feature = FeatureCategory.Jlp; break; case CfgVarMetadataIdTag.JlpFlash: feature = FeatureCategory.JlpFlashCapacity; break; case CfgVarMetadataIdTag.Invalid: break; default: throw new InvalidOperationException(Resources.Strings.CfgVarMetadata_ToLuigiError); } return(luigiTag); }
/// <summary> /// Converts a CFGVAR ID tag to a tuple of ROM and other metadata identifiers. /// </summary> /// <param name="tag">The CFGVAR ID to convert.</param> /// <param name="feature">If <paramref name="tag"/> indicates a program feature, receives which type of feature.</param> /// <param name="cfgVarTag">If <paramref name="tag"/> indicates a value that does not have a corresponding ROM metadata ID tag, and is not a feature.</param> /// <returns>The ROM metadata identifier tag.</returns> public static RomMetadataIdTag ToRomMetadataIdTag(this CfgVarMetadataIdTag tag, out FeatureCategory feature, out CfgVarMetadataIdTag cfgVarTag) { cfgVarTag = CfgVarMetadataIdTag.Invalid; feature = FeatureCategory.None; var romTag = RomMetadataIdTag.Ignore; switch (tag) { case CfgVarMetadataIdTag.Name: romTag = RomMetadataIdTag.Title; break; case CfgVarMetadataIdTag.ShortName: romTag = RomMetadataIdTag.ShortTitle; break; case CfgVarMetadataIdTag.Author: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.GameArt: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.Music: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.SoundEffects: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.VoiceActing: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.Documentation: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.BoxOrOtherArtwork: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.ConceptDesign: cfgVarTag = tag; romTag = RomMetadataIdTag.Credits; break; case CfgVarMetadataIdTag.MoreInfo: romTag = RomMetadataIdTag.UrlContactInfo; break; case CfgVarMetadataIdTag.Publisher: romTag = RomMetadataIdTag.Publisher; break; case CfgVarMetadataIdTag.License: romTag = RomMetadataIdTag.License; break; case CfgVarMetadataIdTag.Description: romTag = RomMetadataIdTag.Description; break; case CfgVarMetadataIdTag.ReleaseDate: case CfgVarMetadataIdTag.Year: romTag = RomMetadataIdTag.ReleaseDate; break; case CfgVarMetadataIdTag.BuildDate: romTag = RomMetadataIdTag.BuildDate; break; case CfgVarMetadataIdTag.Version: romTag = RomMetadataIdTag.Version; break; case CfgVarMetadataIdTag.EcsCompatibility: feature = FeatureCategory.Ecs; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.IntellivoiceCompatibility: feature = FeatureCategory.Intellivoice; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.IntellivisionIICompatibility: feature = FeatureCategory.IntellivisionII; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.KeyboardComponentCompatibility: feature = FeatureCategory.KeyboardComponent; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.TutorvisionCompatibility: feature = FeatureCategory.Tutorvision; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.Ecs: feature = FeatureCategory.EcsLegacy; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.Voice: feature = FeatureCategory.IntellivoiceLegacy; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.IntellivisionII: feature = FeatureCategory.IntellivisionIILegacy; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.LtoFlashMapper: feature = FeatureCategory.LtoFlash; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.JlpAccelerators: case CfgVarMetadataIdTag.Jlp: feature = FeatureCategory.Jlp; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.JlpFlash: feature = FeatureCategory.JlpFlashCapacity; romTag = RomMetadataIdTag.Features; break; case CfgVarMetadataIdTag.Invalid: break; default: throw new InvalidOperationException(Resources.Strings.CfgVarMetadata_ToRomError); } return(romTag); }
/// <summary> /// Initializes a new instance of the <see cref="INTV.Core.Model.CfgVarMetadataBoolean"/> class. /// </summary> /// <param name="type">he specific kind of Boolean metadata.</param> public CfgVarMetadataBoolean(CfgVarMetadataIdTag type) : base(type) { }
/// <summary> /// Initializes a new instance of the <see cref="INTV.Core.Model.CfgVarMetadataString"/> class. /// </summary> /// <param name="type">The specific kind of string metadata.</param> public CfgVarMetadataString(CfgVarMetadataIdTag type) : base(type) { }
/// <summary> /// Initializes a new instance of the <see cref="INTV.Core.Model.CfgVarMetadataInteger"/> class. /// </summary> /// <param name="type">he specific kind of Boolean metadata.</param> public CfgVarMetadataInteger(CfgVarMetadataIdTag type) : base(type) { }
/// <summary> /// Initializes a new instance of the <see cref="INTV.Core.Model.CfgVarMetadataBlock"/> class. /// </summary> /// <param name="type">he specific kind of metadata.</param> protected CfgVarMetadataBlock(CfgVarMetadataIdTag type) { Type = type; }
/// <summary> /// Initializes a new instance of the <see cref="INTV.Core.Model.CfgVarMetadataDate"/> class. /// </summary> /// <param name="type">The specific kind of date metadata.</param> public CfgVarMetadataDate(CfgVarMetadataIdTag type) : base(type) { Date = MetadataDateTime.MinValue; }