コード例 #1
0
        /// <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);
        }
コード例 #2
0
        public void CfgVarMetadtaIdTag_ToCfgVarString_ProducesCorrectString(CfgVarMetadataIdTag idTag, string expectedCfgVarString)
        {
            var actualCfgVarString = idTag.ToCfgVarString();

            Assert.Equal(expectedCfgVarString, actualCfgVarString);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        public void CfgVarMetadataIdTag_StringToCfgVarMetadataIdTag_ProducesCorrectCfgVarMetadataIdTag(CfgVarMetadataIdTag expectedIdTag, string stringToConvert)
        {
            var actualIdTag = stringToConvert.ToCfgVarMetadataIdTag();

            Assert.Equal(expectedIdTag, actualIdTag);
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
 /// <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;
 }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        /// <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);
        }
コード例 #9
0
 /// <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)
 {
 }
コード例 #10
0
 /// <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)
 {
 }
コード例 #11
0
 /// <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)
 {
 }
コード例 #12
0
 /// <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;
 }
コード例 #13
0
 /// <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;
 }