diff --git a/RombaSharp/Features/BaseFeature.cs b/RombaSharp/Features/BaseFeature.cs index 76da9db8..e5260492 100644 --- a/RombaSharp/Features/BaseFeature.cs +++ b/RombaSharp/Features/BaseFeature.cs @@ -785,10 +785,11 @@ CREATE TABLE IF NOT EXISTS dat ( internal void AddDatToDatabase(Rom dat, SqliteConnection dbc) { // Get the dat full path + var machine = dat.GetFieldValue(DatItem.MachineKey); string fullpath = Path.Combine(_dats!, - (dat.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey) == "dats" + (machine!.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey) == "dats" ? string.Empty - : dat.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey))! + : machine!.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey))! , dat.GetName()!); // Parse the Dat if possible diff --git a/SabreTools.DatFiles/DatFile.FromMetadata.cs b/SabreTools.DatFiles/DatFile.FromMetadata.cs index 2e8ce182..c5ba4e1a 100644 --- a/SabreTools.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.DatFiles/DatFile.FromMetadata.cs @@ -218,8 +218,8 @@ namespace SabreTools.DatFiles // Selectively set all possible fields -- TODO: Figure out how to make this less manual if (Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey) == null) Header.SetFieldValue(Models.Metadata.Header.AuthorKey, header.GetStringFieldValue(Models.Metadata.Header.AuthorKey)); - if (Header.GetFieldValue(Models.Metadata.Header.BiosModeKey) == MergingFlag.None) - Header.SetFieldValue(Models.Metadata.Header.BiosModeKey, header.GetFieldValue(Models.Metadata.Header.BiosModeKey)); + if (Header.GetStringFieldValue(Models.Metadata.Header.BiosModeKey).AsEnumValue() == MergingFlag.None) + Header.SetFieldValue(Models.Metadata.Header.BiosModeKey, header.GetStringFieldValue(Models.Metadata.Header.BiosModeKey).AsEnumValue().AsStringValue()); if (Header.GetStringFieldValue(Models.Metadata.Header.BuildKey) == null) Header.SetFieldValue(Models.Metadata.Header.BuildKey, header.GetStringFieldValue(Models.Metadata.Header.BuildKey)); if (Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey) == null) @@ -238,12 +238,12 @@ namespace SabreTools.DatFiles Header.SetFieldValue(Models.Metadata.Header.EmailKey, header.GetStringFieldValue(Models.Metadata.Header.EmailKey)); if (Header.GetStringFieldValue(Models.Metadata.Header.EmulatorVersionKey) == null) Header.SetFieldValue(Models.Metadata.Header.EmulatorVersionKey, header.GetStringFieldValue(Models.Metadata.Header.EmulatorVersionKey)); - if (Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey) == MergingFlag.None) - Header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, header.GetFieldValue(Models.Metadata.Header.ForceMergingKey)); - if (Header.GetFieldValue(Models.Metadata.Header.ForceNodumpKey) == NodumpFlag.None) - Header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, header.GetFieldValue(Models.Metadata.Header.ForceNodumpKey)); - if (Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey) == PackingFlag.None) - Header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, header.GetFieldValue(Models.Metadata.Header.ForcePackingKey)); + if (Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() == MergingFlag.None) + Header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue()); + if (Header.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue() == NodumpFlag.None) + Header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, header.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue()); + if (Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() == PackingFlag.None) + Header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue()); if (Header.GetStringFieldValue(Models.Metadata.Header.HeaderKey) == null) Header.SetFieldValue(Models.Metadata.Header.HeaderKey, header.GetStringFieldValue(Models.Metadata.Header.HeaderKey)); if (Header.GetStringFieldValue(Models.Metadata.Header.HomepageKey) == null) @@ -266,14 +266,14 @@ namespace SabreTools.DatFiles Header.SetFieldValue(Models.Metadata.Header.PluginKey, header.GetStringFieldValue(Models.Metadata.Header.PluginKey)); if (Header.GetStringFieldValue(Models.Metadata.Header.RefNameKey) == null) Header.SetFieldValue(Models.Metadata.Header.RefNameKey, header.GetStringFieldValue(Models.Metadata.Header.RefNameKey)); - if (Header.GetFieldValue(Models.Metadata.Header.RomModeKey) == MergingFlag.None) - Header.SetFieldValue(Models.Metadata.Header.RomModeKey, header.GetFieldValue(Models.Metadata.Header.RomModeKey)); + if (Header.GetStringFieldValue(Models.Metadata.Header.RomModeKey).AsEnumValue() == MergingFlag.None) + Header.SetFieldValue(Models.Metadata.Header.RomModeKey, header.GetStringFieldValue(Models.Metadata.Header.RomModeKey).AsEnumValue().AsStringValue()); if (Header.GetStringFieldValue(Models.Metadata.Header.RomTitleKey) == null) Header.SetFieldValue(Models.Metadata.Header.RomTitleKey, header.GetStringFieldValue(Models.Metadata.Header.RomTitleKey)); if (Header.GetStringFieldValue(Models.Metadata.Header.RootDirKey) == null) Header.SetFieldValue(Models.Metadata.Header.RootDirKey, header.GetStringFieldValue(Models.Metadata.Header.RootDirKey)); - if (Header.GetFieldValue(Models.Metadata.Header.SampleModeKey) == MergingFlag.None) - Header.SetFieldValue(Models.Metadata.Header.SampleModeKey, header.GetFieldValue(Models.Metadata.Header.SampleModeKey)); + if (Header.GetStringFieldValue(Models.Metadata.Header.SampleModeKey).AsEnumValue() == MergingFlag.None) + Header.SetFieldValue(Models.Metadata.Header.SampleModeKey, header.GetStringFieldValue(Models.Metadata.Header.SampleModeKey).AsEnumValue().AsStringValue()); if (Header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsHeightKey) == null) Header.SetFieldValue(Models.Metadata.Header.ScreenshotsHeightKey, header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsHeightKey)); if (Header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsWidthKey) == null) diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index f8006220..a163b89c 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -413,13 +413,14 @@ namespace SabreTools.DatFiles } // Now do bulk replacement where possible + var machine = item.GetFieldValue(DatItem.MachineKey); fix = fix .Replace("%game%", game) .Replace("%machine%", game) .Replace("%name%", name) - .Replace("%manufacturer%", item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty) - .Replace("%publisher%", item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty) - .Replace("%category%", item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty) + .Replace("%manufacturer%", machine!.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty) + .Replace("%publisher%", machine!.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty) + .Replace("%category%", machine!.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty) .Replace("%crc%", crc) .Replace("%md5%", md5) .Replace("%sha1%", sha1) diff --git a/SabreTools.DatFiles/DatHeader.cs b/SabreTools.DatFiles/DatHeader.cs index da4c9a28..b5ad63b0 100644 --- a/SabreTools.DatFiles/DatHeader.cs +++ b/SabreTools.DatFiles/DatHeader.cs @@ -274,7 +274,7 @@ namespace SabreTools.DatFiles var header = new DatHeader(); header.SetFieldValue(DatHeader.AddExtensionKey, GetStringFieldValue(DatHeader.AddExtensionKey)); header.SetFieldValue(Models.Metadata.Header.AuthorKey, GetStringFieldValue(Models.Metadata.Header.AuthorKey)); - header.SetFieldValue(Models.Metadata.Header.BiosModeKey, GetFieldValue(Models.Metadata.Header.BiosModeKey)); + header.SetFieldValue(Models.Metadata.Header.BiosModeKey, GetStringFieldValue(Models.Metadata.Header.BiosModeKey).AsEnumValue().AsStringValue()); header.SetFieldValue(Models.Metadata.Header.BuildKey, GetStringFieldValue(Models.Metadata.Header.BuildKey)); header.SetFieldValue(Models.Metadata.Header.CanOpenKey, GetStringArrayFieldValue(Models.Metadata.Header.CanOpenKey)); // TODO: Perform a deep clone header.SetFieldValue(Models.Metadata.Header.CategoryKey, GetStringFieldValue(Models.Metadata.Header.CategoryKey)); @@ -286,9 +286,9 @@ namespace SabreTools.DatFiles header.SetFieldValue(Models.Metadata.Header.DescriptionKey, GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); header.SetFieldValue(Models.Metadata.Header.EmailKey, GetStringFieldValue(Models.Metadata.Header.EmailKey)); header.SetFieldValue(DatHeader.FileNameKey, GetStringFieldValue(DatHeader.FileNameKey)); - header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, GetFieldValue(Models.Metadata.Header.ForceMergingKey)); - header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, GetFieldValue(Models.Metadata.Header.ForceNodumpKey)); - header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, GetFieldValue(Models.Metadata.Header.ForcePackingKey)); + header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue()); + header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue()); + header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue()); header.SetFieldValue(DatHeader.GameNameKey, GetBoolFieldValue(DatHeader.GameNameKey)); header.SetFieldValue(Models.Metadata.Header.HeaderKey, GetStringFieldValue(Models.Metadata.Header.HeaderKey)); header.SetFieldValue(Models.Metadata.Header.HomepageKey, GetStringFieldValue(Models.Metadata.Header.HomepageKey)); @@ -307,9 +307,9 @@ namespace SabreTools.DatFiles header.SetFieldValue(DatHeader.RemoveExtensionKey, GetBoolFieldValue(DatHeader.RemoveExtensionKey)); header.SetFieldValue(DatHeader.ReplaceExtensionKey, GetStringFieldValue(DatHeader.ReplaceExtensionKey)); header.SetFieldValue(Models.Metadata.Header.RomTitleKey, GetStringFieldValue(Models.Metadata.Header.RomTitleKey)); - header.SetFieldValue(Models.Metadata.Header.RomModeKey, GetFieldValue(Models.Metadata.Header.RomModeKey)); + header.SetFieldValue(Models.Metadata.Header.RomModeKey, GetStringFieldValue(Models.Metadata.Header.RomModeKey).AsEnumValue().AsStringValue()); header.SetFieldValue(Models.Metadata.Header.RootDirKey, GetStringFieldValue(Models.Metadata.Header.RootDirKey)); - header.SetFieldValue(Models.Metadata.Header.SampleModeKey, GetFieldValue(Models.Metadata.Header.SampleModeKey)); + header.SetFieldValue(Models.Metadata.Header.SampleModeKey, GetStringFieldValue(Models.Metadata.Header.SampleModeKey).AsEnumValue().AsStringValue()); header.SetFieldValue(Models.Metadata.Header.ScreenshotsHeightKey, GetStringFieldValue(Models.Metadata.Header.ScreenshotsHeightKey)); header.SetFieldValue(Models.Metadata.Header.ScreenshotsWidthKey, GetStringFieldValue(Models.Metadata.Header.ScreenshotsWidthKey)); header.SetFieldValue(Models.Metadata.Header.SystemKey, GetStringFieldValue(Models.Metadata.Header.SystemKey)); @@ -335,9 +335,9 @@ namespace SabreTools.DatFiles header.SetFieldValue(Models.Metadata.Header.DescriptionKey, GetStringFieldValue(Models.Metadata.Header.DescriptionKey)); header.SetFieldValue(Models.Metadata.Header.EmailKey, GetStringFieldValue(Models.Metadata.Header.EmailKey)); header.SetFieldValue(DatHeader.FileNameKey, GetStringFieldValue(DatHeader.FileNameKey)); - header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, GetFieldValue(Models.Metadata.Header.ForceMergingKey)); - header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, GetFieldValue(Models.Metadata.Header.ForceNodumpKey)); - header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, GetFieldValue(Models.Metadata.Header.ForcePackingKey)); + header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue()); + header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue()); + header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue()); header.SetFieldValue(Models.Metadata.Header.HeaderKey, GetStringFieldValue(Models.Metadata.Header.HeaderKey)); header.SetFieldValue(Models.Metadata.Header.HomepageKey, GetStringFieldValue(Models.Metadata.Header.HomepageKey)); header.SetFieldValue(Models.Metadata.Header.NameKey, GetStringFieldValue(Models.Metadata.Header.NameKey)); @@ -421,14 +421,14 @@ namespace SabreTools.DatFiles if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.TypeKey))) SetFieldValue(Models.Metadata.Header.TypeKey, datHeader.GetStringFieldValue(Models.Metadata.Header.TypeKey)); - if (datHeader.GetFieldValue(Models.Metadata.Header.ForceMergingKey) != MergingFlag.None) - SetFieldValue(Models.Metadata.Header.ForceMergingKey, datHeader.GetFieldValue(Models.Metadata.Header.ForceMergingKey)); + if (datHeader.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() != MergingFlag.None) + SetFieldValue(Models.Metadata.Header.ForceMergingKey, datHeader.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue()); - if (datHeader.GetFieldValue(Models.Metadata.Header.ForceNodumpKey) != NodumpFlag.None) - SetFieldValue(Models.Metadata.Header.ForceNodumpKey, datHeader.GetFieldValue(Models.Metadata.Header.ForceNodumpKey)); + if (datHeader.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue() != NodumpFlag.None) + SetFieldValue(Models.Metadata.Header.ForceNodumpKey, datHeader.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue()); - if (datHeader.GetFieldValue(Models.Metadata.Header.ForcePackingKey) != PackingFlag.None) - SetFieldValue(Models.Metadata.Header.ForcePackingKey, datHeader.GetFieldValue(Models.Metadata.Header.ForcePackingKey)); + if (datHeader.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() != PackingFlag.None) + SetFieldValue(Models.Metadata.Header.ForcePackingKey, datHeader.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue()); if (datHeader.GetFieldValue(DatHeader.DatFormatKey) != 0x00) SetFieldValue(DatHeader.DatFormatKey, datHeader.GetFieldValue(DatHeader.DatFormatKey)); diff --git a/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs b/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs index 68933043..e9559ef1 100644 --- a/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs +++ b/SabreTools.DatFiles/Formats/ClrMamePro.Writer.cs @@ -98,7 +98,7 @@ namespace SabreTools.DatFiles.Formats break; case Display display: - if (display.GetFieldValue(Models.Metadata.Display.DisplayTypeKey) == DisplayType.NULL) + if (display.GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey).AsEnumValue() == DisplayType.NULL) missingFields.Add(Models.Metadata.Display.DisplayTypeKey); if (display.GetInt64FieldValue(Models.Metadata.Display.RotateKey) == null) missingFields.Add(Models.Metadata.Display.RotateKey); @@ -122,9 +122,9 @@ namespace SabreTools.DatFiles.Formats break; case Driver driver: - if (driver.GetFieldValue(Models.Metadata.Driver.StatusKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.StatusKey); - if (driver.GetFieldValue(Models.Metadata.Driver.EmulationKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.EmulationKey); break; } diff --git a/SabreTools.DatFiles/Formats/Listxml.Writer.cs b/SabreTools.DatFiles/Formats/Listxml.Writer.cs index ce13b7a7..cae34dbe 100644 --- a/SabreTools.DatFiles/Formats/Listxml.Writer.cs +++ b/SabreTools.DatFiles/Formats/Listxml.Writer.cs @@ -94,7 +94,7 @@ namespace SabreTools.DatFiles.Formats break; case Display display: - if (display.GetFieldValue(Models.Metadata.Display.DisplayTypeKey) == DisplayType.NULL) + if (display.GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey).AsEnumValue() == DisplayType.NULL) missingFields.Add(Models.Metadata.Display.DisplayTypeKey); if (display.GetDoubleFieldValue(Models.Metadata.Display.RefreshKey) == null) missingFields.Add(Models.Metadata.Display.RefreshKey); @@ -135,23 +135,23 @@ namespace SabreTools.DatFiles.Formats break; case Driver driver: - if (driver.GetFieldValue(Models.Metadata.Driver.StatusKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.StatusKey); - if (driver.GetFieldValue(Models.Metadata.Driver.EmulationKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.EmulationKey); - if (driver.GetFieldValue(Models.Metadata.Driver.CocktailKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.CocktailKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.CocktailKey); - if (driver.GetFieldValue(Models.Metadata.Driver.SaveStateKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.SaveStateKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.SaveStateKey); break; case Feature feature: - if (feature.GetFieldValue(Models.Metadata.Feature.FeatureTypeKey) == FeatureType.NULL) + if (feature.GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey).AsEnumValue() == FeatureType.NULL) missingFields.Add(Models.Metadata.Feature.FeatureTypeKey); break; case Device device: - if (device.GetFieldValue(Models.Metadata.Device.DeviceTypeKey) != DeviceType.NULL) + if (device.GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey).AsEnumValue() != DeviceType.NULL) missingFields.Add(Models.Metadata.Device.DeviceTypeKey); break; @@ -165,7 +165,7 @@ namespace SabreTools.DatFiles.Formats missingFields.Add(Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(Models.Metadata.SoftwareList.NameKey); - if (softwarelist.GetFieldValue(Models.Metadata.SoftwareList.StatusKey) == SoftwareListStatus.None) + if (softwarelist.GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey).AsEnumValue() == SoftwareListStatus.None) missingFields.Add(Models.Metadata.SoftwareList.StatusKey); break; @@ -609,7 +609,7 @@ namespace SabreTools.DatFiles.Formats { Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey), Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey), - Relation = conditionItem?.GetFieldValue(Models.Metadata.Condition.RelationKey).AsStringValue(), + Relation = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.RelationKey).AsEnumValue().AsStringValue(), Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey), }; dipswitch.Condition = condition; @@ -672,7 +672,7 @@ namespace SabreTools.DatFiles.Formats { Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey), Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey), - Relation = conditionItem?.GetFieldValue(Models.Metadata.Condition.RelationKey).AsStringValue(), + Relation = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.RelationKey).AsEnumValue().AsStringValue(), Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey), }; dipvalue.Condition = condition; @@ -700,7 +700,7 @@ namespace SabreTools.DatFiles.Formats { Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey), Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey), - Relation = conditionItem?.GetFieldValue(Models.Metadata.Condition.RelationKey).AsStringValue(), + Relation = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.RelationKey).AsEnumValue().AsStringValue(), Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey), }; configuration.Condition = condition; @@ -763,7 +763,7 @@ namespace SabreTools.DatFiles.Formats { Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey), Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey), - Relation = conditionItem?.GetFieldValue(Models.Metadata.Condition.RelationKey).AsStringValue(), + Relation = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.RelationKey).AsEnumValue().AsStringValue(), Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey), }; confsetting.Condition = condition; @@ -803,7 +803,7 @@ namespace SabreTools.DatFiles.Formats { Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey), Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey), - Relation = conditionItem?.GetFieldValue(Models.Metadata.Condition.RelationKey).AsStringValue(), + Relation = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.RelationKey).AsEnumValue().AsStringValue(), Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey), }; adjuster.Condition = condition; @@ -819,13 +819,13 @@ namespace SabreTools.DatFiles.Formats { var driver = new Models.Listxml.Driver { - Status = item.GetFieldValue(Models.Metadata.Driver.StatusKey).AsStringValue(), - Color = item.GetFieldValue(Models.Metadata.Driver.ColorKey).AsStringValue(), - Sound = item.GetFieldValue(Models.Metadata.Driver.SoundKey).AsStringValue(), + Status = item.GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue().AsStringValue(), + Color = item.GetStringFieldValue(Models.Metadata.Driver.ColorKey).AsEnumValue().AsStringValue(), + Sound = item.GetStringFieldValue(Models.Metadata.Driver.SoundKey).AsEnumValue().AsStringValue(), PaletteSize = item.GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey)?.ToString(), - Emulation = item.GetFieldValue(Models.Metadata.Driver.EmulationKey).AsStringValue(), - Cocktail = item.GetFieldValue(Models.Metadata.Driver.CocktailKey).AsStringValue(), - SaveState = item.GetFieldValue(Models.Metadata.Driver.SaveStateKey).AsStringValue(useSecond: true), + Emulation = item.GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue().AsStringValue(), + Cocktail = item.GetStringFieldValue(Models.Metadata.Driver.CocktailKey).AsEnumValue().AsStringValue(), + SaveState = item.GetStringFieldValue(Models.Metadata.Driver.SaveStateKey).AsEnumValue().AsStringValue(useSecond: true), RequiresArtwork = item.GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo(), Unofficial = item.GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey).FromYesNo(), NoSoundHardware = item.GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo(), @@ -842,9 +842,9 @@ namespace SabreTools.DatFiles.Formats { var feature = new Models.Listxml.Feature { - Type = item.GetFieldValue(Models.Metadata.Feature.FeatureTypeKey).AsStringValue(), - Status = item.GetFieldValue(Models.Metadata.Feature.StatusKey).AsStringValue(), - Overall = item.GetFieldValue(Models.Metadata.Feature.OverallKey).AsStringValue(), + Type = item.GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey).AsEnumValue().AsStringValue(), + Status = item.GetStringFieldValue(Models.Metadata.Feature.StatusKey).AsEnumValue().AsStringValue(), + Overall = item.GetStringFieldValue(Models.Metadata.Feature.OverallKey).AsEnumValue().AsStringValue(), }; return feature; @@ -857,7 +857,7 @@ namespace SabreTools.DatFiles.Formats { var device = new Models.Listxml.Device { - Type = item.GetFieldValue(Models.Metadata.Device.DeviceTypeKey).AsStringValue(), + Type = item.GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey).AsEnumValue().AsStringValue(), Tag = item.GetStringFieldValue(Models.Metadata.Device.TagKey), FixedImage = item.GetStringFieldValue(Models.Metadata.Device.FixedImageKey), Mandatory = item.GetInt64FieldValue(Models.Metadata.Device.MandatoryKey)?.ToString(), @@ -928,7 +928,7 @@ namespace SabreTools.DatFiles.Formats { Tag = item.GetStringFieldValue(Models.Metadata.SoftwareList.TagKey), Name = item.GetName(), - Status = item.GetFieldValue(Models.Metadata.SoftwareList.StatusKey).AsStringValue(), + Status = item.GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey).AsEnumValue().AsStringValue(), Filter = item.GetStringFieldValue(Models.Metadata.SoftwareList.FilterKey), }; diff --git a/SabreTools.DatFiles/Formats/Logiqx.Writer.cs b/SabreTools.DatFiles/Formats/Logiqx.Writer.cs index 76ef8ec3..34f775cf 100644 --- a/SabreTools.DatFiles/Formats/Logiqx.Writer.cs +++ b/SabreTools.DatFiles/Formats/Logiqx.Writer.cs @@ -103,13 +103,13 @@ namespace SabreTools.DatFiles.Formats break; case Driver driver: - if (driver.GetFieldValue(Models.Metadata.Driver.StatusKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.StatusKey); - if (driver.GetFieldValue(Models.Metadata.Driver.EmulationKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.EmulationKey); - if (driver.GetFieldValue(Models.Metadata.Driver.CocktailKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.CocktailKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.CocktailKey); - if (driver.GetFieldValue(Models.Metadata.Driver.SaveStateKey) == SupportStatus.NULL) + if (driver.GetStringFieldValue(Models.Metadata.Driver.SaveStateKey).AsEnumValue() == SupportStatus.NULL) missingFields.Add(Models.Metadata.Driver.SaveStateKey); break; @@ -118,7 +118,7 @@ namespace SabreTools.DatFiles.Formats missingFields.Add(Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(Models.Metadata.SoftwareList.NameKey); - if (softwarelist.GetFieldValue(Models.Metadata.SoftwareList.StatusKey) == SoftwareListStatus.None) + if (softwarelist.GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey).AsEnumValue() == SoftwareListStatus.None) missingFields.Add(Models.Metadata.SoftwareList.StatusKey); break; } @@ -219,9 +219,9 @@ namespace SabreTools.DatFiles.Formats private Models.Logiqx.ClrMamePro? CreateClrMamePro() { // If we don't have subheader values, we can't do anything - if (Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey) == MergingFlag.None - && Header.GetFieldValue(Models.Metadata.Header.ForceNodumpKey) == NodumpFlag.None - && Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey) == PackingFlag.None + if (Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() == MergingFlag.None + && Header.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue() == NodumpFlag.None + && Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() == PackingFlag.None && string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.HeaderKey))) { return null; @@ -232,12 +232,12 @@ namespace SabreTools.DatFiles.Formats Header = Header.GetStringFieldValue(Models.Metadata.Header.HeaderKey), }; - if (Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey) != MergingFlag.None) - subheader.ForceMerging = Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey).AsStringValue(useSecond: false); - if (Header.GetFieldValue(Models.Metadata.Header.ForceNodumpKey) != NodumpFlag.None) - subheader.ForceNodump = Header.GetFieldValue(Models.Metadata.Header.ForceNodumpKey).AsStringValue(); - if (Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey) != PackingFlag.None) - subheader.ForcePacking = Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey).AsStringValue(useSecond: false); + if (Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() != MergingFlag.None) + subheader.ForceMerging = Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue(useSecond: false); + if (Header.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue() != NodumpFlag.None) + subheader.ForceNodump = Header.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue(); + if (Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() != PackingFlag.None) + subheader.ForcePacking = Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue(useSecond: false); return subheader; } @@ -249,12 +249,12 @@ namespace SabreTools.DatFiles.Formats { // If we don't have subheader values, we can't do anything if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.SystemKey)) - && Header.GetFieldValue(Models.Metadata.Header.BiosModeKey) == MergingFlag.None + && Header.GetStringFieldValue(Models.Metadata.Header.BiosModeKey).AsEnumValue() == MergingFlag.None && Header.GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey) == null && Header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey) == null && Header.GetBoolFieldValue(Models.Metadata.Header.LockSampleModeKey) == null - && Header.GetFieldValue(Models.Metadata.Header.RomModeKey) == MergingFlag.None - && Header.GetFieldValue(Models.Metadata.Header.SampleModeKey) == MergingFlag.None) + && Header.GetStringFieldValue(Models.Metadata.Header.RomModeKey).AsEnumValue() == MergingFlag.None + && Header.GetStringFieldValue(Models.Metadata.Header.SampleModeKey).AsEnumValue() == MergingFlag.None) { return null; } @@ -264,12 +264,12 @@ namespace SabreTools.DatFiles.Formats Plugin = Header.GetStringFieldValue(Models.Metadata.Header.PluginKey), }; - if (Header.GetFieldValue(Models.Metadata.Header.RomModeKey) != MergingFlag.None) - subheader.RomMode = Header.GetFieldValue(Models.Metadata.Header.RomModeKey).AsStringValue(useSecond: true); - if (Header.GetFieldValue(Models.Metadata.Header.BiosModeKey) != MergingFlag.None) - subheader.BiosMode = Header.GetFieldValue(Models.Metadata.Header.BiosModeKey).AsStringValue(useSecond: true); - if (Header.GetFieldValue(Models.Metadata.Header.SampleModeKey) != MergingFlag.None) - subheader.SampleMode = Header.GetFieldValue(Models.Metadata.Header.SampleModeKey).AsStringValue(useSecond: true); + if (Header.GetStringFieldValue(Models.Metadata.Header.RomModeKey).AsEnumValue() != MergingFlag.None) + subheader.RomMode = Header.GetStringFieldValue(Models.Metadata.Header.RomModeKey).AsEnumValue().AsStringValue(useSecond: true); + if (Header.GetStringFieldValue(Models.Metadata.Header.BiosModeKey).AsEnumValue() != MergingFlag.None) + subheader.BiosMode = Header.GetStringFieldValue(Models.Metadata.Header.BiosModeKey).AsEnumValue().AsStringValue(useSecond: true); + if (Header.GetStringFieldValue(Models.Metadata.Header.SampleModeKey).AsEnumValue() != MergingFlag.None) + subheader.SampleMode = Header.GetStringFieldValue(Models.Metadata.Header.SampleModeKey).AsEnumValue().AsStringValue(useSecond: true); if (Header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey) != null) subheader.LockRomMode = Header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey).FromYesNo(); @@ -404,7 +404,7 @@ namespace SabreTools.DatFiles.Formats game.RebuildTo = machine.GetStringFieldValue(Models.Metadata.Machine.RebuildToKey); game.Id = machine.GetStringFieldValue(Models.Metadata.Machine.IdKey); game.CloneOfId = machine.GetStringFieldValue(Models.Metadata.Machine.CloneOfIdKey); - game.Runnable = machine.GetFieldValue(Models.Metadata.Machine.RunnableKey).AsStringValue(); + game.Runnable = machine.GetStringFieldValue(Models.Metadata.Machine.RunnableKey).AsEnumValue().AsStringValue(); if (machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey) != null) { if (machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey)!.Contains(';')) @@ -611,10 +611,10 @@ namespace SabreTools.DatFiles.Formats { var driver = new Models.Logiqx.Driver { - Status = item.GetFieldValue(Models.Metadata.Driver.StatusKey).AsStringValue(), - Emulation = item.GetFieldValue(Models.Metadata.Driver.EmulationKey).AsStringValue(), - Cocktail = item.GetFieldValue(Models.Metadata.Driver.CocktailKey).AsStringValue(), - SaveState = item.GetFieldValue(Models.Metadata.Driver.SaveStateKey).AsStringValue(useSecond: true), + Status = item.GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue().AsStringValue(), + Emulation = item.GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue().AsStringValue(), + Cocktail = item.GetStringFieldValue(Models.Metadata.Driver.CocktailKey).AsEnumValue().AsStringValue(), + SaveState = item.GetStringFieldValue(Models.Metadata.Driver.SaveStateKey).AsEnumValue().AsStringValue(useSecond: true), RequiresArtwork = item.GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo(), Unofficial = item.GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey).FromYesNo(), NoSoundHardware = item.GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo(), @@ -636,8 +636,8 @@ namespace SabreTools.DatFiles.Formats Filter = item.GetStringFieldValue(Models.Metadata.SoftwareList.FilterKey), }; - if (item.GetFieldValue(Models.Metadata.SoftwareList.StatusKey) != SoftwareListStatus.None) - softwarelist.Status = item.GetFieldValue(Models.Metadata.SoftwareList.StatusKey).AsStringValue(); + if (item.GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey).AsEnumValue() != SoftwareListStatus.None) + softwarelist.Status = item.GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey).AsEnumValue().AsStringValue(); return softwarelist; } diff --git a/SabreTools.DatFiles/Formats/OpenMSX.Writer.cs b/SabreTools.DatFiles/Formats/OpenMSX.Writer.cs index 4ba11837..5977eba1 100644 --- a/SabreTools.DatFiles/Formats/OpenMSX.Writer.cs +++ b/SabreTools.DatFiles/Formats/OpenMSX.Writer.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using SabreTools.Core; +using SabreTools.Core.Tools; using SabreTools.DatItems; using SabreTools.DatItems.Formats; @@ -158,7 +159,7 @@ namespace SabreTools.DatFiles.Formats original.Value = item.GetFieldValue("ORIGINAL")!.Value.ToString(); } - Models.OpenMSX.RomBase rom = item.GetFieldValue(Models.Metadata.Rom.OpenMSXMediaType) switch + Models.OpenMSX.RomBase rom = item.GetStringFieldValue(Models.Metadata.Rom.OpenMSXMediaType).AsEnumValue() switch { OpenMSXSubType.MegaRom => new Models.OpenMSX.MegaRom(), OpenMSXSubType.SCCPlusCart => new Models.OpenMSX.SCCPlusCart(), diff --git a/SabreTools.DatFiles/Formats/RomCenter.Writer.cs b/SabreTools.DatFiles/Formats/RomCenter.Writer.cs index 51d414fd..1d2efa1e 100644 --- a/SabreTools.DatFiles/Formats/RomCenter.Writer.cs +++ b/SabreTools.DatFiles/Formats/RomCenter.Writer.cs @@ -113,8 +113,9 @@ namespace SabreTools.DatFiles.Formats { Version = Header.GetStringFieldValue(Models.Metadata.Header.DatVersionKey), Plugin = Header.GetStringFieldValue(Models.Metadata.Header.SystemKey), - Split = (Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey) == MergingFlag.Split ? "1" : "0"), - Merge = (Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey) == MergingFlag.Merged || Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey) == MergingFlag.FullMerged ? "1" : "0"), + Split = (Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() == MergingFlag.Split ? "1" : "0"), + Merge = (Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() == MergingFlag.Merged + || Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() == MergingFlag.FullMerged ? "1" : "0"), }; return dat; } diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs index 68c44622..a0300974 100644 --- a/SabreTools.DatItems/Formats/Rom.cs +++ b/SabreTools.DatItems/Formats/Rom.cs @@ -64,7 +64,7 @@ namespace SabreTools.DatItems.Formats && (!string.IsNullOrEmpty(dataArea.GetName()) || dataArea.GetInt64FieldValue(Models.Metadata.DataArea.SizeKey) != null || dataArea.GetInt64FieldValue(Models.Metadata.DataArea.WidthKey) != null - || dataArea.GetFieldValue(Models.Metadata.DataArea.EndiannessKey) != Endianness.NULL); + || dataArea.GetStringFieldValue(Models.Metadata.DataArea.EndiannessKey).AsEnumValue() != Endianness.NULL); } } diff --git a/SabreTools.DatTools/Rebuilder.cs b/SabreTools.DatTools/Rebuilder.cs index 3338dca6..00c3e420 100644 --- a/SabreTools.DatTools/Rebuilder.cs +++ b/SabreTools.DatTools/Rebuilder.cs @@ -65,8 +65,8 @@ namespace SabreTools.DatTools outDir = outDir.Ensure(create: true); // Now we want to get forcepack flag if it's not overridden - if (outputFormat == OutputFormat.Folder && datFile.Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey) != PackingFlag.None) - outputFormat = GetOutputFormat(datFile.Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey)); + if (outputFormat == OutputFormat.Folder && datFile.Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() != PackingFlag.None) + outputFormat = GetOutputFormat(datFile.Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue()); #endregion @@ -219,8 +219,8 @@ namespace SabreTools.DatTools } // Now we want to get forcepack flag if it's not overridden - if (outputFormat == OutputFormat.Folder && datFile.Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey) != PackingFlag.None) - outputFormat = GetOutputFormat(datFile.Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey)); + if (outputFormat == OutputFormat.Folder && datFile.Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() != PackingFlag.None) + outputFormat = GetOutputFormat(datFile.Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue()); #endregion @@ -427,7 +427,7 @@ namespace SabreTools.DatTools // Special case for partial packing mode bool shouldCheck = false; - if (outputFormat == OutputFormat.Folder && datFile.Header.GetFieldValue(Models.Metadata.Header.ForcePackingKey) == PackingFlag.Partial) + if (outputFormat == OutputFormat.Folder && datFile.Header.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() == PackingFlag.Partial) { shouldCheck = true; datFile.Items.BucketBy(ItemKey.Machine, DedupeType.None, lower: false); diff --git a/SabreTools.Filtering/Splitter.cs b/SabreTools.Filtering/Splitter.cs index 9bace243..f559ba36 100644 --- a/SabreTools.Filtering/Splitter.cs +++ b/SabreTools.Filtering/Splitter.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Linq; - using SabreTools.Core; +using SabreTools.Core.Tools; using SabreTools.DatFiles; using SabreTools.DatItems; using SabreTools.DatItems.Formats; @@ -53,7 +53,7 @@ namespace SabreTools.Filtering { // If we are using tags from the DAT, set the proper input for split type unless overridden if (useTags && SplitType == MergingFlag.None) - SplitType = datFile.Header.GetFieldValue(Models.Metadata.Header.ForceMergingKey); + SplitType = datFile.Header.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue(); // Run internal splitting switch (SplitType)