mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-04-14 18:23:08 +00:00
Apparently this was a mistake that has proliferated over a very long time. The Software item that was being modeled was actually the game/machine equivilent from SoftwareList. But because there's both an item called SoftwareList and a DAT type called SoftwareList, some wire got crossed and they were mentally combined. Undoing this allows for a more proper internal model, including a couple of extraneous keys that were included originally.
157 lines
8.4 KiB
C#
157 lines
8.4 KiB
C#
namespace SabreTools.Metadata.DatItems
|
|
{
|
|
public static class Extensions
|
|
{
|
|
#region String to Enum
|
|
|
|
/// <summary>
|
|
/// Get the enum value for an input string, if possible
|
|
/// </summary>
|
|
/// <param name="value">String value to parse/param>
|
|
/// <returns>Enum value representing the input, default on error</returns>
|
|
public static Data.Models.Metadata.ItemType AsItemType(this string? value)
|
|
{
|
|
return value?.ToLowerInvariant() switch
|
|
{
|
|
// "Actionable" item types
|
|
"rom" => Data.Models.Metadata.ItemType.Rom,
|
|
"disk" => Data.Models.Metadata.ItemType.Disk,
|
|
"file" => Data.Models.Metadata.ItemType.File,
|
|
"media" => Data.Models.Metadata.ItemType.Media,
|
|
|
|
// "Auxiliary" item types
|
|
"adjuster" => Data.Models.Metadata.ItemType.Adjuster,
|
|
"analog" => Data.Models.Metadata.ItemType.Analog,
|
|
"archive" => Data.Models.Metadata.ItemType.Archive,
|
|
"biosset" => Data.Models.Metadata.ItemType.BiosSet,
|
|
"chip" => Data.Models.Metadata.ItemType.Chip,
|
|
"condition" => Data.Models.Metadata.ItemType.Condition,
|
|
"configuration" => Data.Models.Metadata.ItemType.Configuration,
|
|
"conflocation" => Data.Models.Metadata.ItemType.ConfLocation,
|
|
"confsetting" => Data.Models.Metadata.ItemType.ConfSetting,
|
|
"control" => Data.Models.Metadata.ItemType.Control,
|
|
"dataarea" => Data.Models.Metadata.ItemType.DataArea,
|
|
"device" => Data.Models.Metadata.ItemType.Device,
|
|
"device_ref" or "deviceref" => Data.Models.Metadata.ItemType.DeviceRef,
|
|
"diplocation" => Data.Models.Metadata.ItemType.DipLocation,
|
|
"dipswitch" => Data.Models.Metadata.ItemType.DipSwitch,
|
|
"dipvalue" => Data.Models.Metadata.ItemType.DipValue,
|
|
"diskarea" => Data.Models.Metadata.ItemType.DiskArea,
|
|
"display" => Data.Models.Metadata.ItemType.Display,
|
|
"driver" => Data.Models.Metadata.ItemType.Driver,
|
|
"dump" => Data.Models.Metadata.ItemType.Dump,
|
|
"extension" => Data.Models.Metadata.ItemType.Extension,
|
|
"feature" => Data.Models.Metadata.ItemType.Feature,
|
|
"info" => Data.Models.Metadata.ItemType.Info,
|
|
"input" => Data.Models.Metadata.ItemType.Input,
|
|
"instance" => Data.Models.Metadata.ItemType.Instance,
|
|
"original" => Data.Models.Metadata.ItemType.Original,
|
|
"part" => Data.Models.Metadata.ItemType.Part,
|
|
"part_feature" or "partfeature" => Data.Models.Metadata.ItemType.PartFeature,
|
|
"port" => Data.Models.Metadata.ItemType.Port,
|
|
"ramoption" or "ram_option" => Data.Models.Metadata.ItemType.RamOption,
|
|
"release" => Data.Models.Metadata.ItemType.Release,
|
|
"release_details" or "releasedetails" => Data.Models.Metadata.ItemType.ReleaseDetails,
|
|
"sample" => Data.Models.Metadata.ItemType.Sample,
|
|
"serials" => Data.Models.Metadata.ItemType.Serials,
|
|
"sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => Data.Models.Metadata.ItemType.SharedFeat,
|
|
"slot" => Data.Models.Metadata.ItemType.Slot,
|
|
"slotoption" or "slot_option" => Data.Models.Metadata.ItemType.SlotOption,
|
|
"softwarelist" or "software_list" => Data.Models.Metadata.ItemType.SoftwareList,
|
|
"sound" => Data.Models.Metadata.ItemType.Sound,
|
|
"source_details" or "sourcedetails" => Data.Models.Metadata.ItemType.SourceDetails,
|
|
"video" => Data.Models.Metadata.ItemType.Video,
|
|
"blank" => Data.Models.Metadata.ItemType.Blank,
|
|
_ => Data.Models.Metadata.ItemType.NULL,
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get the enum value for an input string, if possible
|
|
/// </summary>
|
|
/// <param name="value">String value to parse/param>
|
|
/// <returns>Enum value representing the input, default on error</returns>
|
|
public static MachineType AsMachineType(this string? value)
|
|
{
|
|
return value?.ToLowerInvariant() switch
|
|
{
|
|
"none" => MachineType.None,
|
|
"bios" => MachineType.Bios,
|
|
"device" or "dev" => MachineType.Device,
|
|
"mechanical" or "mech" => MachineType.Mechanical,
|
|
_ => MachineType.None,
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Enum to String
|
|
|
|
/// <summary>
|
|
/// Get the string value for an input enum, if possible
|
|
/// </summary>
|
|
/// <param name="value">Enum value to parse/param>
|
|
/// <returns>String value representing the input, default on error</returns>
|
|
public static string? AsStringValue(this Data.Models.Metadata.ItemType value)
|
|
{
|
|
return value switch
|
|
{
|
|
// "Actionable" item types
|
|
Data.Models.Metadata.ItemType.Rom => "rom",
|
|
Data.Models.Metadata.ItemType.Disk => "disk",
|
|
Data.Models.Metadata.ItemType.File => "file",
|
|
Data.Models.Metadata.ItemType.Media => "media",
|
|
|
|
// "Auxiliary" item types
|
|
Data.Models.Metadata.ItemType.Adjuster => "adjuster",
|
|
Data.Models.Metadata.ItemType.Analog => "analog",
|
|
Data.Models.Metadata.ItemType.Archive => "archive",
|
|
Data.Models.Metadata.ItemType.BiosSet => "biosset",
|
|
Data.Models.Metadata.ItemType.Chip => "chip",
|
|
Data.Models.Metadata.ItemType.Condition => "condition",
|
|
Data.Models.Metadata.ItemType.Configuration => "configuration",
|
|
Data.Models.Metadata.ItemType.ConfLocation => "conflocation",
|
|
Data.Models.Metadata.ItemType.ConfSetting => "confsetting",
|
|
Data.Models.Metadata.ItemType.Control => "control",
|
|
Data.Models.Metadata.ItemType.DataArea => "dataarea",
|
|
Data.Models.Metadata.ItemType.Device => "device",
|
|
Data.Models.Metadata.ItemType.DeviceRef => "device_ref",
|
|
Data.Models.Metadata.ItemType.DipLocation => "diplocation",
|
|
Data.Models.Metadata.ItemType.DipSwitch => "dipswitch",
|
|
Data.Models.Metadata.ItemType.DipValue => "dipvalue",
|
|
Data.Models.Metadata.ItemType.DiskArea => "diskarea",
|
|
Data.Models.Metadata.ItemType.Display => "display",
|
|
Data.Models.Metadata.ItemType.Driver => "driver",
|
|
Data.Models.Metadata.ItemType.Dump => "dump",
|
|
Data.Models.Metadata.ItemType.Extension => "extension",
|
|
Data.Models.Metadata.ItemType.Feature => "feature",
|
|
Data.Models.Metadata.ItemType.Info => "info",
|
|
Data.Models.Metadata.ItemType.Input => "input",
|
|
Data.Models.Metadata.ItemType.Instance => "instance",
|
|
Data.Models.Metadata.ItemType.Original => "original",
|
|
Data.Models.Metadata.ItemType.Part => "part",
|
|
Data.Models.Metadata.ItemType.PartFeature => "part_feature",
|
|
Data.Models.Metadata.ItemType.Port => "port",
|
|
Data.Models.Metadata.ItemType.RamOption => "ramoption",
|
|
Data.Models.Metadata.ItemType.Release => "release",
|
|
Data.Models.Metadata.ItemType.ReleaseDetails => "release_details",
|
|
Data.Models.Metadata.ItemType.Sample => "sample",
|
|
Data.Models.Metadata.ItemType.Serials => "serials",
|
|
Data.Models.Metadata.ItemType.SharedFeat => "sharedfeat",
|
|
Data.Models.Metadata.ItemType.Slot => "slot",
|
|
Data.Models.Metadata.ItemType.SlotOption => "slotoption",
|
|
Data.Models.Metadata.ItemType.SoftwareList => "softwarelist",
|
|
Data.Models.Metadata.ItemType.Sound => "sound",
|
|
Data.Models.Metadata.ItemType.SourceDetails => "source_details",
|
|
Data.Models.Metadata.ItemType.Video => "video",
|
|
Data.Models.Metadata.ItemType.Blank => "blank",
|
|
|
|
Data.Models.Metadata.ItemType.NULL => null,
|
|
_ => null,
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|