Handle internal implementations better (nw)

This commit is contained in:
Matt Nadareski
2025-01-11 22:00:26 -05:00
parent 4f6354802f
commit 457ddf67d9
35 changed files with 1845 additions and 924 deletions

View File

@@ -799,6 +799,26 @@ namespace SabreTools.Core
#endregion
#region Reading
/// <summary>
/// Read an item array from a given key, if possible
/// </summary>
public static T[]? ReadItemArray<T>(this DictionaryBase self, string key) where T : DictionaryBase
{
var items = self.Read<T[]>(key);
if (items == default)
{
var single = self.Read<T>(key);
if (single != default)
items = [single];
}
return items;
}
#endregion
#region Suffix Generation
/// <summary>

View File

@@ -37,7 +37,7 @@ namespace SabreTools.DatFiles.Test
[Fact]
public void ConvertFromMetadata_FilledHeader()
{
Models.Metadata.Header? header = CreateHeader();
Models.Metadata.Header? header = CreateMetadataHeader();
Models.Metadata.Machine[]? machines = null;
Models.Metadata.MetadataFile? item = new Models.Metadata.MetadataFile
{
@@ -55,7 +55,7 @@ namespace SabreTools.DatFiles.Test
public void ConvertFromMetadata_FilledMachine()
{
Models.Metadata.Header? header = null;
Models.Metadata.Machine machine = CreateMachine();
Models.Metadata.Machine machine = CreateMetadataMachine();
Models.Metadata.Machine[]? machines = [machine];
Models.Metadata.MetadataFile? item = new Models.Metadata.MetadataFile
{
@@ -184,7 +184,7 @@ namespace SabreTools.DatFiles.Test
#region Creation Helpers
private static Models.Metadata.Header CreateHeader()
private static Models.Metadata.Header CreateMetadataHeader()
{
Models.OfflineList.CanOpen canOpen = new Models.OfflineList.CanOpen
{
@@ -248,101 +248,101 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Machine CreateMachine()
private static Models.Metadata.Machine CreateMetadataMachine()
{
return new Models.Metadata.Machine
{
[Models.Metadata.Machine.AdjusterKey] = new Models.Metadata.Adjuster[] { CreateAdjuster() },
[Models.Metadata.Machine.ArchiveKey] = new Models.Metadata.Archive[] { CreateArchive() },
[Models.Metadata.Machine.BiosSetKey] = new Models.Metadata.BiosSet[] { CreateBiosSet() },
[Models.Metadata.Machine.AdjusterKey] = new Models.Metadata.Adjuster[] { CreateMetadataAdjuster() },
[Models.Metadata.Machine.ArchiveKey] = new Models.Metadata.Archive[] { CreateMetadataArchive() },
[Models.Metadata.Machine.BiosSetKey] = new Models.Metadata.BiosSet[] { CreateMetadataBiosSet() },
[Models.Metadata.Machine.BoardKey] = "board",
[Models.Metadata.Machine.ButtonsKey] = "buttons",
[Models.Metadata.Machine.CategoryKey] = "category",
[Models.Metadata.Machine.ChipKey] = new Models.Metadata.Chip[] { CreateChip() },
[Models.Metadata.Machine.ChipKey] = new Models.Metadata.Chip[] { CreateMetadataChip() },
[Models.Metadata.Machine.CloneOfKey] = "cloneof",
[Models.Metadata.Machine.CloneOfIdKey] = "cloneofid",
[Models.Metadata.Machine.CommentKey] = "comment",
[Models.Metadata.Machine.CompanyKey] = "company",
[Models.Metadata.Machine.ConfigurationKey] = new Models.Metadata.Configuration[] { CreateConfiguration() },
[Models.Metadata.Machine.ConfigurationKey] = new Models.Metadata.Configuration[] { CreateMetadataConfiguration() },
[Models.Metadata.Machine.ControlKey] = "control",
[Models.Metadata.Machine.CountryKey] = "country",
[Models.Metadata.Machine.DescriptionKey] = "description",
[Models.Metadata.Machine.DeviceKey] = new Models.Metadata.Device[] { CreateDevice() },
[Models.Metadata.Machine.DeviceRefKey] = new Models.Metadata.DeviceRef[] { CreateDeviceRef() },
[Models.Metadata.Machine.DipSwitchKey] = new Models.Metadata.DipSwitch[] { CreateDipSwitch() },
[Models.Metadata.Machine.DeviceKey] = new Models.Metadata.Device[] { CreateMetadataDevice() },
[Models.Metadata.Machine.DeviceRefKey] = new Models.Metadata.DeviceRef[] { CreateMetadataDeviceRef() },
[Models.Metadata.Machine.DipSwitchKey] = new Models.Metadata.DipSwitch[] { CreateMetadataDipSwitch() },
[Models.Metadata.Machine.DirNameKey] = "dirname",
[Models.Metadata.Machine.DiskKey] = new Models.Metadata.Disk[] { CreateDisk() },
[Models.Metadata.Machine.DiskKey] = new Models.Metadata.Disk[] { CreateMetadataDisk() },
[Models.Metadata.Machine.DisplayCountKey] = "displaycount",
[Models.Metadata.Machine.DisplayKey] = new Models.Metadata.Display[] { CreateDisplay() },
[Models.Metadata.Machine.DisplayKey] = new Models.Metadata.Display[] { CreateMetadataDisplay() },
[Models.Metadata.Machine.DisplayTypeKey] = "displaytype",
[Models.Metadata.Machine.DriverKey] = CreateDriver(),
[Models.Metadata.Machine.DumpKey] = new Models.Metadata.Dump[] { CreateDump() },
[Models.Metadata.Machine.DriverKey] = CreateMetadataDriver(),
[Models.Metadata.Machine.DumpKey] = new Models.Metadata.Dump[] { CreateMetadataDump() },
[Models.Metadata.Machine.DuplicateIDKey] = "duplicateid",
[Models.Metadata.Machine.EmulatorKey] = "emulator",
[Models.Metadata.Machine.ExtraKey] = "extra",
[Models.Metadata.Machine.FavoriteKey] = "favorite",
[Models.Metadata.Machine.FeatureKey] = new Models.Metadata.Feature[] { CreateFeature() },
[Models.Metadata.Machine.FeatureKey] = new Models.Metadata.Feature[] { CreateMetadataFeature() },
[Models.Metadata.Machine.GenMSXIDKey] = "genmsxid",
[Models.Metadata.Machine.HistoryKey] = "history",
[Models.Metadata.Machine.IdKey] = "id",
[Models.Metadata.Machine.Im1CRCKey] = ZeroHash.CRC32Str,
[Models.Metadata.Machine.Im2CRCKey] = ZeroHash.CRC32Str,
[Models.Metadata.Machine.ImageNumberKey] = "imagenumber",
[Models.Metadata.Machine.InfoKey] = new Models.Metadata.Info[] { CreateInfo() },
[Models.Metadata.Machine.InputKey] = CreateInput(),
[Models.Metadata.Machine.InfoKey] = new Models.Metadata.Info[] { CreateMetadataInfo() },
[Models.Metadata.Machine.InputKey] = CreateMetadataInput(),
[Models.Metadata.Machine.IsBiosKey] = "yes",
[Models.Metadata.Machine.IsDeviceKey] = "yes",
[Models.Metadata.Machine.IsMechanicalKey] = "yes",
[Models.Metadata.Machine.LanguageKey] = "language",
[Models.Metadata.Machine.LocationKey] = "location",
[Models.Metadata.Machine.ManufacturerKey] = "manufacturer",
[Models.Metadata.Machine.MediaKey] = new Models.Metadata.Media[] { CreateMedia() },
[Models.Metadata.Machine.MediaKey] = new Models.Metadata.Media[] { CreateMetadataMedia() },
[Models.Metadata.Machine.NameKey] = "name",
[Models.Metadata.Machine.NotesKey] = "notes",
[Models.Metadata.Machine.PartKey] = new Models.Metadata.Part[] { CreatePart() },
[Models.Metadata.Machine.PartKey] = new Models.Metadata.Part[] { CreateMetadataPart() },
[Models.Metadata.Machine.PlayedCountKey] = "playedcount",
[Models.Metadata.Machine.PlayedTimeKey] = "playedtime",
[Models.Metadata.Machine.PlayersKey] = "players",
[Models.Metadata.Machine.PortKey] = new Models.Metadata.Port[] { CreatePort() },
[Models.Metadata.Machine.PortKey] = new Models.Metadata.Port[] { CreateMetadataPort() },
[Models.Metadata.Machine.PublisherKey] = "publisher",
[Models.Metadata.Machine.RamOptionKey] = new Models.Metadata.RamOption[] { CreateRamOption() },
[Models.Metadata.Machine.RamOptionKey] = new Models.Metadata.RamOption[] { CreateMetadataRamOption() },
[Models.Metadata.Machine.RebuildToKey] = "rebuildto",
[Models.Metadata.Machine.ReleaseKey] = new Models.Metadata.Release[] { CreateRelease() },
[Models.Metadata.Machine.ReleaseKey] = new Models.Metadata.Release[] { CreateMetadataRelease() },
[Models.Metadata.Machine.ReleaseNumberKey] = "releasenumber",
[Models.Metadata.Machine.RomKey] = new Models.Metadata.Rom[] { CreateRom() },
[Models.Metadata.Machine.RomKey] = new Models.Metadata.Rom[] { CreateMetadataRom() },
[Models.Metadata.Machine.RomOfKey] = "romof",
[Models.Metadata.Machine.RotationKey] = "rotation",
[Models.Metadata.Machine.RunnableKey] = "yes",
[Models.Metadata.Machine.SampleKey] = new Models.Metadata.Sample[] { CreateSample() },
[Models.Metadata.Machine.SampleKey] = new Models.Metadata.Sample[] { CreateMetadataSample() },
[Models.Metadata.Machine.SampleOfKey] = "sampleof",
[Models.Metadata.Machine.SaveTypeKey] = "savetype",
[Models.Metadata.Machine.SharedFeatKey] = new Models.Metadata.SharedFeat[] { CreateSharedFeat() },
[Models.Metadata.Machine.SlotKey] = new Models.Metadata.Slot[] { CreateSlot() },
[Models.Metadata.Machine.SoftwareListKey] = new Models.Metadata.SoftwareList[] { CreateSoftwareList() },
[Models.Metadata.Machine.SoundKey] = CreateSound(),
[Models.Metadata.Machine.SharedFeatKey] = new Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() },
[Models.Metadata.Machine.SlotKey] = new Models.Metadata.Slot[] { CreateMetadataSlot() },
[Models.Metadata.Machine.SoftwareListKey] = new Models.Metadata.SoftwareList[] { CreateMetadataSoftwareList() },
[Models.Metadata.Machine.SoundKey] = CreateMetadataSound(),
[Models.Metadata.Machine.SourceFileKey] = "sourcefile",
[Models.Metadata.Machine.SourceRomKey] = "sourcerom",
[Models.Metadata.Machine.StatusKey] = "status",
[Models.Metadata.Machine.SupportedKey] = "yes",
[Models.Metadata.Machine.SystemKey] = "system",
[Models.Metadata.Machine.TagsKey] = "tags",
[Models.Metadata.Machine.TruripKey] = CreateTrurip(),
[Models.Metadata.Machine.VideoKey] = new Models.Metadata.Video[] { CreateVideo() },
[Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(),
[Models.Metadata.Machine.VideoKey] = new Models.Metadata.Video[] { CreateMetadataVideo() },
[Models.Metadata.Machine.YearKey] = "year",
};
}
private static Models.Metadata.Adjuster CreateAdjuster()
private static Models.Metadata.Adjuster CreateMetadataAdjuster()
{
return new Models.Metadata.Adjuster
{
[Models.Metadata.Adjuster.ConditionKey] = CreateCondition(),
[Models.Metadata.Adjuster.ConditionKey] = CreateMetadataCondition(),
[Models.Metadata.Adjuster.DefaultKey] = true,
[Models.Metadata.Adjuster.NameKey] = "name",
};
}
private static Models.Metadata.Analog CreateAnalog()
private static Models.Metadata.Analog CreateMetadataAnalog()
{
return new Models.Metadata.Analog
{
@@ -350,7 +350,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Archive CreateArchive()
private static Models.Metadata.Archive CreateMetadataArchive()
{
return new Models.Metadata.Archive
{
@@ -358,7 +358,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.BiosSet CreateBiosSet()
private static Models.Metadata.BiosSet CreateMetadataBiosSet()
{
return new Models.Metadata.BiosSet
{
@@ -368,11 +368,11 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Chip CreateChip()
private static Models.Metadata.Chip CreateMetadataChip()
{
return new Models.Metadata.Chip
{
[Models.Metadata.Chip.ClockKey] = 12345,
[Models.Metadata.Chip.ClockKey] = 12345L,
[Models.Metadata.Chip.FlagsKey] = "flags",
[Models.Metadata.Chip.NameKey] = "name",
[Models.Metadata.Chip.SoundOnlyKey] = "yes",
@@ -381,20 +381,20 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Configuration CreateConfiguration()
private static Models.Metadata.Configuration CreateMetadataConfiguration()
{
return new Models.Metadata.Configuration
{
[Models.Metadata.Configuration.ConditionKey] = CreateCondition(),
[Models.Metadata.Configuration.ConfLocationKey] = new Models.Metadata.ConfLocation[] { CreateConfLocation() },
[Models.Metadata.Configuration.ConfSettingKey] = new Models.Metadata.ConfSetting[] { CreateConfSetting() },
[Models.Metadata.Configuration.ConditionKey] = CreateMetadataCondition(),
[Models.Metadata.Configuration.ConfLocationKey] = new Models.Metadata.ConfLocation[] { CreateMetadataConfLocation() },
[Models.Metadata.Configuration.ConfSettingKey] = new Models.Metadata.ConfSetting[] { CreateMetadataConfSetting() },
[Models.Metadata.Configuration.MaskKey] = "mask",
[Models.Metadata.Configuration.NameKey] = "name",
[Models.Metadata.Configuration.TagKey] = "tag",
};
}
private static Models.Metadata.Condition CreateCondition()
private static Models.Metadata.Condition CreateMetadataCondition()
{
return new Models.Metadata.Condition
{
@@ -405,7 +405,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.ConfLocation CreateConfLocation()
private static Models.Metadata.ConfLocation CreateMetadataConfLocation()
{
return new Models.Metadata.ConfLocation
{
@@ -415,29 +415,29 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.ConfSetting CreateConfSetting()
private static Models.Metadata.ConfSetting CreateMetadataConfSetting()
{
return new Models.Metadata.ConfSetting
{
[Models.Metadata.ConfSetting.ConditionKey] = CreateCondition(),
[Models.Metadata.ConfSetting.ConditionKey] = CreateMetadataCondition(),
[Models.Metadata.ConfSetting.DefaultKey] = "yes",
[Models.Metadata.ConfSetting.NameKey] = "name",
[Models.Metadata.ConfSetting.ValueKey] = "value",
};
}
private static Models.Metadata.Control CreateControl()
private static Models.Metadata.Control CreateMetadataControl()
{
return new Models.Metadata.Control
{
[Models.Metadata.Control.ButtonsKey] = 12345,
[Models.Metadata.Control.KeyDeltaKey] = 12345,
[Models.Metadata.Control.MaximumKey] = 12345,
[Models.Metadata.Control.MinimumKey] = 12345,
[Models.Metadata.Control.PlayerKey] = 12345,
[Models.Metadata.Control.ReqButtonsKey] = 12345,
[Models.Metadata.Control.ButtonsKey] = 12345L,
[Models.Metadata.Control.KeyDeltaKey] = 12345L,
[Models.Metadata.Control.MaximumKey] = 12345L,
[Models.Metadata.Control.MinimumKey] = 12345L,
[Models.Metadata.Control.PlayerKey] = 12345L,
[Models.Metadata.Control.ReqButtonsKey] = 12345L,
[Models.Metadata.Control.ReverseKey] = "yes",
[Models.Metadata.Control.SensitivityKey] = 12345,
[Models.Metadata.Control.SensitivityKey] = 12345L,
[Models.Metadata.Control.ControlTypeKey] = "lightgun",
[Models.Metadata.Control.WaysKey] = "ways",
[Models.Metadata.Control.Ways2Key] = "ways2",
@@ -445,13 +445,13 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Device CreateDevice()
private static Models.Metadata.Device CreateMetadataDevice()
{
return new Models.Metadata.Device
{
[Models.Metadata.Device.ExtensionKey] = new Models.Metadata.Extension[] { CreateExtension() },
[Models.Metadata.Device.ExtensionKey] = new Models.Metadata.Extension[] { CreateMetadataExtension() },
[Models.Metadata.Device.FixedImageKey] = "fixedimage",
[Models.Metadata.Device.InstanceKey] = CreateInstance(),
[Models.Metadata.Device.InstanceKey] = CreateMetadataInstance(),
[Models.Metadata.Device.InterfaceKey] = "interface",
[Models.Metadata.Device.MandatoryKey] = 1,
[Models.Metadata.Device.TagKey] = "tag",
@@ -459,7 +459,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.DeviceRef CreateDeviceRef()
private static Models.Metadata.DeviceRef CreateMetadataDeviceRef()
{
return new Models.Metadata.DeviceRef
{
@@ -467,7 +467,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.DipLocation CreateDipLocation()
private static Models.Metadata.DipLocation CreateMetadataDipLocation()
{
return new Models.Metadata.DipLocation
{
@@ -477,14 +477,14 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.DipSwitch CreateDipSwitch()
private static Models.Metadata.DipSwitch CreateMetadataDipSwitch()
{
return new Models.Metadata.DipSwitch
{
[Models.Metadata.DipSwitch.ConditionKey] = CreateCondition(),
[Models.Metadata.DipSwitch.ConditionKey] = CreateMetadataCondition(),
[Models.Metadata.DipSwitch.DefaultKey] = "yes",
[Models.Metadata.DipSwitch.DipLocationKey] = new Models.Metadata.DipLocation[] { CreateDipLocation() },
[Models.Metadata.DipSwitch.DipValueKey] = new Models.Metadata.DipValue[] { CreateDipValue() },
[Models.Metadata.DipSwitch.DipLocationKey] = new Models.Metadata.DipLocation[] { CreateMetadataDipLocation() },
[Models.Metadata.DipSwitch.DipValueKey] = new Models.Metadata.DipValue[] { CreateMetadataDipValue() },
[Models.Metadata.DipSwitch.EntryKey] = new string[] { "entry" },
[Models.Metadata.DipSwitch.MaskKey] = "mask",
[Models.Metadata.DipSwitch.NameKey] = "name",
@@ -492,30 +492,30 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.DipValue CreateDipValue()
private static Models.Metadata.DipValue CreateMetadataDipValue()
{
return new Models.Metadata.DipValue
{
[Models.Metadata.DipValue.ConditionKey] = CreateCondition(),
[Models.Metadata.DipValue.ConditionKey] = CreateMetadataCondition(),
[Models.Metadata.DipValue.DefaultKey] = "yes",
[Models.Metadata.DipValue.NameKey] = "name",
[Models.Metadata.DipValue.ValueKey] = "value",
};
}
private static Models.Metadata.DataArea CreateDataArea()
private static Models.Metadata.DataArea CreateMetadataDataArea()
{
return new Models.Metadata.DataArea
{
[Models.Metadata.DataArea.EndiannessKey] = "big",
[Models.Metadata.DataArea.NameKey] = "name",
[Models.Metadata.DataArea.RomKey] = new Models.Metadata.Rom[] { new Models.Metadata.Rom() },
[Models.Metadata.DataArea.SizeKey] = 12345,
[Models.Metadata.DataArea.SizeKey] = 12345L,
[Models.Metadata.DataArea.WidthKey] = 64,
};
}
private static Models.Metadata.Disk CreateDisk()
private static Models.Metadata.Disk CreateMetadataDisk()
{
return new Models.Metadata.Disk
{
@@ -531,7 +531,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.DiskArea CreateDiskArea()
private static Models.Metadata.DiskArea CreateMetadataDiskArea()
{
return new Models.Metadata.DiskArea
{
@@ -540,28 +540,28 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Display CreateDisplay()
private static Models.Metadata.Display CreateMetadataDisplay()
{
return new Models.Metadata.Display
{
[Models.Metadata.Display.FlipXKey] = "yes",
[Models.Metadata.Display.HBEndKey] = 12345,
[Models.Metadata.Display.HBStartKey] = 12345,
[Models.Metadata.Display.HeightKey] = 12345,
[Models.Metadata.Display.HTotalKey] = 12345,
[Models.Metadata.Display.PixClockKey] = 12345,
[Models.Metadata.Display.RefreshKey] = 12345,
[Models.Metadata.Display.HBEndKey] = 12345L,
[Models.Metadata.Display.HBStartKey] = 12345L,
[Models.Metadata.Display.HeightKey] = 12345L,
[Models.Metadata.Display.HTotalKey] = 12345L,
[Models.Metadata.Display.PixClockKey] = 12345L,
[Models.Metadata.Display.RefreshKey] = 12345L,
[Models.Metadata.Display.RotateKey] = 90,
[Models.Metadata.Display.TagKey] = "tag",
[Models.Metadata.Display.DisplayTypeKey] = "vector",
[Models.Metadata.Display.VBEndKey] = 12345,
[Models.Metadata.Display.VBStartKey] = 12345,
[Models.Metadata.Display.VTotalKey] = 12345,
[Models.Metadata.Display.WidthKey] = 12345,
[Models.Metadata.Display.VBEndKey] = 12345L,
[Models.Metadata.Display.VBStartKey] = 12345L,
[Models.Metadata.Display.VTotalKey] = 12345L,
[Models.Metadata.Display.WidthKey] = 12345L,
};
}
private static Models.Metadata.Driver CreateDriver()
private static Models.Metadata.Driver CreateMetadataDriver()
{
return new Models.Metadata.Driver
{
@@ -580,11 +580,11 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Dump CreateDump()
private static Models.Metadata.Dump CreateMetadataDump()
{
return new Models.Metadata.Dump
{
[Models.Metadata.Dump.OriginalKey] = CreateOriginal(),
[Models.Metadata.Dump.OriginalKey] = CreateMetadataOriginal(),
// The following are searched for in order
// For the purposes of this test, only RomKey will be populated
@@ -595,7 +595,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Extension CreateExtension()
private static Models.Metadata.Extension CreateMetadataExtension()
{
return new Models.Metadata.Extension
{
@@ -603,7 +603,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Feature CreateFeature()
private static Models.Metadata.Feature CreateMetadataFeature()
{
return new Models.Metadata.Feature
{
@@ -615,7 +615,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Info CreateInfo()
private static Models.Metadata.Info CreateMetadataInfo()
{
return new Models.Metadata.Info
{
@@ -624,20 +624,20 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Input CreateInput()
private static Models.Metadata.Input CreateMetadataInput()
{
return new Models.Metadata.Input
{
[Models.Metadata.Input.ButtonsKey] = 12345,
[Models.Metadata.Input.CoinsKey] = 12345,
[Models.Metadata.Input.ControlKey] = new Models.Metadata.Control[] { CreateControl() },
[Models.Metadata.Input.PlayersKey] = 12345,
[Models.Metadata.Input.ButtonsKey] = 12345L,
[Models.Metadata.Input.CoinsKey] = 12345L,
[Models.Metadata.Input.ControlKey] = new Models.Metadata.Control[] { CreateMetadataControl() },
[Models.Metadata.Input.PlayersKey] = 12345L,
[Models.Metadata.Input.ServiceKey] = "yes",
[Models.Metadata.Input.TiltKey] = "yes",
};
}
private static Models.Metadata.Instance CreateInstance()
private static Models.Metadata.Instance CreateMetadataInstance()
{
return new Models.Metadata.Instance
{
@@ -646,7 +646,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Media CreateMedia()
private static Models.Metadata.Media CreateMetadataMedia()
{
return new Models.Metadata.Media
{
@@ -658,7 +658,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Original CreateOriginal()
private static Models.Metadata.Original CreateMetadataOriginal()
{
return new Models.Metadata.Original
{
@@ -667,29 +667,29 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Part CreatePart()
private static Models.Metadata.Part CreateMetadataPart()
{
return new Models.Metadata.Part
{
[Models.Metadata.Part.DataAreaKey] = new Models.Metadata.DataArea[] { CreateDataArea() },
[Models.Metadata.Part.DiskAreaKey] = new Models.Metadata.DiskArea[] { CreateDiskArea() },
[Models.Metadata.Part.DataAreaKey] = new Models.Metadata.DataArea[] { CreateMetadataDataArea() },
[Models.Metadata.Part.DiskAreaKey] = new Models.Metadata.DiskArea[] { CreateMetadataDiskArea() },
[Models.Metadata.Part.DipSwitchKey] = new Models.Metadata.DipSwitch[] { new Models.Metadata.DipSwitch() },
[Models.Metadata.Part.FeatureKey] = new Models.Metadata.Feature[] { CreateFeature() },
[Models.Metadata.Part.FeatureKey] = new Models.Metadata.Feature[] { CreateMetadataFeature() },
[Models.Metadata.Part.InterfaceKey] = "interface",
[Models.Metadata.Part.NameKey] = "name",
};
}
private static Models.Metadata.Port CreatePort()
private static Models.Metadata.Port CreateMetadataPort()
{
return new Models.Metadata.Port
{
[Models.Metadata.Port.AnalogKey] = new Models.Metadata.Analog[] { CreateAnalog() },
[Models.Metadata.Port.AnalogKey] = new Models.Metadata.Analog[] { CreateMetadataAnalog() },
[Models.Metadata.Port.TagKey] = "tag",
};
}
private static Models.Metadata.RamOption CreateRamOption()
private static Models.Metadata.RamOption CreateMetadataRamOption()
{
return new Models.Metadata.RamOption
{
@@ -699,7 +699,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Release CreateRelease()
private static Models.Metadata.Release CreateMetadataRelease()
{
return new Models.Metadata.Release
{
@@ -711,7 +711,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Rom CreateRom()
private static Models.Metadata.Rom CreateMetadataRom()
{
return new Models.Metadata.Rom
{
@@ -733,7 +733,7 @@ namespace SabreTools.DatFiles.Test
[Models.Metadata.Rom.DateKey] = "date",
[Models.Metadata.Rom.DisposeKey] = "yes",
[Models.Metadata.Rom.ExtensionKey] = "extension",
[Models.Metadata.Rom.FileCountKey] = 12345,
[Models.Metadata.Rom.FileCountKey] = 12345L,
[Models.Metadata.Rom.FileIsAvailableKey] = true,
[Models.Metadata.Rom.FlagsKey] = "flags",
[Models.Metadata.Rom.FormatKey] = "format",
@@ -779,7 +779,7 @@ namespace SabreTools.DatFiles.Test
[Models.Metadata.Rom.SHA256Key] = ZeroHash.SHA256Str,
[Models.Metadata.Rom.SHA384Key] = ZeroHash.SHA384Str,
[Models.Metadata.Rom.SHA512Key] = ZeroHash.SHA512Str,
[Models.Metadata.Rom.SizeKey] = 12345,
[Models.Metadata.Rom.SizeKey] = 12345L,
[Models.Metadata.Rom.SoundOnlyKey] = "yes",
[Models.Metadata.Rom.SourceKey] = "source",
[Models.Metadata.Rom.SpamSumKey] = ZeroHash.SpamSumStr,
@@ -810,7 +810,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Sample CreateSample()
private static Models.Metadata.Sample CreateMetadataSample()
{
return new Models.Metadata.Sample
{
@@ -818,7 +818,7 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.SharedFeat CreateSharedFeat()
private static Models.Metadata.SharedFeat CreateMetadataSharedFeat()
{
return new Models.Metadata.SharedFeat
{
@@ -827,16 +827,16 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Slot CreateSlot()
private static Models.Metadata.Slot CreateMetadataSlot()
{
return new Models.Metadata.Slot
{
[Models.Metadata.Slot.NameKey] = "name",
[Models.Metadata.Slot.SlotOptionKey] = new Models.Metadata.SlotOption[] { CreateSlotOption() },
[Models.Metadata.Slot.SlotOptionKey] = new Models.Metadata.SlotOption[] { CreateMetadataSlotOption() },
};
}
private static Models.Metadata.SlotOption CreateSlotOption()
private static Models.Metadata.SlotOption CreateMetadataSlotOption()
{
return new Models.Metadata.SlotOption
{
@@ -846,24 +846,24 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Software CreateSoftware()
private static Models.Metadata.Software CreateMetadataSoftware()
{
return new Models.Metadata.Software
{
[Models.Metadata.Software.CloneOfKey] = "cloneof",
[Models.Metadata.Software.DescriptionKey] = "description",
[Models.Metadata.Software.InfoKey] = new Models.Metadata.Info[] { CreateInfo() },
[Models.Metadata.Software.InfoKey] = new Models.Metadata.Info[] { CreateMetadataInfo() },
[Models.Metadata.Software.NameKey] = "name",
[Models.Metadata.Software.NotesKey] = "notes",
[Models.Metadata.Software.PartKey] = new Models.Metadata.Part[] { CreatePart() },
[Models.Metadata.Software.PartKey] = new Models.Metadata.Part[] { CreateMetadataPart() },
[Models.Metadata.Software.PublisherKey] = "publisher",
[Models.Metadata.Software.SharedFeatKey] = new Models.Metadata.SharedFeat[] { CreateSharedFeat() },
[Models.Metadata.Software.SharedFeatKey] = new Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() },
[Models.Metadata.Software.SupportedKey] = "yes",
[Models.Metadata.Software.YearKey] = "year",
};
}
private static Models.Metadata.SoftwareList CreateSoftwareList()
private static Models.Metadata.SoftwareList CreateMetadataSoftwareList()
{
return new Models.Metadata.SoftwareList
{
@@ -871,21 +871,21 @@ namespace SabreTools.DatFiles.Test
[Models.Metadata.SoftwareList.FilterKey] = "filter",
[Models.Metadata.SoftwareList.NameKey] = "name",
[Models.Metadata.SoftwareList.NotesKey] = "notes",
[Models.Metadata.SoftwareList.SoftwareKey] = new Models.Metadata.Software[] { CreateSoftware() },
[Models.Metadata.SoftwareList.SoftwareKey] = new Models.Metadata.Software[] { CreateMetadataSoftware() },
[Models.Metadata.SoftwareList.StatusKey] = "original",
[Models.Metadata.SoftwareList.TagKey] = "tag",
};
}
private static Models.Metadata.Sound CreateSound()
private static Models.Metadata.Sound CreateMetadataSound()
{
return new Models.Metadata.Sound
{
[Models.Metadata.Sound.ChannelsKey] = 12345,
[Models.Metadata.Sound.ChannelsKey] = 12345L,
};
}
private static Models.Logiqx.Trurip CreateTrurip()
private static Models.Logiqx.Trurip CreateMetadataTrurip()
{
return new Models.Logiqx.Trurip
{
@@ -906,17 +906,17 @@ namespace SabreTools.DatFiles.Test
};
}
private static Models.Metadata.Video CreateVideo()
private static Models.Metadata.Video CreateMetadataVideo()
{
return new Models.Metadata.Video
{
[Models.Metadata.Video.AspectXKey] = 12345,
[Models.Metadata.Video.AspectYKey] = 12345,
[Models.Metadata.Video.HeightKey] = 12345,
[Models.Metadata.Video.AspectXKey] = 12345L,
[Models.Metadata.Video.AspectYKey] = 12345L,
[Models.Metadata.Video.HeightKey] = 12345L,
[Models.Metadata.Video.OrientationKey] = "vertical",
[Models.Metadata.Video.RefreshKey] = 12345,
[Models.Metadata.Video.RefreshKey] = 12345L,
[Models.Metadata.Video.ScreenKey] = "vector",
[Models.Metadata.Video.WidthKey] = 12345,
[Models.Metadata.Video.WidthKey] = 12345L,
};
}
@@ -1061,7 +1061,7 @@ namespace SabreTools.DatFiles.Test
private static void ValidateChip(Chip? chip)
{
Assert.NotNull(chip);
Assert.Equal(12345, chip.GetInt64FieldValue(Models.Metadata.Chip.ClockKey));
Assert.Equal(12345L, chip.GetInt64FieldValue(Models.Metadata.Chip.ClockKey));
Assert.Equal("flags", chip.GetStringFieldValue(Models.Metadata.Chip.FlagsKey));
Assert.Equal("name", chip.GetStringFieldValue(Models.Metadata.Chip.NameKey));
Assert.True(chip.GetBoolFieldValue(Models.Metadata.Chip.SoundOnlyKey));
@@ -1121,14 +1121,14 @@ namespace SabreTools.DatFiles.Test
private static void ValidateControl(Control? control)
{
Assert.NotNull(control);
Assert.Equal(12345, control.GetInt64FieldValue(Models.Metadata.Control.ButtonsKey));
Assert.Equal(12345, control.GetInt64FieldValue(Models.Metadata.Control.KeyDeltaKey));
Assert.Equal(12345, control.GetInt64FieldValue(Models.Metadata.Control.MaximumKey));
Assert.Equal(12345, control.GetInt64FieldValue(Models.Metadata.Control.MinimumKey));
Assert.Equal(12345, control.GetInt64FieldValue(Models.Metadata.Control.PlayerKey));
Assert.Equal(12345, control.GetInt64FieldValue(Models.Metadata.Control.ReqButtonsKey));
Assert.Equal(12345L, control.GetInt64FieldValue(Models.Metadata.Control.ButtonsKey));
Assert.Equal(12345L, control.GetInt64FieldValue(Models.Metadata.Control.KeyDeltaKey));
Assert.Equal(12345L, control.GetInt64FieldValue(Models.Metadata.Control.MaximumKey));
Assert.Equal(12345L, control.GetInt64FieldValue(Models.Metadata.Control.MinimumKey));
Assert.Equal(12345L, control.GetInt64FieldValue(Models.Metadata.Control.PlayerKey));
Assert.Equal(12345L, control.GetInt64FieldValue(Models.Metadata.Control.ReqButtonsKey));
Assert.True(control.GetBoolFieldValue(Models.Metadata.Control.ReverseKey));
Assert.Equal(12345, control.GetInt64FieldValue(Models.Metadata.Control.SensitivityKey));
Assert.Equal(12345L, control.GetInt64FieldValue(Models.Metadata.Control.SensitivityKey));
Assert.Equal("lightgun", control.GetStringFieldValue(Models.Metadata.Control.ControlTypeKey));
Assert.Equal("ways", control.GetStringFieldValue(Models.Metadata.Control.WaysKey));
Assert.Equal("ways2", control.GetStringFieldValue(Models.Metadata.Control.Ways2Key));
@@ -1140,7 +1140,7 @@ namespace SabreTools.DatFiles.Test
Assert.NotNull(dataArea);
Assert.Equal("big", dataArea.GetStringFieldValue(Models.Metadata.DataArea.EndiannessKey));
Assert.Equal("name", dataArea.GetStringFieldValue(Models.Metadata.DataArea.NameKey));
Assert.Equal(12345, dataArea.GetInt64FieldValue(Models.Metadata.DataArea.SizeKey));
Assert.Equal(12345L, dataArea.GetInt64FieldValue(Models.Metadata.DataArea.SizeKey));
Assert.Equal(64, dataArea.GetInt64FieldValue(Models.Metadata.DataArea.WidthKey));
}
@@ -1238,19 +1238,19 @@ namespace SabreTools.DatFiles.Test
{
Assert.NotNull(display);
Assert.True(display.GetBoolFieldValue(Models.Metadata.Display.FlipXKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.HBEndKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.HBStartKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.HeightKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.HTotalKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.PixClockKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.RefreshKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.HBEndKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.HBStartKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.HeightKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.HTotalKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.PixClockKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.RefreshKey));
Assert.Equal(90, display.GetInt64FieldValue(Models.Metadata.Display.RotateKey));
Assert.Equal("tag", display.GetStringFieldValue(Models.Metadata.Display.TagKey));
Assert.Equal("vector", display.GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.VBEndKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.VBStartKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.VTotalKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.WidthKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.VBEndKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.VBStartKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.VTotalKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.WidthKey));
}
private static void ValidateDriver(Driver? driver)
@@ -1296,9 +1296,9 @@ namespace SabreTools.DatFiles.Test
private static void ValidateInput(Input? input)
{
Assert.NotNull(input);
Assert.Equal(12345, input.GetInt64FieldValue(Models.Metadata.Input.ButtonsKey));
Assert.Equal(12345, input.GetInt64FieldValue(Models.Metadata.Input.CoinsKey));
Assert.Equal(12345, input.GetInt64FieldValue(Models.Metadata.Input.PlayersKey));
Assert.Equal(12345L, input.GetInt64FieldValue(Models.Metadata.Input.ButtonsKey));
Assert.Equal(12345L, input.GetInt64FieldValue(Models.Metadata.Input.CoinsKey));
Assert.Equal(12345L, input.GetInt64FieldValue(Models.Metadata.Input.PlayersKey));
Assert.True(input.GetBoolFieldValue(Models.Metadata.Input.ServiceKey));
Assert.True(input.GetBoolFieldValue(Models.Metadata.Input.TiltKey));
@@ -1395,7 +1395,7 @@ namespace SabreTools.DatFiles.Test
Assert.Equal("date", rom.GetStringFieldValue(Models.Metadata.Rom.DateKey));
Assert.True(rom.GetBoolFieldValue(Models.Metadata.Rom.DisposeKey));
Assert.Equal("extension", rom.GetStringFieldValue(Models.Metadata.Rom.ExtensionKey));
Assert.Equal(12345, rom.GetInt64FieldValue(Models.Metadata.Rom.FileCountKey));
Assert.Equal(12345L, rom.GetInt64FieldValue(Models.Metadata.Rom.FileCountKey));
Assert.True(rom.GetBoolFieldValue(Models.Metadata.Rom.FileIsAvailableKey));
Assert.Equal("flags", rom.GetStringFieldValue(Models.Metadata.Rom.FlagsKey));
Assert.Equal("format", rom.GetStringFieldValue(Models.Metadata.Rom.FormatKey));
@@ -1441,7 +1441,7 @@ namespace SabreTools.DatFiles.Test
Assert.Equal(ZeroHash.SHA256Str, rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key));
Assert.Equal(ZeroHash.SHA384Str, rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key));
Assert.Equal(ZeroHash.SHA512Str, rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key));
Assert.Equal(12345, rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey));
Assert.Equal(12345L, rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey));
Assert.True(rom.GetBoolFieldValue(Models.Metadata.Rom.SoundOnlyKey));
Assert.Equal("source", rom.GetStringFieldValue(Models.Metadata.Rom.SourceKey));
Assert.Equal(ZeroHash.SpamSumStr, rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey));
@@ -1518,7 +1518,7 @@ namespace SabreTools.DatFiles.Test
private static void ValidateSound(Sound? sound)
{
Assert.NotNull(sound);
Assert.Equal(12345, sound.GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey));
Assert.Equal(12345L, sound.GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey));
}
// TODO: Figure out why so many fields are omitted
@@ -1544,12 +1544,12 @@ namespace SabreTools.DatFiles.Test
private static void ValidateVideo(Display? display)
{
Assert.NotNull(display);
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Video.AspectXKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Video.AspectYKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Video.AspectXKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Video.AspectYKey));
Assert.Equal("vector", display.GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.HeightKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.RefreshKey));
Assert.Equal(12345, display.GetInt64FieldValue(Models.Metadata.Display.WidthKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.HeightKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.RefreshKey));
Assert.Equal(12345L, display.GetInt64FieldValue(Models.Metadata.Display.WidthKey));
Assert.Equal(90, display.GetInt64FieldValue(Models.Metadata.Display.RotateKey));
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SabreTools.Core.Tools;
@@ -68,11 +69,11 @@ namespace SabreTools.DatFiles
var header = Header.GetInternalClone();
// Remove fields with default values
if (header.Read<MergingFlag>(Models.Metadata.Header.ForceMergingKey) == MergingFlag.None)
if (header.ReadString(Models.Metadata.Header.ForceMergingKey).AsEnumValue<MergingFlag>() == MergingFlag.None)
header.Remove(Models.Metadata.Header.ForceMergingKey);
if (header.Read<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey) == NodumpFlag.None)
if (header.ReadString(Models.Metadata.Header.ForceNodumpKey).AsEnumValue<NodumpFlag>() == NodumpFlag.None)
header.Remove(Models.Metadata.Header.ForceNodumpKey);
if (header.Read<PackingFlag>(Models.Metadata.Header.ForcePackingKey) == PackingFlag.None)
if (header.ReadString(Models.Metadata.Header.ForcePackingKey).AsEnumValue<PackingFlag>() == PackingFlag.None)
header.Remove(Models.Metadata.Header.ForcePackingKey);
// Convert subheader values
@@ -963,27 +964,15 @@ namespace SabreTools.DatFiles
var confLocations = item.GetFieldValue<DatItems.Formats.ConfLocation[]?>(Models.Metadata.Configuration.ConfLocationKey);
if (confLocations != null)
{
List<Models.Metadata.ConfLocation> confLocationItems = [];
foreach (var confLocation in confLocations)
{
var confLocationItem = confLocation.GetInternalClone();
confLocationItems.Add(confLocationItem);
}
configurationItem[Models.Metadata.Configuration.ConfLocationKey] = confLocationItems.ToArray();
Models.Metadata.ConfLocation[] confLocationItems = Array.ConvertAll(confLocations, confLocation => confLocation.GetInternalClone());
configurationItem[Models.Metadata.Configuration.ConfLocationKey] = confLocationItems;
}
var confSettings = item.GetFieldValue<DatItems.Formats.ConfSetting[]?>(Models.Metadata.Configuration.ConfSettingKey);
if (confSettings != null)
{
List<Models.Metadata.ConfSetting> confSettingItems = [];
foreach (var confSetting in confSettings)
{
var confSettingItem = confSetting.GetInternalClone();
confSettingItems.Add(confSettingItem);
}
configurationItem[Models.Metadata.Configuration.ConfSettingKey] = confSettingItems.ToArray();
Models.Metadata.ConfSetting[] confSettingItems = Array.ConvertAll(confSettings, confSetting => confSetting.GetInternalClone());
configurationItem[Models.Metadata.Configuration.ConfSettingKey] = confSettingItems;
}
return configurationItem;
@@ -1004,14 +993,8 @@ namespace SabreTools.DatFiles
var extensions = item.GetFieldValue<DatItems.Formats.Extension[]?>(Models.Metadata.Device.ExtensionKey);
if (extensions != null)
{
List<Models.Metadata.Extension> extensionItems = [];
foreach (var extension in extensions)
{
var extensionItem = extension.GetInternalClone();
extensionItems.Add(extensionItem);
}
deviceItem[Models.Metadata.Device.ExtensionKey] = extensionItems.ToArray();
Models.Metadata.Extension[] extensionItems = Array.ConvertAll(extensions, extension => extension.GetInternalClone());
deviceItem[Models.Metadata.Device.ExtensionKey] = extensionItems;
}
return deviceItem;
@@ -1033,27 +1016,15 @@ namespace SabreTools.DatFiles
var dipLocations = item.GetFieldValue<DatItems.Formats.DipLocation[]?>(Models.Metadata.DipSwitch.DipLocationKey);
if (dipLocations != null)
{
List<Models.Metadata.DipLocation> dipLocationItems = [];
foreach (var dipLocation in dipLocations)
{
var extensionItem = dipLocation.GetInternalClone();
dipLocationItems.Add(extensionItem);
}
dipSwitchItem[Models.Metadata.DipSwitch.DipLocationKey] = dipLocationItems.ToArray();
Models.Metadata.DipLocation[] dipLocationItems = Array.ConvertAll(dipLocations, dipLocation => dipLocation.GetInternalClone());
dipSwitchItem[Models.Metadata.DipSwitch.DipLocationKey] = dipLocationItems;
}
var dipValues = item.GetFieldValue<DatItems.Formats.DipValue[]?>(Models.Metadata.DipSwitch.DipValueKey);
if (dipValues != null)
{
List<Models.Metadata.DipValue> dipValueItems = [];
foreach (var dipValue in dipValues)
{
var extensionItem = dipValue.GetInternalClone();
dipValueItems.Add(extensionItem);
}
dipSwitchItem[Models.Metadata.DipSwitch.DipValueKey] = dipValueItems.ToArray();
Models.Metadata.DipValue[] dipValueItems = Array.ConvertAll(dipValues, dipValue => dipValue.GetInternalClone());
dipSwitchItem[Models.Metadata.DipSwitch.DipValueKey] = dipValueItems;
}
return dipSwitchItem;

View File

@@ -137,7 +137,8 @@ namespace SabreTools.DatFiles
/// <param name="datHeader">Replacement header to be used</param>
public void SetHeader(DatHeader datHeader)
{
Header = (DatHeader)datHeader.Clone();
// TODO: Figure out why clone loses data here
Header = datHeader;
}
#endregion

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +33,17 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Adjuster() : base() { }
public Adjuster(Models.Metadata.Adjuster item) : base(item) { }
public Adjuster(Models.Metadata.Adjuster item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Adjuster.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.Adjuster.DefaultKey, GetBoolFieldValue(Models.Metadata.Adjuster.DefaultKey).FromYesNo());
// Handle subitems
var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.Adjuster.ConditionKey);
if (condition != null)
SetFieldValue(Models.Metadata.Adjuster.ConditionKey, new Condition(condition));
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public BiosSet() : base() { }
public BiosSet(Models.Metadata.BiosSet item) : base(item) { }
public BiosSet(Models.Metadata.BiosSet item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.BiosSet.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.BiosSet.DefaultKey, GetBoolFieldValue(Models.Metadata.BiosSet.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,14 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Chip() : base() { }
public Chip(Models.Metadata.Chip item) : base(item) { }
public Chip(Models.Metadata.Chip item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Chip.SoundOnlyKey) != null)
SetFieldValue<string?>(Models.Metadata.Chip.SoundOnlyKey, GetBoolFieldValue(Models.Metadata.Chip.SoundOnlyKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Chip.ChipTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Chip.ChipTypeKey, GetStringFieldValue(Models.Metadata.Chip.ChipTypeKey).AsEnumValue<ChipType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Condition() : base() { }
public Condition(Models.Metadata.Condition item) : base(item) { }
public Condition(Models.Metadata.Condition item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Condition.RelationKey) != null)
SetFieldValue<string?>(Models.Metadata.Condition.RelationKey, GetStringFieldValue(Models.Metadata.Condition.RelationKey).AsEnumValue<Relation>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public ConfLocation() : base() { }
public ConfLocation(Models.Metadata.ConfLocation item) : base(item) { }
public ConfLocation(Models.Metadata.ConfLocation item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.ConfLocation.InvertedKey) != null)
SetFieldValue<string?>(Models.Metadata.ConfLocation.InvertedKey, GetBoolFieldValue(Models.Metadata.ConfLocation.InvertedKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +33,17 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public ConfSetting() : base() { }
public ConfSetting(Models.Metadata.ConfSetting item) : base(item) { }
public ConfSetting(Models.Metadata.ConfSetting item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.ConfSetting.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.ConfSetting.DefaultKey, GetBoolFieldValue(Models.Metadata.ConfSetting.DefaultKey).FromYesNo());
// Handle subitems
var condition = GetFieldValue<Models.Metadata.Condition>(Models.Metadata.ConfSetting.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.ConfSetting.ConditionKey, new Condition(condition));
}
#endregion
}

View File

@@ -1,5 +1,7 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
namespace SabreTools.DatItems.Formats
{
@@ -52,7 +54,27 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Configuration() : base() { }
public Configuration(Models.Metadata.Configuration item) : base(item) { }
public Configuration(Models.Metadata.Configuration item) : base(item)
{
// Handle subitems
var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.Configuration.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.Configuration.ConditionKey, new Condition(condition));
var confLocations = item.ReadItemArray<Models.Metadata.ConfLocation>(Models.Metadata.Configuration.ConfLocationKey);
if (confLocations != null)
{
ConfLocation[] confLocationItems = Array.ConvertAll(confLocations, confLocation => new ConfLocation(confLocation));
SetFieldValue<ConfLocation[]?>(Models.Metadata.Configuration.ConfLocationKey, confLocationItems);
}
var confSettings = item.ReadItemArray<Models.Metadata.ConfSetting>(Models.Metadata.Configuration.ConfSettingKey);
if (confSettings != null)
{
ConfSetting[] confSettingItems = Array.ConvertAll(confSettings, confSetting => new ConfSetting(confSetting));
SetFieldValue<ConfSetting[]?>(Models.Metadata.Configuration.ConfSettingKey, confSettingItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,28 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Control() : base() { }
public Control(Models.Metadata.Control item) : base(item) { }
public Control(Models.Metadata.Control item) : base(item)
{
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Control.ButtonsKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ButtonsKey, GetInt64FieldValue(Models.Metadata.Control.ButtonsKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.KeyDeltaKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.KeyDeltaKey, GetInt64FieldValue(Models.Metadata.Control.KeyDeltaKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.MaximumKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.MaximumKey, GetInt64FieldValue(Models.Metadata.Control.MaximumKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.MinimumKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.MinimumKey, GetInt64FieldValue(Models.Metadata.Control.MinimumKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.PlayerKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.PlayerKey, GetInt64FieldValue(Models.Metadata.Control.PlayerKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.ReqButtonsKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ReqButtonsKey, GetInt64FieldValue(Models.Metadata.Control.ReqButtonsKey).ToString());
if (GetBoolFieldValue(Models.Metadata.Control.ReverseKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ReverseKey, GetBoolFieldValue(Models.Metadata.Control.ReverseKey).FromYesNo());
if (GetInt64FieldValue(Models.Metadata.Control.SensitivityKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.SensitivityKey, GetInt64FieldValue(Models.Metadata.Control.SensitivityKey).ToString());
if (GetStringFieldValue(Models.Metadata.Control.ControlTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ControlTypeKey, GetStringFieldValue(Models.Metadata.Control.ControlTypeKey).AsEnumValue<ControlType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -23,7 +24,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DataArea() : base() { }
public DataArea(Models.Metadata.DataArea item) : base(item) { }
public DataArea(Models.Metadata.DataArea item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.DataArea.EndiannessKey) != null)
SetFieldValue<string?>(Models.Metadata.DataArea.EndiannessKey, GetStringFieldValue(Models.Metadata.DataArea.EndiannessKey).AsEnumValue<Endianness>().AsStringValue());
if (GetInt64FieldValue(Models.Metadata.DataArea.SizeKey) != null)
SetFieldValue<string?>(Models.Metadata.DataArea.SizeKey, GetInt64FieldValue(Models.Metadata.DataArea.SizeKey).ToString());
if (GetInt64FieldValue(Models.Metadata.DataArea.WidthKey) != null)
SetFieldValue<string?>(Models.Metadata.DataArea.WidthKey, GetInt64FieldValue(Models.Metadata.DataArea.WidthKey).ToString());
}
#endregion
}

View File

@@ -1,5 +1,8 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -42,7 +45,26 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Device() : base() { }
public Device(Models.Metadata.Device item) : base(item) { }
public Device(Models.Metadata.Device item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Device.MandatoryKey) != null)
SetFieldValue<string?>(Models.Metadata.Device.MandatoryKey, GetBoolFieldValue(Models.Metadata.Device.MandatoryKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Device.DeviceTypeKey, GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey).AsEnumValue<DeviceType>().AsStringValue());
// Handle subitems
var instance = item.Read<Models.Metadata.Instance>(Models.Metadata.Device.InstanceKey);
if (instance != null)
SetFieldValue<Instance?>(Models.Metadata.Device.InstanceKey, new Instance(instance));
var extensions = item.ReadItemArray<Models.Metadata.Extension>(Models.Metadata.Device.ExtensionKey);
if (extensions != null)
{
Extension[] extensionItems = Array.ConvertAll(extensions, extension => new Extension(extension));
SetFieldValue<Extension[]?>(Models.Metadata.Device.ExtensionKey, extensionItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DipLocation() : base() { }
public DipLocation(Models.Metadata.DipLocation item) : base(item) { }
public DipLocation(Models.Metadata.DipLocation item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.DipLocation.InvertedKey) != null)
SetFieldValue<string?>(Models.Metadata.DipLocation.InvertedKey, GetBoolFieldValue(Models.Metadata.DipLocation.InvertedKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,8 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -73,7 +76,31 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DipSwitch() : base() { }
public DipSwitch(Models.Metadata.DipSwitch item) : base(item) { }
public DipSwitch(Models.Metadata.DipSwitch item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.DipSwitch.DefaultKey, GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey).FromYesNo());
// Handle subitems
var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.DipSwitch.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.DipSwitch.ConditionKey, new Condition(condition));
var dipLocations = item.ReadItemArray<Models.Metadata.DipLocation>(Models.Metadata.DipSwitch.DipLocationKey);
if (dipLocations != null)
{
DipLocation[] dipLocationItems = Array.ConvertAll(dipLocations, dipLocation => new DipLocation(dipLocation));
SetFieldValue<DipLocation[]?>(Models.Metadata.DipSwitch.DipLocationKey, dipLocationItems);
}
var dipValues = item.ReadItemArray<Models.Metadata.DipValue>(Models.Metadata.DipSwitch.DipValueKey);
if (dipValues != null)
{
DipValue[] dipValueItems = Array.ConvertAll(dipValues, dipValue => new DipValue(dipValue));
SetFieldValue<DipValue[]?>(Models.Metadata.DipSwitch.DipValueKey, dipValueItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +33,17 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DipValue() : base() { }
public DipValue(Models.Metadata.DipValue item) : base(item) { }
public DipValue(Models.Metadata.DipValue item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.DipValue.DefaultKey, GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey).FromYesNo());
// Handle subitems
var condition = GetFieldValue<Models.Metadata.Condition>(Models.Metadata.DipValue.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.DipValue.ConditionKey, new Condition(condition));
}
#endregion
}

View File

@@ -68,6 +68,20 @@ namespace SabreTools.DatItems.Formats
public Disk(Models.Metadata.Disk item) : base(item)
{
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Disk.OptionalKey) != null)
SetFieldValue<string?>(Models.Metadata.Disk.OptionalKey, GetBoolFieldValue(Models.Metadata.Disk.OptionalKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Disk.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Disk.StatusKey, GetStringFieldValue(Models.Metadata.Disk.StatusKey).AsEnumValue<ItemStatus>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Disk.WritableKey) != null)
SetFieldValue<string?>(Models.Metadata.Disk.WritableKey, GetBoolFieldValue(Models.Metadata.Disk.WritableKey).FromYesNo());
// Process hash values
if (GetStringFieldValue(Models.Metadata.Disk.MD5Key) != null)
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, TextHelper.NormalizeMD5(GetStringFieldValue(Models.Metadata.Disk.MD5Key)));
if (GetStringFieldValue(Models.Metadata.Disk.SHA1Key) != null)
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, TextHelper.NormalizeSHA1(GetStringFieldValue(Models.Metadata.Disk.SHA1Key)));
}
#endregion

View File

@@ -23,7 +23,36 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Display() : base() { }
public Display(Models.Metadata.Display item) : base(item) { }
public Display(Models.Metadata.Display item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Display.FlipXKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.FlipXKey, GetBoolFieldValue(Models.Metadata.Display.FlipXKey).FromYesNo());
if (GetInt64FieldValue(Models.Metadata.Display.HBEndKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HBEndKey, GetInt64FieldValue(Models.Metadata.Display.HBEndKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.HBStartKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HBStartKey, GetInt64FieldValue(Models.Metadata.Display.HBStartKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.HeightKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HeightKey, GetInt64FieldValue(Models.Metadata.Display.HeightKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.HTotalKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HTotalKey, GetInt64FieldValue(Models.Metadata.Display.HTotalKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.PixClockKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.PixClockKey, GetInt64FieldValue(Models.Metadata.Display.PixClockKey).ToString());
if (GetDoubleFieldValue(Models.Metadata.Display.RefreshKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.RefreshKey, GetDoubleFieldValue(Models.Metadata.Display.RefreshKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.RotateKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.RotateKey, GetInt64FieldValue(Models.Metadata.Display.RotateKey).ToString());
if (GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.DisplayTypeKey, GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey).AsEnumValue<DisplayType>().AsStringValue());
if (GetInt64FieldValue(Models.Metadata.Display.VBEndKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.VBEndKey, GetInt64FieldValue(Models.Metadata.Display.VBEndKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.VBStartKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.VBStartKey, GetInt64FieldValue(Models.Metadata.Display.VBStartKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.VTotalKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.VTotalKey, GetInt64FieldValue(Models.Metadata.Display.VTotalKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.WidthKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.WidthKey, GetInt64FieldValue(Models.Metadata.Display.WidthKey).ToString());
}
public Display(Models.Metadata.Video item) : base()
{
@@ -43,6 +72,20 @@ namespace SabreTools.DatItems.Formats
SetFieldValue<long?>(Models.Metadata.Display.RotateKey, 90);
break;
}
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Video.AspectXKey) != null)
SetFieldValue<string?>(Models.Metadata.Video.AspectXKey, GetInt64FieldValue(Models.Metadata.Video.AspectXKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Video.AspectYKey) != null)
SetFieldValue<string?>(Models.Metadata.Video.AspectYKey, GetInt64FieldValue(Models.Metadata.Video.AspectYKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Video.HeightKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HeightKey, GetInt64FieldValue(Models.Metadata.Video.HeightKey).ToString());
if (GetDoubleFieldValue(Models.Metadata.Video.RefreshKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.RefreshKey, GetDoubleFieldValue(Models.Metadata.Video.RefreshKey).ToString());
if (GetStringFieldValue(Models.Metadata.Video.ScreenKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.DisplayTypeKey, GetStringFieldValue(Models.Metadata.Video.ScreenKey).AsEnumValue<DisplayType>().AsStringValue());
if (GetInt64FieldValue(Models.Metadata.Video.WidthKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.WidthKey, GetInt64FieldValue(Models.Metadata.Video.WidthKey).ToString());
}
#endregion

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,32 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Driver() : base() { }
public Driver(Models.Metadata.Driver item) : base(item) { }
public Driver(Models.Metadata.Driver item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Driver.CocktailKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.CocktailKey, GetStringFieldValue(Models.Metadata.Driver.CocktailKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Driver.ColorKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.ColorKey, GetStringFieldValue(Models.Metadata.Driver.ColorKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Driver.EmulationKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.EmulationKey, GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.IncompleteKey, GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.NoSoundHardwareKey, GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo());
if (GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.PaletteSizeKey, GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey).ToString());
if (GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.RequiresArtworkKey, GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Driver.SaveStateKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.SaveStateKey, GetStringFieldValue(Models.Metadata.Driver.SaveStateKey).AsEnumValue<Supported>().AsStringValue(useSecond: true));
if (GetStringFieldValue(Models.Metadata.Driver.SoundKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.SoundKey, GetStringFieldValue(Models.Metadata.Driver.SoundKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Driver.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.StatusKey, GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.UnofficialKey, GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Feature() : base() { }
public Feature(Models.Metadata.Feature item) : base(item) { }
public Feature(Models.Metadata.Feature item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Feature.OverallKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.OverallKey, GetStringFieldValue(Models.Metadata.Feature.OverallKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.StatusKey, GetStringFieldValue(Models.Metadata.Feature.StatusKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.FeatureTypeKey, GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey).AsEnumValue<FeatureType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,8 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +35,28 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Input() : base() { }
public Input(Models.Metadata.Input item) : base(item) { }
public Input(Models.Metadata.Input item) : base(item)
{
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Input.ButtonsKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.ButtonsKey, GetInt64FieldValue(Models.Metadata.Input.ButtonsKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Input.CoinsKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.CoinsKey, GetInt64FieldValue(Models.Metadata.Input.CoinsKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Input.PlayersKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.PlayersKey, GetInt64FieldValue(Models.Metadata.Input.PlayersKey).ToString());
if (GetBoolFieldValue(Models.Metadata.Input.ServiceKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.ServiceKey, GetBoolFieldValue(Models.Metadata.Input.ServiceKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Input.TiltKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.TiltKey, GetBoolFieldValue(Models.Metadata.Input.TiltKey).FromYesNo());
// Handle subitems
var controls = item.ReadItemArray<Models.Metadata.Control>(Models.Metadata.Input.ControlKey);
if (controls != null)
{
Control[] controlItems = Array.ConvertAll(controls, control => new Control(control));
SetFieldValue<Control[]?>(Models.Metadata.Input.ControlKey, controlItems);
}
}
#endregion
}

View File

@@ -1,6 +1,7 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -30,6 +31,14 @@ namespace SabreTools.DatItems.Formats
public Media(Models.Metadata.Media item) : base(item)
{
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
// Process hash values
if (GetStringFieldValue(Models.Metadata.Media.MD5Key) != null)
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, TextHelper.NormalizeMD5(GetStringFieldValue(Models.Metadata.Media.MD5Key)));
if (GetStringFieldValue(Models.Metadata.Media.SHA1Key) != null)
SetFieldValue<string?>(Models.Metadata.Media.SHA1Key, TextHelper.NormalizeSHA1(GetStringFieldValue(Models.Metadata.Media.SHA1Key)));
if (GetStringFieldValue(Models.Metadata.Media.SHA256Key) != null)
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, TextHelper.NormalizeSHA256(GetStringFieldValue(Models.Metadata.Media.SHA256Key)));
}
#endregion

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -31,7 +32,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public PartFeature() : base() { }
public PartFeature(Models.Metadata.Feature item) : base(item) { }
public PartFeature(Models.Metadata.Feature item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Feature.OverallKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.OverallKey, GetStringFieldValue(Models.Metadata.Feature.OverallKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.StatusKey, GetStringFieldValue(Models.Metadata.Feature.StatusKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.FeatureTypeKey, GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey).AsEnumValue<FeatureType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,7 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +34,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Port() : base() { }
public Port(Models.Metadata.Port item) : base(item) { }
public Port(Models.Metadata.Port item) : base(item)
{
// Handle subitems
var analogs = item.ReadItemArray<Models.Metadata.Analog>(Models.Metadata.Port.AnalogKey);
if (analogs != null)
{
Analog[] analogItems = Array.ConvertAll(analogs, analog => new Analog(analog));
SetFieldValue<Analog[]?>(Models.Metadata.Port.AnalogKey, analogItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public RamOption() : base() { }
public RamOption(Models.Metadata.RamOption item) : base(item) { }
public RamOption(Models.Metadata.RamOption item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.RamOption.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.RamOption.DefaultKey, GetBoolFieldValue(Models.Metadata.RamOption.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Release() : base() { }
public Release(Models.Metadata.Release item) : base(item) { }
public Release(Models.Metadata.Release item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Release.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.Release.DefaultKey, GetBoolFieldValue(Models.Metadata.Release.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -92,6 +92,44 @@ namespace SabreTools.DatItems.Formats
public Rom(Models.Metadata.Rom item) : base(item)
{
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Rom.DisposeKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.DisposeKey, GetBoolFieldValue(Models.Metadata.Rom.DisposeKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Rom.InvertedKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.InvertedKey, GetBoolFieldValue(Models.Metadata.Rom.InvertedKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Rom.LoadFlagKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.LoadFlagKey, GetStringFieldValue(Models.Metadata.Rom.LoadFlagKey).AsEnumValue<LoadFlag>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Rom.OpenMSXMediaType) != null)
SetFieldValue<string?>(Models.Metadata.Rom.OpenMSXMediaType, GetStringFieldValue(Models.Metadata.Rom.OpenMSXMediaType).AsEnumValue<OpenMSXSubType>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Rom.MIAKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MIAKey, GetBoolFieldValue(Models.Metadata.Rom.MIAKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Rom.OptionalKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.OptionalKey, GetBoolFieldValue(Models.Metadata.Rom.OptionalKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Rom.SoundOnlyKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SoundOnlyKey, GetBoolFieldValue(Models.Metadata.Rom.SoundOnlyKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Rom.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.StatusKey, GetStringFieldValue(Models.Metadata.Rom.StatusKey).AsEnumValue<ItemStatus>().AsStringValue());
// Process hash values
if (GetInt64FieldValue(Models.Metadata.Rom.SizeKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString());
if (GetStringFieldValue(Models.Metadata.Rom.CRCKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, TextHelper.NormalizeCRC32(GetStringFieldValue(Models.Metadata.Rom.CRCKey)));
if (GetStringFieldValue(Models.Metadata.Rom.MD2Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, TextHelper.NormalizeMD2(GetStringFieldValue(Models.Metadata.Rom.MD2Key)));
if (GetStringFieldValue(Models.Metadata.Rom.MD4Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, TextHelper.NormalizeMD4(GetStringFieldValue(Models.Metadata.Rom.MD4Key)));
if (GetStringFieldValue(Models.Metadata.Rom.MD5Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, TextHelper.NormalizeMD5(GetStringFieldValue(Models.Metadata.Rom.MD5Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA1Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, TextHelper.NormalizeSHA1(GetStringFieldValue(Models.Metadata.Rom.SHA1Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA256Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, TextHelper.NormalizeSHA256(GetStringFieldValue(Models.Metadata.Rom.SHA256Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA384Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA384Key, TextHelper.NormalizeSHA384(GetStringFieldValue(Models.Metadata.Rom.SHA384Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA512Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA512Key, TextHelper.NormalizeSHA512(GetStringFieldValue(Models.Metadata.Rom.SHA512Key)));
}
#endregion

View File

@@ -1,5 +1,7 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +34,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Slot() : base() { }
public Slot(Models.Metadata.Slot item) : base(item) { }
public Slot(Models.Metadata.Slot item) : base(item)
{
// Handle subitems
var slotOptions = item.ReadItemArray<Models.Metadata.SlotOption>(Models.Metadata.Slot.SlotOptionKey);
if (slotOptions != null)
{
SlotOption[] slotOptionItems = Array.ConvertAll(slotOptions, slotOption => new SlotOption(slotOption));
SetFieldValue<SlotOption[]?>(Models.Metadata.Slot.SlotOptionKey, slotOptionItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public SlotOption() : base() { }
public SlotOption(Models.Metadata.SlotOption item) : base(item) { }
public SlotOption(Models.Metadata.SlotOption item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.SlotOption.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.SlotOption.DefaultKey, GetBoolFieldValue(Models.Metadata.SlotOption.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,15 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public SoftwareList() : base() { }
public SoftwareList(Models.Metadata.SoftwareList item) : base(item) { }
public SoftwareList(Models.Metadata.SoftwareList item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.SoftwareList.StatusKey, GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey).AsEnumValue<SoftwareListStatus>().AsStringValue());
// Handle subitems
// TODO: Handle the Software subitem
}
#endregion
}

View File

@@ -22,7 +22,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Sound() : base() { }
public Sound(Models.Metadata.Sound item) : base(item) { }
public Sound(Models.Metadata.Sound item) : base(item)
{
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey) != null)
SetFieldValue<string?>(Models.Metadata.Sound.ChannelsKey, GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey).ToString());
}
#endregion
}

View File

@@ -53,6 +53,28 @@ namespace SabreTools.DatItems
if (machine.ContainsKey(fieldName))
_internal[fieldName] = machine[fieldName];
}
// Process flag values
if (GetStringFieldValue(Models.Metadata.Machine.Im1CRCKey) != null)
SetFieldValue<string?>(Models.Metadata.Machine.Im1CRCKey, TextHelper.NormalizeCRC32(GetStringFieldValue(Models.Metadata.Machine.Im1CRCKey)));
if (GetStringFieldValue(Models.Metadata.Machine.Im2CRCKey) != null)
SetFieldValue<string?>(Models.Metadata.Machine.Im2CRCKey, TextHelper.NormalizeCRC32(GetStringFieldValue(Models.Metadata.Machine.Im2CRCKey)));
if (GetBoolFieldValue(Models.Metadata.Machine.IsBiosKey) != null)
SetFieldValue<string?>(Models.Metadata.Machine.IsBiosKey, GetBoolFieldValue(Models.Metadata.Machine.IsBiosKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) != null)
SetFieldValue<string?>(Models.Metadata.Machine.IsDeviceKey, GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Machine.IsMechanicalKey) != null)
SetFieldValue<string?>(Models.Metadata.Machine.IsMechanicalKey, GetBoolFieldValue(Models.Metadata.Machine.IsMechanicalKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Machine.SupportedKey) != null)
SetFieldValue<string?>(Models.Metadata.Machine.SupportedKey, GetStringFieldValue(Models.Metadata.Machine.SupportedKey).AsEnumValue<Supported>().AsStringValue());
// Handle Trurip object, if it exists
if (machine.ContainsKey(Models.Metadata.Machine.TruripKey))
{
var truripItem = machine.Read<Models.Logiqx.Trurip>(Models.Metadata.Machine.TruripKey);
if (truripItem != null)
SetFieldValue<Trurip>(Models.Metadata.Machine.TruripKey, new Trurip(truripItem));
}
}
#endregion