diff --git a/SabreTools.DatFiles/Setter.cs b/SabreTools.DatFiles/Setter.cs
index 736c9148..bbdddfe4 100644
--- a/SabreTools.DatFiles/Setter.cs
+++ b/SabreTools.DatFiles/Setter.cs
@@ -221,44 +221,28 @@ namespace SabreTools.DatFiles
#endregion
#region Item-Specific
+
+ // Handle unnested sets first
+ foreach (var kvp in DatItemMappings)
+ {
+ datItem.SetField(kvp.Key, kvp.Value);
+ }
+ // Handle nested sets
switch (datItem)
{
case Adjuster adjuster: SetFields(adjuster); break;
- case Analog analog: SetFields(analog); break;
- case Archive archive: SetFields(archive); break;
- case BiosSet biosSet: SetFields(biosSet); break;
- case Chip chip: SetFields(chip); break;
- case Condition condition: SetFields(condition); break;
case Configuration condition: SetFields(condition); break;
- case ConfLocation confLocation: SetFields(confLocation); break;
case ConfSetting confSetting: SetFields(confSetting); break;
- case Control control: SetFields(control); break;
- case DataArea dataArea: SetFields(dataArea); break;
case Device device: SetFields(device); break;
- case DipLocation dipLocation: SetFields(dipLocation); break;
case DipSwitch dipSwitch: SetFields(dipSwitch); break;
case DipValue dipValue: SetFields(dipValue); break;
case Disk disk: SetFields(disk); break;
- case DiskArea diskArea: SetFields(diskArea); break;
- case Display display: SetFields(display); break;
- case Driver driver: SetFields(driver); break;
- case Extension extension: SetFields(extension); break;
- case Feature feature: SetFields(feature); break;
case Input input: SetFields(input); break;
- case Instance instance: SetFields(instance); break;
- case Media media: SetFields(media); break;
case Part part: SetFields(part); break;
- case PartFeature partFeature: SetFields(partFeature); break;
case Port port: SetFields(port); break;
- case RamOption ramOption: SetFields(ramOption); break;
- case Release release: SetFields(release); break;
case Rom rom: SetFields(rom); break;
- case SharedFeature sharedFeat: SetFields(sharedFeat); break;
case Slot slot: SetFields(slot); break;
- case SlotOption slotOption: SetFields(slotOption); break;
- case SoftwareList softwareList: SetFields(softwareList); break;
- case Sound sound: SetFields(sound); break;
}
#endregion
@@ -268,124 +252,15 @@ namespace SabreTools.DatFiles
/// Set fields with given values
///
/// Machine to set fields on
- public void SetFields(Machine machine)
+ public void SetFields(Machine? machine)
{
if (machine == null || MachineMappings == null)
return;
- if (MachineMappings.ContainsKey(MachineField.Board))
- machine.Board = MachineMappings[MachineField.Board];
-
- if (MachineMappings.ContainsKey(MachineField.Buttons))
- machine.Buttons = MachineMappings[MachineField.Buttons];
-
- if (MachineMappings.ContainsKey(MachineField.Category))
- machine.Category = MachineMappings[MachineField.Category];
-
- if (MachineMappings.ContainsKey(MachineField.CloneOf))
- machine.CloneOf = MachineMappings[MachineField.CloneOf];
-
- if (MachineMappings.ContainsKey(MachineField.CloneOfID))
- machine.NoIntroCloneOfId = MachineMappings[MachineField.CloneOfID];
-
- if (MachineMappings.ContainsKey(MachineField.Comment))
- machine.Comment = MachineMappings[MachineField.Comment];
-
- if (MachineMappings.ContainsKey(MachineField.Control))
- machine.Control = MachineMappings[MachineField.Control];
-
- if (MachineMappings.ContainsKey(MachineField.Country))
- machine.Country = MachineMappings[MachineField.Country];
-
- if (MachineMappings.ContainsKey(MachineField.CRC))
- machine.Crc = MachineMappings[MachineField.CRC].AsYesNo();
-
- if (MachineMappings.ContainsKey(MachineField.Description))
- machine.Description = MachineMappings[MachineField.Description];
-
- if (MachineMappings.ContainsKey(MachineField.Developer))
- machine.Developer = MachineMappings[MachineField.Developer];
-
- if (MachineMappings.ContainsKey(MachineField.DisplayCount))
- machine.DisplayCount = MachineMappings[MachineField.DisplayCount];
-
- if (MachineMappings.ContainsKey(MachineField.DisplayType))
- machine.DisplayType = MachineMappings[MachineField.DisplayType];
-
- if (MachineMappings.ContainsKey(MachineField.Enabled))
- machine.Enabled = MachineMappings[MachineField.Enabled];
-
- if (MachineMappings.ContainsKey(MachineField.GenMSXID))
- machine.GenMSXID = MachineMappings[MachineField.GenMSXID];
-
- if (MachineMappings.ContainsKey(MachineField.Genre))
- machine.Genre = MachineMappings[MachineField.Genre];
-
- if (MachineMappings.ContainsKey(MachineField.History))
- machine.History = MachineMappings[MachineField.History];
-
- if (MachineMappings.ContainsKey(MachineField.ID))
- machine.NoIntroId = MachineMappings[MachineField.ID];
-
- if (MachineMappings.ContainsKey(MachineField.Manufacturer))
- machine.Manufacturer = MachineMappings[MachineField.Manufacturer];
-
- if (MachineMappings.ContainsKey(MachineField.Name))
- machine.Name = MachineMappings[MachineField.Name];
-
- if (MachineMappings.ContainsKey(MachineField.Players))
- machine.Players = MachineMappings[MachineField.Players];
-
- if (MachineMappings.ContainsKey(MachineField.Publisher))
- machine.Publisher = MachineMappings[MachineField.Publisher];
-
- if (MachineMappings.ContainsKey(MachineField.Ratings))
- machine.Ratings = MachineMappings[MachineField.Ratings];
-
- if (MachineMappings.ContainsKey(MachineField.RebuildTo))
- machine.RebuildTo = MachineMappings[MachineField.RebuildTo];
-
- if (MachineMappings.ContainsKey(MachineField.RelatedTo))
- machine.RelatedTo = MachineMappings[MachineField.RelatedTo];
-
- if (MachineMappings.ContainsKey(MachineField.RomOf))
- machine.RomOf = MachineMappings[MachineField.RomOf];
-
- if (MachineMappings.ContainsKey(MachineField.Rotation))
- machine.Rotation = MachineMappings[MachineField.Rotation];
-
- if (MachineMappings.ContainsKey(MachineField.Runnable))
- machine.Runnable = MachineMappings[MachineField.Runnable].AsRunnable();
-
- if (MachineMappings.ContainsKey(MachineField.SampleOf))
- machine.SampleOf = MachineMappings[MachineField.SampleOf];
-
- if (MachineMappings.ContainsKey(MachineField.Score))
- machine.Score = MachineMappings[MachineField.Score];
-
- if (MachineMappings.ContainsKey(MachineField.SourceFile))
- machine.SourceFile = MachineMappings[MachineField.SourceFile];
-
- if (MachineMappings.ContainsKey(MachineField.Status))
- machine.Status = MachineMappings[MachineField.Status];
-
- if (MachineMappings.ContainsKey(MachineField.Subgenre))
- machine.Subgenre = MachineMappings[MachineField.Subgenre];
-
- if (MachineMappings.ContainsKey(MachineField.Supported))
- machine.Supported = MachineMappings[MachineField.Supported].AsSupported();
-
- if (MachineMappings.ContainsKey(MachineField.System))
- machine.System = MachineMappings[MachineField.System];
-
- if (MachineMappings.ContainsKey(MachineField.TitleID))
- machine.TitleID = MachineMappings[MachineField.TitleID];
-
- if (MachineMappings.ContainsKey(MachineField.Type))
- machine.MachineType = MachineMappings[MachineField.Type].AsMachineType();
-
- if (MachineMappings.ContainsKey(MachineField.Year))
- machine.Year = MachineMappings[MachineField.Year];
+ foreach (var kvp in MachineMappings)
+ {
+ machine.SetField(kvp.Key, kvp.Value);
+ }
}
///
@@ -394,146 +269,27 @@ namespace SabreTools.DatFiles
/// Adjuster to remove replace fields in
private void SetFields(Adjuster adjuster)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Default))
- adjuster.Default = DatItemMappings[DatItemField.Default].AsYesNo();
-
// Field.DatItem_Conditions does not apply here
if (adjuster.ConditionsSpecified)
{
foreach (Condition subCondition in adjuster.Conditions!)
{
- SetFields(subCondition, true);
+ SetFields(subCondition);
}
}
}
- ///
- /// Set fields with given values
- ///
- /// Analog to remove replace fields in
- private void SetFields(Analog analog)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Analog_Mask))
- analog.Mask = DatItemMappings[DatItemField.Analog_Mask];
- }
-
- ///
- /// Set fields with given values
- ///
- /// Archive to remove replace fields in
- private void SetFields(Archive archive)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Categories))
- archive.Categories = DatItemMappings[DatItemField.Categories];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Clone))
- archive.CloneValue = DatItemMappings[DatItemField.Clone];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Complete))
- archive.Complete = DatItemMappings[DatItemField.Complete];
-
- if (DatItemMappings!.ContainsKey(DatItemField.DevStatus))
- archive.DevStatus = DatItemMappings[DatItemField.DevStatus];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Languages))
- archive.Languages = DatItemMappings[DatItemField.Languages];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Number))
- archive.Number = DatItemMappings[DatItemField.Number];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Physical))
- archive.Physical = DatItemMappings[DatItemField.Physical];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Region))
- archive.Region = DatItemMappings[DatItemField.Region];
-
- if (DatItemMappings!.ContainsKey(DatItemField.RegParent))
- archive.RegParent = DatItemMappings[DatItemField.RegParent];
- }
-
- ///
- /// Set fields with given values
- ///
- /// BiosSet to remove replace fields in
- private void SetFields(BiosSet biosSet)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Default))
- biosSet.Default = DatItemMappings[DatItemField.Default].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Description))
- biosSet.Description = DatItemMappings[DatItemField.Description];
- }
-
- ///
- /// Set fields with given values
- ///
- /// Chip to remove replace fields in
- private void SetFields(Chip chip)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.ChipType))
- chip.ChipType = DatItemMappings[DatItemField.ChipType].AsChipType();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Clock))
- chip.Clock = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Clock]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- chip.Tag = DatItemMappings[DatItemField.Tag];
- }
-
- ///
- /// Set fields with given values
- ///
- /// Condition to remove replace fields in
- /// True if this is a subitem, false otherwise
- private void SetFields(Condition condition, bool sub = false)
- {
- if (sub)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Condition_Mask))
- condition.Mask = DatItemMappings[DatItemField.Condition_Mask];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Condition_Relation))
- condition.Relation = DatItemMappings[DatItemField.Condition_Relation].AsRelation();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Condition_Tag))
- condition.Tag = DatItemMappings[DatItemField.Condition_Tag];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Condition_Value))
- condition.Value = DatItemMappings[DatItemField.Condition_Value];
- }
- else
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Mask))
- condition.Mask = DatItemMappings[DatItemField.Mask];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Relation))
- condition.Relation = DatItemMappings[DatItemField.Relation].AsRelation();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- condition.Tag = DatItemMappings[DatItemField.Tag];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Value))
- condition.Value = DatItemMappings[DatItemField.Value];
- }
- }
-
///
/// Set fields with given values
///
/// Configuration to remove replace fields in
private void SetFields(Configuration configuration)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Mask))
- configuration.Mask = DatItemMappings[DatItemField.Mask];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- configuration.Tag = DatItemMappings[DatItemField.Tag];
-
if (configuration.ConditionsSpecified)
{
foreach (Condition subCondition in configuration.Conditions!)
{
- SetFields(subCondition, true);
+ SetFields(subCondition);
}
}
@@ -549,134 +305,32 @@ namespace SabreTools.DatFiles
{
foreach (ConfSetting subSetting in configuration.Settings!)
{
- SetFields(subSetting);
+ SetFields(subSetting as DatItem);
}
}
}
- ///
- /// Set fields with given values
- ///
- /// ConfLocation to remove replace fields in
- private void SetFields(ConfLocation confLocation)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Location_Inverted))
- confLocation.Inverted = DatItemMappings[DatItemField.Location_Inverted].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Location_Name))
- confLocation.Name = DatItemMappings[DatItemField.Location_Name];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Location_Number))
- confLocation.Number = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Location_Number]);
- }
-
///
/// Set fields with given values
///
/// ConfSetting to remove replace fields in
private void SetFields(ConfSetting confSetting)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Setting_Default))
- confSetting.Default = DatItemMappings[DatItemField.Setting_Default].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Setting_Name))
- confSetting.Name = DatItemMappings[DatItemField.Setting_Name];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Setting_Value))
- confSetting.Value = DatItemMappings[DatItemField.Setting_Value];
-
if (confSetting.ConditionsSpecified)
{
foreach (Condition subCondition in confSetting.Conditions!)
{
- SetFields(subCondition, true);
+ SetFields(subCondition);
}
}
}
- ///
- /// Set fields with given values
- ///
- /// Control to remove replace fields in
- private void SetFields(Control control)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Buttons))
- control.Buttons = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Buttons]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Type))
- control.ControlType = DatItemMappings[DatItemField.Control_Type].AsControlType();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_KeyDelta))
- control.KeyDelta = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_KeyDelta]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Maximum))
- control.Maximum = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Maximum]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Minimum))
- control.Minimum = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Minimum]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Player))
- control.Player = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Player]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_RequiredButtons))
- control.RequiredButtons = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_RequiredButtons]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Reverse))
- control.Reverse = DatItemMappings[DatItemField.Control_Reverse].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Sensitivity))
- control.Sensitivity = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Control_Sensitivity]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Ways))
- control.Ways = DatItemMappings[DatItemField.Control_Ways];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Ways2))
- control.Ways2 = DatItemMappings[DatItemField.Control_Ways2];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Control_Ways3))
- control.Ways3 = DatItemMappings[DatItemField.Control_Ways3];
- }
-
- ///
- /// Set fields with given values
- ///
- /// DataArea to remove replace fields in
- private void SetFields(DataArea dataArea)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.AreaEndianness))
- dataArea.Endianness = DatItemMappings[DatItemField.AreaEndianness].AsEndianness();
-
- if (DatItemMappings!.ContainsKey(DatItemField.AreaName))
- dataArea.Name = DatItemMappings[DatItemField.AreaName];
-
- if (DatItemMappings!.ContainsKey(DatItemField.AreaSize))
- dataArea.Size = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.AreaSize]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.AreaWidth))
- dataArea.Width = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.AreaWidth]);
- }
-
///
/// Set fields with given values
///
/// Device to remove replace fields in
private void SetFields(Device device)
{
- if (DatItemMappings!.ContainsKey(DatItemField.DeviceType))
- device.DeviceType = DatItemMappings[DatItemField.DeviceType].AsDeviceType();
-
- if (DatItemMappings!.ContainsKey(DatItemField.FixedImage))
- device.FixedImage = DatItemMappings[DatItemField.FixedImage];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Interface))
- device.Interface = DatItemMappings[DatItemField.Interface];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Mandatory))
- device.Mandatory = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Mandatory]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- device.Tag = DatItemMappings[DatItemField.Tag];
-
if (device.ExtensionsSpecified)
{
foreach (Extension subExtension in device.Extensions!)
@@ -694,39 +348,17 @@ namespace SabreTools.DatFiles
}
}
- ///
- /// Set fields with given values
- ///
- /// DipLocation to remove replace fields in
- private void SetFields(DipLocation dipLocation)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Location_Inverted))
- dipLocation.Inverted = DatItemMappings[DatItemField.Location_Inverted].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Location_Name))
- dipLocation.Name = DatItemMappings[DatItemField.Location_Name];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Location_Number))
- dipLocation.Number = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Location_Number]);
- }
-
///
/// Set fields with given values
///
/// DipSwitch to remove replace fields in
private void SetFields(DipSwitch dipSwitch)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Mask))
- dipSwitch.Mask = DatItemMappings[DatItemField.Mask];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- dipSwitch.Tag = DatItemMappings[DatItemField.Tag];
-
if (dipSwitch.ConditionsSpecified)
{
foreach (Condition subCondition in dipSwitch.Conditions!)
{
- SetFields(subCondition, true);
+ SetFields(subCondition);
}
}
@@ -742,12 +374,12 @@ namespace SabreTools.DatFiles
{
foreach (DipValue subValue in dipSwitch.Values!)
{
- SetFields(subValue);
+ SetFields(subValue as DatItem);
}
}
dipSwitch.Part ??= new Part();
- SetFields(dipSwitch.Part);
+ SetFields(dipSwitch.Part as DatItem);
}
///
@@ -756,20 +388,11 @@ namespace SabreTools.DatFiles
/// DipValue to remove replace fields in
private void SetFields(DipValue dipValue)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Setting_Default))
- dipValue.Default = DatItemMappings[DatItemField.Setting_Default].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Setting_Name))
- dipValue.Name = DatItemMappings[DatItemField.Setting_Name];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Setting_Value))
- dipValue.Value = DatItemMappings[DatItemField.Setting_Value];
-
if (dipValue.ConditionsSpecified)
{
foreach (Condition subCondition in dipValue.Conditions!)
{
- SetFields(subCondition, true);
+ SetFields(subCondition);
}
}
}
@@ -780,161 +403,11 @@ namespace SabreTools.DatFiles
/// Disk to remove replace fields in
private void SetFields(Disk disk)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Index))
- disk.Index = DatItemMappings[DatItemField.Index];
-
- if (DatItemMappings!.ContainsKey(DatItemField.MD5))
- disk.MD5 = DatItemMappings[DatItemField.MD5];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Merge))
- disk.MergeTag = DatItemMappings[DatItemField.Merge];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Optional))
- disk.Optional = DatItemMappings[DatItemField.Optional].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Region))
- disk.Region = DatItemMappings[DatItemField.Region];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SHA1))
- disk.SHA1 = DatItemMappings[DatItemField.SHA1];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Status))
- disk.ItemStatus = DatItemMappings[DatItemField.Status].AsItemStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Writable))
- disk.Writable = DatItemMappings[DatItemField.Writable].AsYesNo();
-
disk.DiskArea ??= new DiskArea();
SetFields(disk.DiskArea);
disk.Part ??= new Part();
- SetFields(disk.Part);
- }
-
- ///
- /// Set fields with given values
- ///
- /// DiskArea to remove replace fields in
- private void SetFields(DiskArea diskArea)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.AreaName))
- diskArea.Name = DatItemMappings[DatItemField.AreaName];
- }
-
- ///
- /// Set fields with given values
- ///
- /// Display to remove replace fields in
- private void SetFields(Display display)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.DisplayType))
- display.DisplayType = DatItemMappings[DatItemField.DisplayType].AsDisplayType();
-
- if (DatItemMappings!.ContainsKey(DatItemField.FlipX))
- display.FlipX = DatItemMappings[DatItemField.FlipX].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Height))
- display.Height = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Height]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.HBEnd))
- display.HBEnd = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.HBEnd]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.HBStart))
- display.HBStart = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.HBStart]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.HTotal))
- display.HTotal = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.HTotal]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.PixClock))
- display.PixClock = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.PixClock]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Refresh))
- display.Refresh = NumberHelper.ConvertToDouble(DatItemMappings[DatItemField.Refresh]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Rotate))
- display.Rotate = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Rotate]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- display.Tag = DatItemMappings[DatItemField.Tag];
-
- if (DatItemMappings!.ContainsKey(DatItemField.VBEnd))
- display.VBEnd = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.VBEnd]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.VBStart))
- display.VBStart = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.VBStart]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.VTotal))
- display.VTotal = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.VTotal]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Width))
- display.Width = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Width]);
- }
-
- ///
- /// Set fields with given values
- ///
- /// Driver to remove replace fields in
- private void SetFields(Driver driver)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.CocktailStatus))
- driver.Cocktail = DatItemMappings[DatItemField.CocktailStatus].AsSupportStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Incomplete))
- driver.Incomplete = DatItemMappings[DatItemField.Incomplete].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.EmulationStatus))
- driver.Emulation = DatItemMappings[DatItemField.EmulationStatus].AsSupportStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.NoSoundHardware))
- driver.NoSoundHardware = DatItemMappings[DatItemField.NoSoundHardware].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.RequiresArtwork))
- driver.RequiresArtwork = DatItemMappings[DatItemField.RequiresArtwork].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.SaveStateStatus))
- driver.SaveState = DatItemMappings[DatItemField.SaveStateStatus].AsSupported();
-
- if (DatItemMappings!.ContainsKey(DatItemField.SupportStatus))
- driver.Status = DatItemMappings[DatItemField.SupportStatus].AsSupportStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Unofficial))
- driver.Unofficial = DatItemMappings[DatItemField.Unofficial].AsYesNo();
- }
-
- ///
- /// Set fields with given values
- ///
- /// Extension to remove replace fields in
- private void SetFields(Extension extension)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Extension_Name))
- extension.Name = DatItemMappings[DatItemField.Extension_Name];
- }
-
- ///
- /// Set fields with given values
- ///
- /// Feature to remove replace fields in
- private void SetFields(Feature feature)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.FeatureOverall))
- feature.Overall = DatItemMappings[DatItemField.FeatureOverall].AsFeatureStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.FeatureStatus))
- feature.Status = DatItemMappings[DatItemField.FeatureStatus].AsFeatureStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.FeatureType))
- feature.Type = DatItemMappings[DatItemField.FeatureType].AsFeatureType();
- }
-
- ///
- /// Set fields with given values
- ///
- /// Info to remove replace fields in
- private void SetFields(Info info)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Value))
- info.Value = DatItemMappings[DatItemField.Value];
+ SetFields(disk.Part as DatItem);
}
///
@@ -943,18 +416,6 @@ namespace SabreTools.DatFiles
/// Input to remove replace fields in
private void SetFields(Input input)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Coins))
- input.Coins = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Coins]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Players))
- input.Players = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Players]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.Service))
- input.Service = DatItemMappings[DatItemField.Service].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tilt))
- input.Tilt = DatItemMappings[DatItemField.Tilt].AsYesNo();
-
if (input.ControlsSpecified)
{
foreach (Control subControl in input.Controls!)
@@ -964,50 +425,12 @@ namespace SabreTools.DatFiles
}
}
- ///
- /// Set fields with given values
- ///
- /// Instance to remove replace fields in
- private void SetFields(Instance instance)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Instance_BriefName))
- instance.BriefName = DatItemMappings[DatItemField.Instance_BriefName];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Instance_Name))
- instance.BriefName = DatItemMappings[DatItemField.Instance_Name];
- }
-
- ///
- /// Set fields with given values
- ///
- /// Media to remove replace fields in
- private void SetFields(Media media)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.MD5))
- media.MD5 = DatItemMappings[DatItemField.MD5];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SHA1))
- media.SHA1 = DatItemMappings[DatItemField.SHA1];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SHA256))
- media.SHA256 = DatItemMappings[DatItemField.SHA256];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SpamSum))
- media.SpamSum = DatItemMappings[DatItemField.SpamSum];
- }
-
- ///
+ /// s
/// Set fields with given values
///
/// Part to remove replace fields in
private void SetFields(Part part)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Part_Interface))
- part.Interface = DatItemMappings[DatItemField.Part_Interface];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Part_Name))
- part.Name = DatItemMappings[DatItemField.Part_Name];
-
if (part.FeaturesSpecified)
{
foreach (PartFeature subPartFeature in part.Features!)
@@ -1017,28 +440,12 @@ namespace SabreTools.DatFiles
}
}
- ///
- /// Set fields with given values
- ///
- /// PartFeature to remove replace fields in
- private void SetFields(PartFeature partFeature)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Part_Feature_Name))
- partFeature.Name = DatItemMappings[DatItemField.Part_Feature_Name];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Part_Feature_Value))
- partFeature.Value = DatItemMappings[DatItemField.Part_Feature_Value];
- }
-
///
/// Set fields with given values
///
/// Port to remove replace fields in
private void SetFields(Port port)
{
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- port.Tag = DatItemMappings[DatItemField.Tag];
-
if (port.AnalogsSpecified)
{
foreach (Analog subAnalog in port.Analogs!)
@@ -1048,152 +455,17 @@ namespace SabreTools.DatFiles
}
}
- ///
- /// Set fields with given values
- ///
- /// RamOption to remove replace fields in
- private void SetFields(RamOption ramOption)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Content))
- ramOption.Content = DatItemMappings[DatItemField.Content];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Default))
- ramOption.Default = DatItemMappings[DatItemField.Default].AsYesNo();
- }
-
- ///
- /// Set fields with given values
- ///
- /// Release to remove replace fields in
- private void SetFields(Release release)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Date))
- release.Date = DatItemMappings[DatItemField.Date];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Default))
- release.Default = DatItemMappings[DatItemField.Default].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Language))
- release.Language = DatItemMappings[DatItemField.Language];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Region))
- release.Region = DatItemMappings[DatItemField.Region];
- }
-
///
/// Set fields with given values
///
/// Rom to remove replace fields in
private void SetFields(Rom rom)
{
- if (DatItemMappings!.ContainsKey(DatItemField.AltName))
- rom.AltName = DatItemMappings[DatItemField.AltName];
-
- if (DatItemMappings!.ContainsKey(DatItemField.AltTitle))
- rom.AltTitle = DatItemMappings[DatItemField.AltTitle];
-
- if (DatItemMappings!.ContainsKey(DatItemField.ArchiveDotOrgFormat))
- rom.ArchiveDotOrgFormat = DatItemMappings[DatItemField.ArchiveDotOrgFormat];
-
- if (DatItemMappings!.ContainsKey(DatItemField.ArchiveDotOrgSource))
- rom.ArchiveDotOrgSource = DatItemMappings[DatItemField.ArchiveDotOrgSource];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Bios))
- rom.Bios = DatItemMappings[DatItemField.Bios];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Boot))
- rom.Boot = DatItemMappings[DatItemField.Boot];
-
- if (DatItemMappings!.ContainsKey(DatItemField.CRC))
- rom.CRC = DatItemMappings[DatItemField.CRC];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Date))
- rom.Date = DatItemMappings[DatItemField.Date];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Inverted))
- rom.Inverted = DatItemMappings[DatItemField.Inverted].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.LoadFlag))
- rom.LoadFlag = DatItemMappings[DatItemField.LoadFlag].AsLoadFlag();
-
- if (DatItemMappings!.ContainsKey(DatItemField.MD5))
- rom.MD5 = DatItemMappings[DatItemField.MD5];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Merge))
- rom.MergeTag = DatItemMappings[DatItemField.Merge];
-
- if (DatItemMappings!.ContainsKey(DatItemField.MIA))
- rom.MIA = DatItemMappings[DatItemField.MIA].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Offset))
- rom.Offset = DatItemMappings[DatItemField.Offset];
-
- if (DatItemMappings!.ContainsKey(DatItemField.OpenMSXSubType))
- rom.OpenMSXSubType = DatItemMappings[DatItemField.OpenMSXSubType].AsOpenMSXSubType();
-
- if (DatItemMappings!.ContainsKey(DatItemField.OpenMSXType))
- rom.OpenMSXType = DatItemMappings[DatItemField.OpenMSXType];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Optional))
- rom.Optional = DatItemMappings[DatItemField.Optional].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Original))
- rom.Original = new Original() { Content = DatItemMappings[DatItemField.Original] };
-
- if (DatItemMappings!.ContainsKey(DatItemField.OriginalFilename))
- rom.OriginalFilename = DatItemMappings[DatItemField.OriginalFilename];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Region))
- rom.Region = DatItemMappings[DatItemField.Region];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Remark))
- rom.Remark = DatItemMappings[DatItemField.Remark];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Rotation))
- rom.Rotation = DatItemMappings[DatItemField.Rotation];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SHA1))
- rom.SHA1 = DatItemMappings[DatItemField.SHA1];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SHA256))
- rom.SHA256 = DatItemMappings[DatItemField.SHA256];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SHA384))
- rom.SHA384 = DatItemMappings[DatItemField.SHA384];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SHA512))
- rom.SHA512 = DatItemMappings[DatItemField.SHA512];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Size))
- rom.Size = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Size]);
-
- if (DatItemMappings!.ContainsKey(DatItemField.SpamSum))
- rom.SpamSum = DatItemMappings[DatItemField.SpamSum];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Status))
- rom.ItemStatus = DatItemMappings[DatItemField.Status].AsItemStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Summation))
- rom.Summation = DatItemMappings[DatItemField.Summation];
-
- if (DatItemMappings!.ContainsKey(DatItemField.Value))
- rom.Value = DatItemMappings[DatItemField.Value];
-
rom.DataArea ??= new DataArea();
SetFields(rom.DataArea);
rom.Part ??= new Part();
- SetFields(rom.Part);
- }
-
- ///
- /// Set fields with given values
- ///
- /// SharedFeature to remove replace fields in
- private void SetFields(SharedFeature sharedFeature)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Value))
- sharedFeature.Value = DatItemMappings[DatItemField.Value];
+ SetFields(rom.Part as DatItem);
}
///
@@ -1210,47 +482,5 @@ namespace SabreTools.DatFiles
}
}
}
-
- ///
- /// Set fields with given values
- ///
- /// SlotOption to remove replace fields in
- private void SetFields(SlotOption slotOption)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.SlotOption_Default))
- slotOption.Default = DatItemMappings[DatItemField.SlotOption_Default].AsYesNo();
-
- if (DatItemMappings!.ContainsKey(DatItemField.SlotOption_DeviceName))
- slotOption.DeviceName = DatItemMappings[DatItemField.SlotOption_DeviceName];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SlotOption_Name))
- slotOption.Name = DatItemMappings[DatItemField.SlotOption_Name];
- }
-
- ///
- /// Set fields with given values
- ///
- /// SoftwareList to remove replace fields in
- private void SetFields(SoftwareList softwareList)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Filter))
- softwareList.Filter = DatItemMappings[DatItemField.Filter];
-
- if (DatItemMappings!.ContainsKey(DatItemField.SoftwareListStatus))
- softwareList.Status = DatItemMappings[DatItemField.SoftwareListStatus].AsSoftwareListStatus();
-
- if (DatItemMappings!.ContainsKey(DatItemField.Tag))
- softwareList.Tag = DatItemMappings[DatItemField.Tag];
- }
-
- ///
- /// Set fields with given values
- ///
- /// Sound to remove replace fields in
- private void SetFields(Sound sound)
- {
- if (DatItemMappings!.ContainsKey(DatItemField.Channels))
- sound.Channels = NumberHelper.ConvertToInt64(DatItemMappings[DatItemField.Channels]);
- }
}
}
\ No newline at end of file
diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs
index b998dc41..f9031e2f 100644
--- a/SabreTools.DatItems/DatItem.cs
+++ b/SabreTools.DatItems/DatItem.cs
@@ -371,6 +371,8 @@ namespace SabreTools.DatItems
#endregion
+ // TODO: These should not take a field enum
+ // TODO: These should be item-specific for better filtering
#region Manipulation
///
@@ -380,6 +382,15 @@ namespace SabreTools.DatItems
/// True if the removal was successful, false otherwise
public abstract bool RemoveField(DatItemField datItemField);
+ ///
+ /// Set a field in the DatItem from a mapping string
+ ///
+ /// Item field to set
+ /// String representing the value to set
+ /// True if the setting was successful, false otherwise
+ /// This only performs minimal validation before setting
+ public abstract bool SetField(DatItemField datItemField, string value);
+
#endregion
#region Sorting and Merging
diff --git a/SabreTools.DatItems/Formats/Adjuster.cs b/SabreTools.DatItems/Formats/Adjuster.cs
index 2790c009..0c8b0957 100644
--- a/SabreTools.DatItems/Formats/Adjuster.cs
+++ b/SabreTools.DatItems/Formats/Adjuster.cs
@@ -115,6 +115,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Default => Models.Metadata.Adjuster.DefaultKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Analog.cs b/SabreTools.DatItems/Formats/Analog.cs
index 6c25e297..ce62cd56 100644
--- a/SabreTools.DatItems/Formats/Analog.cs
+++ b/SabreTools.DatItems/Formats/Analog.cs
@@ -76,6 +76,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Analog_Mask => Models.Metadata.Analog.MaskKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Archive.cs b/SabreTools.DatItems/Formats/Archive.cs
index 90a0c768..bb323fdf 100644
--- a/SabreTools.DatItems/Formats/Archive.cs
+++ b/SabreTools.DatItems/Formats/Archive.cs
@@ -151,6 +151,19 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/BiosSet.cs b/SabreTools.DatItems/Formats/BiosSet.cs
index c0c5717f..813b7d9d 100644
--- a/SabreTools.DatItems/Formats/BiosSet.cs
+++ b/SabreTools.DatItems/Formats/BiosSet.cs
@@ -111,6 +111,21 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Default => Models.Metadata.BiosSet.DefaultKey,
+ DatItemField.Description => Models.Metadata.BiosSet.DescriptionKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Blank.cs b/SabreTools.DatItems/Formats/Blank.cs
index f37cb8b6..f47680c1 100644
--- a/SabreTools.DatItems/Formats/Blank.cs
+++ b/SabreTools.DatItems/Formats/Blank.cs
@@ -63,6 +63,9 @@ namespace SabreTools.DatItems.Formats
///
public override bool RemoveField(DatItemField datItemField) => true;
+ ///
+ public override bool SetField(DatItemField datItemField, string value) => true;
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Chip.cs b/SabreTools.DatItems/Formats/Chip.cs
index e5270038..c86a0515 100644
--- a/SabreTools.DatItems/Formats/Chip.cs
+++ b/SabreTools.DatItems/Formats/Chip.cs
@@ -128,6 +128,22 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.ChipType => Models.Metadata.Chip.ChipTypeKey,
+ DatItemField.Clock => Models.Metadata.Chip.ClockKey,
+ DatItemField.Tag => Models.Metadata.Chip.TagKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Condition.cs b/SabreTools.DatItems/Formats/Condition.cs
index 861a477d..fa02b7b6 100644
--- a/SabreTools.DatItems/Formats/Condition.cs
+++ b/SabreTools.DatItems/Formats/Condition.cs
@@ -119,6 +119,27 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Mask => Models.Metadata.Condition.MaskKey,
+ DatItemField.Condition_Mask => Models.Metadata.Condition.MaskKey,
+ DatItemField.Relation => Models.Metadata.Condition.RelationKey,
+ DatItemField.Condition_Relation => Models.Metadata.Condition.RelationKey,
+ DatItemField.Tag => Models.Metadata.Condition.TagKey,
+ DatItemField.Condition_Tag => Models.Metadata.Condition.TagKey,
+ DatItemField.Value => Models.Metadata.Condition.ValueKey,
+ DatItemField.Condition_Value => Models.Metadata.Condition.ValueKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/ConfLocation.cs b/SabreTools.DatItems/Formats/ConfLocation.cs
index 493d5d1f..80bf3098 100644
--- a/SabreTools.DatItems/Formats/ConfLocation.cs
+++ b/SabreTools.DatItems/Formats/ConfLocation.cs
@@ -116,6 +116,23 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Inverted => Models.Metadata.ConfLocation.InvertedKey,
+ DatItemField.Location_Inverted => Models.Metadata.ConfLocation.InvertedKey,
+ DatItemField.Number => Models.Metadata.ConfLocation.NumberKey,
+ DatItemField.Location_Number => Models.Metadata.ConfLocation.NumberKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/ConfSetting.cs b/SabreTools.DatItems/Formats/ConfSetting.cs
index f6d5c313..cb215da6 100644
--- a/SabreTools.DatItems/Formats/ConfSetting.cs
+++ b/SabreTools.DatItems/Formats/ConfSetting.cs
@@ -128,6 +128,23 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Default => Models.Metadata.ConfSetting.DefaultKey,
+ DatItemField.Setting_Default => Models.Metadata.ConfSetting.DefaultKey,
+ DatItemField.Value => Models.Metadata.ConfSetting.ValueKey,
+ DatItemField.Setting_Value => Models.Metadata.ConfSetting.ValueKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Configuration.cs b/SabreTools.DatItems/Formats/Configuration.cs
index 0f0ebe14..98f92617 100644
--- a/SabreTools.DatItems/Formats/Configuration.cs
+++ b/SabreTools.DatItems/Formats/Configuration.cs
@@ -149,6 +149,21 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Mask => Models.Metadata.Configuration.MaskKey,
+ DatItemField.Tag => Models.Metadata.Configuration.TagKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Control.cs b/SabreTools.DatItems/Formats/Control.cs
index 12553d5a..6cf709d3 100644
--- a/SabreTools.DatItems/Formats/Control.cs
+++ b/SabreTools.DatItems/Formats/Control.cs
@@ -199,7 +199,7 @@ namespace SabreTools.DatItems.Formats
}
#endregion
-
+
#region Manipulation
///
@@ -227,6 +227,31 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Control_Buttons => Models.Metadata.Control.ButtonsKey,
+ DatItemField.Control_KeyDelta => Models.Metadata.Control.KeyDeltaKey,
+ DatItemField.Control_Maximum => Models.Metadata.Control.MaximumKey,
+ DatItemField.Control_Minimum => Models.Metadata.Control.MinimumKey,
+ DatItemField.Control_Player => Models.Metadata.Control.PlayerKey,
+ DatItemField.Control_RequiredButtons => Models.Metadata.Control.ReqButtonsKey,
+ DatItemField.Control_Reverse => Models.Metadata.Control.ReverseKey,
+ DatItemField.Control_Sensitivity => Models.Metadata.Control.SensitivityKey,
+ DatItemField.Control_Type => Models.Metadata.Control.ControlTypeKey,
+ DatItemField.Control_Ways => Models.Metadata.Control.WaysKey,
+ DatItemField.Control_Ways2 => Models.Metadata.Control.Ways2Key,
+ DatItemField.Control_Ways3 => Models.Metadata.Control.Ways3Key,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/DataArea.cs b/SabreTools.DatItems/Formats/DataArea.cs
index 1fa35df7..f655c146 100644
--- a/SabreTools.DatItems/Formats/DataArea.cs
+++ b/SabreTools.DatItems/Formats/DataArea.cs
@@ -130,6 +130,22 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.AreaEndianness => Models.Metadata.DataArea.EndiannessKey,
+ DatItemField.AreaSize => Models.Metadata.DataArea.SizeKey,
+ DatItemField.AreaWidth => Models.Metadata.DataArea.WidthKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Device.cs b/SabreTools.DatItems/Formats/Device.cs
index 8b02c8f6..3d889712 100644
--- a/SabreTools.DatItems/Formats/Device.cs
+++ b/SabreTools.DatItems/Formats/Device.cs
@@ -158,6 +158,24 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.DeviceType => Models.Metadata.Device.DeviceTypeKey,
+ DatItemField.FixedImage => Models.Metadata.Device.FixedImageKey,
+ DatItemField.Interface => Models.Metadata.Device.InterfaceKey,
+ DatItemField.Mandatory => Models.Metadata.Device.MandatoryKey,
+ DatItemField.Tag => Models.Metadata.Device.TagKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/DeviceReference.cs b/SabreTools.DatItems/Formats/DeviceReference.cs
index 17e91338..3c58cc3a 100644
--- a/SabreTools.DatItems/Formats/DeviceReference.cs
+++ b/SabreTools.DatItems/Formats/DeviceReference.cs
@@ -86,6 +86,19 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/DipLocation.cs b/SabreTools.DatItems/Formats/DipLocation.cs
index 000ad012..eef25719 100644
--- a/SabreTools.DatItems/Formats/DipLocation.cs
+++ b/SabreTools.DatItems/Formats/DipLocation.cs
@@ -116,6 +116,23 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Inverted => Models.Metadata.DipLocation.InvertedKey,
+ DatItemField.Location_Inverted => Models.Metadata.DipLocation.InvertedKey,
+ DatItemField.Number => Models.Metadata.DipLocation.NumberKey,
+ DatItemField.Location_Number => Models.Metadata.DipLocation.NumberKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/DipSwitch.cs b/SabreTools.DatItems/Formats/DipSwitch.cs
index 92ffc180..987896a1 100644
--- a/SabreTools.DatItems/Formats/DipSwitch.cs
+++ b/SabreTools.DatItems/Formats/DipSwitch.cs
@@ -177,6 +177,21 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Mask => Models.Metadata.DipSwitch.MaskKey,
+ DatItemField.Tag => Models.Metadata.DipSwitch.TagKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/DipValue.cs b/SabreTools.DatItems/Formats/DipValue.cs
index a8027daa..d3a5ac2c 100644
--- a/SabreTools.DatItems/Formats/DipValue.cs
+++ b/SabreTools.DatItems/Formats/DipValue.cs
@@ -128,6 +128,23 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Default => Models.Metadata.DipValue.DefaultKey,
+ DatItemField.Setting_Default => Models.Metadata.DipValue.DefaultKey,
+ DatItemField.Value => Models.Metadata.DipValue.ValueKey,
+ DatItemField.Setting_Value => Models.Metadata.DipValue.ValueKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Disk.cs b/SabreTools.DatItems/Formats/Disk.cs
index e07370a7..89779c58 100644
--- a/SabreTools.DatItems/Formats/Disk.cs
+++ b/SabreTools.DatItems/Formats/Disk.cs
@@ -309,6 +309,27 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Index => Models.Metadata.Disk.IndexKey,
+ DatItemField.MD5 => Models.Metadata.Disk.MD5Key,
+ DatItemField.Merge => Models.Metadata.Disk.MergeKey,
+ DatItemField.Optional => Models.Metadata.Disk.OptionalKey,
+ DatItemField.Region => Models.Metadata.Disk.RegionKey,
+ DatItemField.SHA1 => Models.Metadata.Disk.SHA1Key,
+ DatItemField.Status => Models.Metadata.Disk.StatusKey,
+ DatItemField.Writable => Models.Metadata.Disk.WritableKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
#region Sorting and Merging
diff --git a/SabreTools.DatItems/Formats/DiskArea.cs b/SabreTools.DatItems/Formats/DiskArea.cs
index f339b775..932a7487 100644
--- a/SabreTools.DatItems/Formats/DiskArea.cs
+++ b/SabreTools.DatItems/Formats/DiskArea.cs
@@ -87,6 +87,19 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Display.cs b/SabreTools.DatItems/Formats/Display.cs
index 6a450198..4a8ac93a 100644
--- a/SabreTools.DatItems/Formats/Display.cs
+++ b/SabreTools.DatItems/Formats/Display.cs
@@ -261,6 +261,33 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.DisplayType => Models.Metadata.Display.DisplayTypeKey,
+ DatItemField.FlipX => Models.Metadata.Display.FlipXKey,
+ DatItemField.HBEnd => Models.Metadata.Display.HBEndKey,
+ DatItemField.HBStart => Models.Metadata.Display.HBStartKey,
+ DatItemField.Height => Models.Metadata.Display.HeightKey,
+ DatItemField.HTotal => Models.Metadata.Display.HTotalKey,
+ DatItemField.PixClock => Models.Metadata.Display.PixClockKey,
+ DatItemField.Refresh => Models.Metadata.Display.RefreshKey,
+ DatItemField.Rotate => Models.Metadata.Display.RotateKey,
+ DatItemField.Tag => Models.Metadata.Display.TagKey,
+ DatItemField.VBEnd => Models.Metadata.Display.VBEndKey,
+ DatItemField.VBStart => Models.Metadata.Display.VBStartKey,
+ DatItemField.VTotal => Models.Metadata.Display.VTotalKey,
+ DatItemField.Width => Models.Metadata.Display.WidthKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Driver.cs b/SabreTools.DatItems/Formats/Driver.cs
index 170512aa..10391be7 100644
--- a/SabreTools.DatItems/Formats/Driver.cs
+++ b/SabreTools.DatItems/Formats/Driver.cs
@@ -186,6 +186,27 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.CocktailStatus => Models.Metadata.Driver.CocktailKey,
+ DatItemField.EmulationStatus => Models.Metadata.Driver.EmulationKey,
+ DatItemField.Incomplete => Models.Metadata.Driver.IncompleteKey,
+ DatItemField.NoSoundHardware => Models.Metadata.Driver.NoSoundHardwareKey,
+ DatItemField.RequiresArtwork => Models.Metadata.Driver.RequiresArtworkKey,
+ DatItemField.SaveStateStatus => Models.Metadata.Driver.SaveStateKey,
+ DatItemField.SupportStatus => Models.Metadata.Driver.StatusKey,
+ DatItemField.Unofficial => Models.Metadata.Driver.UnofficialKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Extension.cs b/SabreTools.DatItems/Formats/Extension.cs
index ec7d1141..301a22c8 100644
--- a/SabreTools.DatItems/Formats/Extension.cs
+++ b/SabreTools.DatItems/Formats/Extension.cs
@@ -86,6 +86,19 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Feature.cs b/SabreTools.DatItems/Formats/Feature.cs
index 4dec4825..be3bb310 100644
--- a/SabreTools.DatItems/Formats/Feature.cs
+++ b/SabreTools.DatItems/Formats/Feature.cs
@@ -112,6 +112,22 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.FeatureOverall => Models.Metadata.Feature.OverallKey,
+ DatItemField.FeatureStatus => Models.Metadata.Feature.StatusKey,
+ DatItemField.FeatureType => Models.Metadata.Feature.FeatureTypeKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/File.cs b/SabreTools.DatItems/Formats/File.cs
index 3dbf91c4..8a5fbc41 100644
--- a/SabreTools.DatItems/Formats/File.cs
+++ b/SabreTools.DatItems/Formats/File.cs
@@ -342,6 +342,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ // TODO: Figure out what fields go here
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
#region Sorting and Merging
diff --git a/SabreTools.DatItems/Formats/Info.cs b/SabreTools.DatItems/Formats/Info.cs
index 34fc49b5..0676a919 100644
--- a/SabreTools.DatItems/Formats/Info.cs
+++ b/SabreTools.DatItems/Formats/Info.cs
@@ -97,6 +97,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Value => Models.Metadata.Info.ValueKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Input.cs b/SabreTools.DatItems/Formats/Input.cs
index 2819f959..295c2d6b 100644
--- a/SabreTools.DatItems/Formats/Input.cs
+++ b/SabreTools.DatItems/Formats/Input.cs
@@ -136,6 +136,23 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Coins => Models.Metadata.Input.CoinsKey,
+ DatItemField.Players => Models.Metadata.Input.PlayersKey,
+ DatItemField.Service => Models.Metadata.Input.ServiceKey,
+ DatItemField.Tilt => Models.Metadata.Input.TiltKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Instance.cs b/SabreTools.DatItems/Formats/Instance.cs
index 316dfd2d..25ce80c6 100644
--- a/SabreTools.DatItems/Formats/Instance.cs
+++ b/SabreTools.DatItems/Formats/Instance.cs
@@ -97,6 +97,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Instance_BriefName => Models.Metadata.Instance.BriefNameKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Media.cs b/SabreTools.DatItems/Formats/Media.cs
index d27a5832..5f89a264 100644
--- a/SabreTools.DatItems/Formats/Media.cs
+++ b/SabreTools.DatItems/Formats/Media.cs
@@ -203,6 +203,23 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.MD5 => Models.Metadata.Media.MD5Key,
+ DatItemField.SHA1 => Models.Metadata.Media.SHA1Key,
+ DatItemField.SHA256 => Models.Metadata.Media.SHA256Key,
+ DatItemField.SpamSum => Models.Metadata.Media.SpamSumKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
#region Sorting and Merging
diff --git a/SabreTools.DatItems/Formats/Part.cs b/SabreTools.DatItems/Formats/Part.cs
index 629d138f..5cfbb696 100644
--- a/SabreTools.DatItems/Formats/Part.cs
+++ b/SabreTools.DatItems/Formats/Part.cs
@@ -104,6 +104,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Part_Interface => Models.Metadata.Part.InterfaceKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/PartFeature.cs b/SabreTools.DatItems/Formats/PartFeature.cs
index fdbd0ea4..62271973 100644
--- a/SabreTools.DatItems/Formats/PartFeature.cs
+++ b/SabreTools.DatItems/Formats/PartFeature.cs
@@ -98,6 +98,21 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Value => Models.Metadata.Feature.ValueKey,
+ DatItemField.Part_Feature_Value => Models.Metadata.Feature.ValueKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Port.cs b/SabreTools.DatItems/Formats/Port.cs
index d2e9e18f..5bce067c 100644
--- a/SabreTools.DatItems/Formats/Port.cs
+++ b/SabreTools.DatItems/Formats/Port.cs
@@ -91,6 +91,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Tag => Models.Metadata.Port.TagKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/RamOption.cs b/SabreTools.DatItems/Formats/RamOption.cs
index 113978ce..7ff9603b 100644
--- a/SabreTools.DatItems/Formats/RamOption.cs
+++ b/SabreTools.DatItems/Formats/RamOption.cs
@@ -111,6 +111,21 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Content => Models.Metadata.RamOption.ContentKey,
+ DatItemField.Default => Models.Metadata.RamOption.DefaultKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Release.cs b/SabreTools.DatItems/Formats/Release.cs
index cdc028a7..c1907dfc 100644
--- a/SabreTools.DatItems/Formats/Release.cs
+++ b/SabreTools.DatItems/Formats/Release.cs
@@ -137,6 +137,23 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Date => Models.Metadata.Release.DateKey,
+ DatItemField.Default => Models.Metadata.Release.DefaultKey,
+ DatItemField.Language => Models.Metadata.Release.LanguageKey,
+ DatItemField.Region => Models.Metadata.Release.RegionKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/ReleaseDetails.cs b/SabreTools.DatItems/Formats/ReleaseDetails.cs
index bca73aec..5bd4cc1f 100644
--- a/SabreTools.DatItems/Formats/ReleaseDetails.cs
+++ b/SabreTools.DatItems/Formats/ReleaseDetails.cs
@@ -204,6 +204,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ // TODO: Figure out what fields go here
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs
index e160959e..2a09ea59 100644
--- a/SabreTools.DatItems/Formats/Rom.cs
+++ b/SabreTools.DatItems/Formats/Rom.cs
@@ -653,6 +653,60 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.AltName => Models.Metadata.Rom.AltRomnameKey,
+ DatItemField.AltTitle => Models.Metadata.Rom.AltTitleKey,
+ DatItemField.ArchiveDotOrgFormat => Models.Metadata.Rom.FormatKey,
+ DatItemField.ArchiveDotOrgSource => Models.Metadata.Rom.SourceKey,
+ DatItemField.Bios => Models.Metadata.Rom.BiosKey,
+ //DatItemField.Boot => Models.Metadata.Rom.BootKey,
+ DatItemField.CRC => Models.Metadata.Rom.CRCKey,
+ DatItemField.Date => Models.Metadata.Rom.DateKey,
+ DatItemField.Inverted => Models.Metadata.Rom.InvertedKey,
+ DatItemField.LoadFlag => Models.Metadata.Rom.LoadFlagKey,
+ DatItemField.MD5 => Models.Metadata.Rom.MD5Key,
+ DatItemField.Merge => Models.Metadata.Rom.MergeKey,
+ DatItemField.MIA => Models.Metadata.Rom.MIAKey,
+ DatItemField.Offset => Models.Metadata.Rom.OffsetKey,
+ DatItemField.OpenMSXSubType => Models.Metadata.Rom.OpenMSXMediaType, // TODO: Fix with Key suffix
+ DatItemField.OpenMSXType => Models.Metadata.Rom.OpenMSXType, // TODO: Fix with Key suffix
+ DatItemField.Optional => Models.Metadata.Rom.OptionalKey,
+ //DatItemField.Original => Models.Metadata.Rom.OriginalKey,
+ DatItemField.OriginalFilename => Models.Metadata.Rom.OriginalKey,
+ DatItemField.Region => Models.Metadata.Rom.RegionKey,
+ DatItemField.Remark => Models.Metadata.Rom.RemarkKey,
+ DatItemField.Rotation => Models.Metadata.Rom.RotationKey,
+ DatItemField.SHA1 => Models.Metadata.Rom.SHA1Key,
+ DatItemField.SHA256 => Models.Metadata.Rom.SHA256Key,
+ DatItemField.SHA384 => Models.Metadata.Rom.SHA384Key,
+ DatItemField.SHA512 => Models.Metadata.Rom.SHA512Key,
+ DatItemField.Size => Models.Metadata.Rom.SizeKey,
+ DatItemField.SpamSum => Models.Metadata.Rom.SpamSumKey,
+ DatItemField.Status => Models.Metadata.Rom.StatusKey,
+ DatItemField.Summation => Models.Metadata.Rom.SummationKey,
+ DatItemField.Value => Models.Metadata.Rom.ValueKey,
+ _ => null,
+ };
+
+ // A null value means special handling is needed
+ if (fieldName == null)
+ {
+ switch (datItemField)
+ {
+ case DatItemField.Boot: Boot = value; return true;
+ case DatItemField.Original: Original = new Original { Content = value }; return true;
+ }
+ }
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
#region Sorting and Merging
diff --git a/SabreTools.DatItems/Formats/Sample.cs b/SabreTools.DatItems/Formats/Sample.cs
index 60279433..60c388e7 100644
--- a/SabreTools.DatItems/Formats/Sample.cs
+++ b/SabreTools.DatItems/Formats/Sample.cs
@@ -86,6 +86,19 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Serials.cs b/SabreTools.DatItems/Formats/Serials.cs
index a2d588d6..5b0cc581 100644
--- a/SabreTools.DatItems/Formats/Serials.cs
+++ b/SabreTools.DatItems/Formats/Serials.cs
@@ -192,6 +192,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ // TODO: Figure out what fields go here
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/SharedFeature.cs b/SabreTools.DatItems/Formats/SharedFeature.cs
index 53494ba7..c28e935e 100644
--- a/SabreTools.DatItems/Formats/SharedFeature.cs
+++ b/SabreTools.DatItems/Formats/SharedFeature.cs
@@ -97,6 +97,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Value => Models.Metadata.SharedFeat.ValueKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Slot.cs b/SabreTools.DatItems/Formats/Slot.cs
index dd2a5356..069765b3 100644
--- a/SabreTools.DatItems/Formats/Slot.cs
+++ b/SabreTools.DatItems/Formats/Slot.cs
@@ -101,6 +101,19 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/SlotOption.cs b/SabreTools.DatItems/Formats/SlotOption.cs
index 262e92e6..bd0e5dd1 100644
--- a/SabreTools.DatItems/Formats/SlotOption.cs
+++ b/SabreTools.DatItems/Formats/SlotOption.cs
@@ -112,6 +112,22 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Default => Models.Metadata.SlotOption.DefaultKey,
+ DatItemField.SlotOption_Default => Models.Metadata.SlotOption.DefaultKey,
+ DatItemField.SlotOption_DeviceName => Models.Metadata.SlotOption.DevNameKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/SoftwareList.cs b/SabreTools.DatItems/Formats/SoftwareList.cs
index ae71f37e..be702c2c 100644
--- a/SabreTools.DatItems/Formats/SoftwareList.cs
+++ b/SabreTools.DatItems/Formats/SoftwareList.cs
@@ -131,6 +131,22 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Filter => Models.Metadata.SoftwareList.FilterKey,
+ DatItemField.SoftwareListStatus => Models.Metadata.SoftwareList.StatusKey,
+ DatItemField.Tag => Models.Metadata.SoftwareList.TagKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/Sound.cs b/SabreTools.DatItems/Formats/Sound.cs
index aa99c4fe..a9c43745 100644
--- a/SabreTools.DatItems/Formats/Sound.cs
+++ b/SabreTools.DatItems/Formats/Sound.cs
@@ -79,6 +79,20 @@ namespace SabreTools.DatItems.Formats
return FieldManipulator.RemoveField(_internal, fieldName);
}
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ DatItemField.Default => Models.Metadata.Sound.ChannelsKey,
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.DatItems/Formats/SourceDetails.cs b/SabreTools.DatItems/Formats/SourceDetails.cs
index a20ff661..dc779a18 100644
--- a/SabreTools.DatItems/Formats/SourceDetails.cs
+++ b/SabreTools.DatItems/Formats/SourceDetails.cs
@@ -1,6 +1,7 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
+using SabreTools.Filter;
// TODO: Add item mappings for all fields
namespace SabreTools.DatItems.Formats
@@ -224,5 +225,37 @@ namespace SabreTools.DatItems.Formats
}
#endregion
+
+ #region Manipulation
+
+ ///
+ public override bool RemoveField(DatItemField datItemField)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ // TODO: Figure out what fields go here
+ _ => null,
+ };
+
+ // Remove the field and return
+ return FieldManipulator.RemoveField(_internal, fieldName);
+ }
+
+ ///
+ public override bool SetField(DatItemField datItemField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = datItemField switch
+ {
+ // TODO: Figure out what fields go here
+ _ => null,
+ };
+
+ // Set the field and return
+ return FieldManipulator.SetField(_internal, fieldName, value);
+ }
+
+ #endregion
}
}
diff --git a/SabreTools.DatItems/Machine.cs b/SabreTools.DatItems/Machine.cs
index 4534f6ef..72cba3bc 100644
--- a/SabreTools.DatItems/Machine.cs
+++ b/SabreTools.DatItems/Machine.cs
@@ -615,6 +615,81 @@ namespace SabreTools.DatItems
return FieldManipulator.RemoveField(_machine, fieldName);
}
+ ///
+ /// Set a field in the Machine from a mapping string
+ ///
+ /// Machine field to set
+ /// String representing the value to set
+ /// True if the setting was successful, false otherwise
+ /// This only performs minimal validation before setting
+ public bool SetField(MachineField machineField, string value)
+ {
+ // Get the correct internal field name
+ string? fieldName = machineField switch
+ {
+ MachineField.Board => Models.Metadata.Machine.BoardKey,
+ MachineField.Buttons => Models.Metadata.Machine.ButtonsKey,
+ MachineField.Category => Models.Metadata.Machine.CategoryKey,
+ MachineField.CloneOf => Models.Metadata.Machine.CloneOfKey,
+ MachineField.CloneOfID => Models.Metadata.Machine.CloneOfIdKey,
+ MachineField.Comment => Models.Metadata.Machine.CommentKey,
+ MachineField.Control => Models.Metadata.Machine.ControlKey,
+ MachineField.Country => Models.Metadata.Machine.CountryKey,
+ //MachineField.CRC => Models.Metadata.Machine.CRCKey,
+ MachineField.Description => Models.Metadata.Machine.DescriptionKey,
+ //MachineField.Developer => Models.Metadata.Machine.DeveloperKey,
+ MachineField.DisplayCount => Models.Metadata.Machine.DisplayCountKey,
+ MachineField.DisplayType => Models.Metadata.Machine.DisplayTypeKey,
+ //MachineField.Enabled => Models.Metadata.Machine.EnabledKey,
+ MachineField.GenMSXID => Models.Metadata.Machine.GenMSXIDKey,
+ //MachineField.Genre => Models.Metadata.Machine.GenreKey,
+ MachineField.History => Models.Metadata.Machine.HistoryKey,
+ MachineField.ID => Models.Metadata.Machine.IdKey,
+ MachineField.Manufacturer => Models.Metadata.Machine.ManufacturerKey,
+ MachineField.Name => Models.Metadata.Machine.NameKey,
+ MachineField.Players => Models.Metadata.Machine.PlayersKey,
+ MachineField.Publisher => Models.Metadata.Machine.PublisherKey,
+ //MachineField.Ratings => Models.Metadata.Machine.RatingsKey,
+ MachineField.RebuildTo => Models.Metadata.Machine.RebuildToKey,
+ //MachineField.RelatedTo => Models.Metadata.Machine.RelatedToKey,
+ MachineField.RomOf => Models.Metadata.Machine.RomOfKey,
+ MachineField.Rotation => Models.Metadata.Machine.RotationKey,
+ MachineField.Runnable => Models.Metadata.Machine.RunnableKey,
+ MachineField.SampleOf => Models.Metadata.Machine.SampleOfKey,
+ //MachineField.Score => Models.Metadata.Machine.ScoreKey,
+ MachineField.SourceFile => Models.Metadata.Machine.SourceFileKey,
+ MachineField.Status => Models.Metadata.Machine.StatusKey,
+ //MachineField.Subgenre => Models.Metadata.Machine.SubgenreKey,
+ MachineField.Supported => Models.Metadata.Machine.SupportedKey,
+ MachineField.System => Models.Metadata.Machine.SystemKey,
+ //MachineField.TitleID => Models.Metadata.Machine.TitleIDKey,
+ //MachineField.Type => Models.Metadata.Machine.TypeKey,
+ MachineField.Year => Models.Metadata.Machine.YearKey,
+ _ => null,
+ };
+
+ // A null value means special handling is needed
+ if (fieldName == null)
+ {
+ switch (machineField)
+ {
+ case MachineField.CRC: Crc = value.AsYesNo(); return true;
+ case MachineField.Developer: Developer = value; return true;
+ case MachineField.Enabled: Enabled = value; return true;
+ case MachineField.Genre: Genre = value; return true;
+ case MachineField.Ratings: Ratings = value; return true;
+ case MachineField.RelatedTo: RelatedTo = value; return true;
+ case MachineField.Score: Score = value; return true;
+ case MachineField.Subgenre: Subgenre = value; return true;
+ case MachineField.TitleID: TitleID = value; return true;
+ case MachineField.Type: MachineType = value.AsMachineType(); return true;
+ }
+ }
+
+ // Remove the field and return
+ return FieldManipulator.SetField(_machine, fieldName, value);
+ }
+
#endregion
}
}
diff --git a/SabreTools.Filtering/DatItemRemover.cs b/SabreTools.Filtering/DatItemRemover.cs
index 5074a6e1..e4218aee 100644
--- a/SabreTools.Filtering/DatItemRemover.cs
+++ b/SabreTools.Filtering/DatItemRemover.cs
@@ -102,6 +102,7 @@ namespace SabreTools.Filtering
case DipValue dipValue: RemoveFields(dipValue); break;
case Disk disk: RemoveFields(disk); break;
case Input input: RemoveFields(input); break;
+ case Part part: RemoveFields(part); break;
case Port port: RemoveFields(port); break;
case Rom rom: RemoveFields(rom); break;
case Slot slot: RemoveFields(slot); break;
@@ -114,8 +115,11 @@ namespace SabreTools.Filtering
/// Remove fields with given values
///
/// Machine to remove fields from
- private void RemoveFields(Machine machine)
+ private void RemoveFields(Machine? machine)
{
+ if (machine == null)
+ return;
+
foreach (var machineField in MachineFields)
{
machine.RemoveField(machineField);
@@ -323,7 +327,7 @@ namespace SabreTools.Filtering
RemoveFields(rom.DataArea!);
if (rom.PartSpecified)
- RemoveFields(rom.Part!);
+ RemoveFields(rom.Part! as DatItem);
}
///