mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Take care of some TODO items
This commit is contained in:
@@ -57,7 +57,9 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Header.ImagesKey))
|
||||
{
|
||||
// TODO: Add to internal model
|
||||
var images = item.Read<Models.OfflineList.Images>(Models.Metadata.Header.ImagesKey);
|
||||
if (images != null)
|
||||
Header.SetFieldValue<Models.OfflineList.Images?>(Models.Metadata.Header.ImagesKey, images);
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Header.InfosKey))
|
||||
{
|
||||
@@ -358,6 +360,17 @@ namespace SabreTools.DatFiles
|
||||
if (machine.GetStringFieldValue(Models.Metadata.Machine.SupportedKey) != null)
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SupportedKey, machine.GetStringFieldValue(Models.Metadata.Machine.SupportedKey).AsEnumValue<Supported>().AsStringValue());
|
||||
|
||||
// Handle Trurip object, if it exists
|
||||
if (item.ContainsKey(Models.Metadata.Machine.TruripKey))
|
||||
{
|
||||
var truripItem = item.Read<Models.Logiqx.Trurip>(Models.Metadata.Machine.TruripKey);
|
||||
if (truripItem != null)
|
||||
{
|
||||
var trurip = new DatItems.Trurip(truripItem);
|
||||
machine.SetFieldValue<DatItems.Trurip>(Models.Metadata.Machine.TruripKey, trurip);
|
||||
}
|
||||
}
|
||||
|
||||
// Convert items in the machine
|
||||
if (item.ContainsKey(Models.Metadata.Machine.AdjusterKey))
|
||||
{
|
||||
@@ -489,10 +502,6 @@ namespace SabreTools.DatFiles
|
||||
var items = ReadItemArray<Models.Metadata.Sound>(item, Models.Metadata.Machine.SoundKey);
|
||||
ProcessItems(items, machine, filename, indexId, statsOnly);
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Machine.TruripKey))
|
||||
{
|
||||
// TODO: Figure out what this maps to
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Machine.VideoKey))
|
||||
{
|
||||
var items = ReadItemArray<Models.Metadata.Video>(item, Models.Metadata.Machine.VideoKey);
|
||||
|
||||
@@ -57,8 +57,8 @@ namespace SabreTools.DatFiles
|
||||
// Convert subheader values
|
||||
if (Header.CanOpenSpecified)
|
||||
header[Models.Metadata.Header.CanOpenKey] = new Models.OfflineList.CanOpen { Extension = Header.GetStringArrayFieldValue(Models.Metadata.Header.CanOpenKey) };
|
||||
// if (Header.ImagesSpecified)
|
||||
// // TODO: Add to internal model
|
||||
if (Header.ImagesSpecified)
|
||||
header[Models.Metadata.Header.ImagesKey] = Header.GetFieldValue<Models.OfflineList.Images>(Models.Metadata.Header.ImagesKey);
|
||||
if (Header.InfosSpecified)
|
||||
{
|
||||
var infoItem = new Models.OfflineList.Infos();
|
||||
@@ -210,6 +210,22 @@ namespace SabreTools.DatFiles
|
||||
// Create a machine to hold everything
|
||||
var machine = items[0].GetFieldValue<DatItems.Machine>(DatItems.DatItem.MachineKey)!.GetInternalClone();
|
||||
|
||||
// Handle Trurip object, if it exists
|
||||
if (machine.ContainsKey(Models.Metadata.Machine.TruripKey))
|
||||
{
|
||||
var trurip = machine.Read<DatItems.Trurip>(Models.Metadata.Machine.TruripKey);
|
||||
if (trurip != null)
|
||||
{
|
||||
var truripItem = trurip.ConvertToLogiqx();
|
||||
truripItem.Publisher = machine.ReadString(Models.Metadata.Machine.PublisherKey);
|
||||
truripItem.Year = machine.ReadString(Models.Metadata.Machine.YearKey);
|
||||
truripItem.Players = machine.ReadString(Models.Metadata.Machine.PlayersKey);
|
||||
truripItem.Source = machine.ReadString(Models.Metadata.Machine.SourceFileKey);
|
||||
truripItem.CloneOf = machine.ReadString(Models.Metadata.Machine.CloneOfKey);
|
||||
machine[Models.Metadata.Machine.TruripKey] = truripItem;
|
||||
}
|
||||
}
|
||||
|
||||
// Loop through and convert the items to respective lists
|
||||
for (int index = 0; index < items.Count; index++)
|
||||
{
|
||||
@@ -271,8 +287,7 @@ namespace SabreTools.DatFiles
|
||||
AppendToMachineKey(machine, Models.Metadata.Machine.DiskKey, diskItem);
|
||||
break;
|
||||
case DatItems.Formats.Display display:
|
||||
// TODO: Handle cases where it's actually a Video
|
||||
var displayItem = display.GetInternalClone();
|
||||
var displayItem = ProcessItem(display);
|
||||
EnsureMachineKey<Models.Metadata.Display?>(machine, Models.Metadata.Machine.DisplayKey);
|
||||
AppendToMachineKey(machine, Models.Metadata.Machine.DisplayKey, displayItem);
|
||||
break;
|
||||
@@ -501,6 +516,20 @@ namespace SabreTools.DatFiles
|
||||
return diskItem;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert Display information
|
||||
/// </summary>
|
||||
/// <param name="item">Item to convert</param>
|
||||
/// <param name="machine">Machine to use for Part and DiskArea</param>
|
||||
private static Models.Metadata.Display ProcessItem(DatItems.Formats.Display item)
|
||||
{
|
||||
var displayItem = item.GetInternalClone();
|
||||
|
||||
// TODO: Handle cases where it's actually a Video
|
||||
|
||||
return displayItem;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert Input information
|
||||
/// </summary>
|
||||
|
||||
@@ -259,7 +259,6 @@ namespace SabreTools.DatFiles
|
||||
else if ((size == 0 || size == null)
|
||||
&& (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) || rom.HasZeroHash()))
|
||||
{
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, Constants.CRCZero);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, Constants.MD5Zero);
|
||||
|
||||
@@ -82,16 +82,6 @@ namespace SabreTools.DatFiles
|
||||
|
||||
#region Fields
|
||||
|
||||
[JsonIgnore]
|
||||
public bool InfosSpecified
|
||||
{
|
||||
get
|
||||
{
|
||||
var infos = GetFieldValue<OfflineListInfo[]?>(Models.Metadata.Header.InfosKey);
|
||||
return infos != null && infos.Length > 0;
|
||||
}
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
public bool CanOpenSpecified
|
||||
{
|
||||
@@ -102,6 +92,25 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
public bool ImagesSpecified
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetFieldValue<Models.OfflineList.Images?>(Models.Metadata.Header.ImagesKey) != null;
|
||||
}
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
public bool InfosSpecified
|
||||
{
|
||||
get
|
||||
{
|
||||
var infos = GetFieldValue<OfflineListInfo[]?>(Models.Metadata.Header.InfosKey);
|
||||
return infos != null && infos.Length > 0;
|
||||
}
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
public bool NewDatSpecified
|
||||
{
|
||||
@@ -302,6 +311,7 @@ namespace SabreTools.DatFiles
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, GetStringFieldValue(Models.Metadata.Header.HomepageKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.IdKey, GetStringFieldValue(Models.Metadata.Header.IdKey));
|
||||
header.SetFieldValue<OfflineListInfo[]?>(Models.Metadata.Header.InfosKey, GetFieldValue<OfflineListInfo[]?>(Models.Metadata.Header.InfosKey)); // TODO: Perform a deep clone
|
||||
header.SetFieldValue<Models.OfflineList.Images?>(Models.Metadata.Header.ImagesKey, GetFieldValue<Models.OfflineList.Images?>(Models.Metadata.Header.ImagesKey)); // TODO: Perform a deep clone
|
||||
header.SetFieldValue<DepotInformation?>(DatHeader.InputDepotKey, GetFieldValue<DepotInformation?>(DatHeader.InputDepotKey)?.Clone() as DepotInformation);
|
||||
header.SetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey, GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Clone() as DepotInformation);
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey, GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey));
|
||||
|
||||
@@ -13,9 +13,17 @@ namespace SabreTools.DatFiles.Formats
|
||||
try
|
||||
{
|
||||
// Deserialize the input file
|
||||
// TODO: Support M1 DATs again
|
||||
var mame = new Serialization.Files.Listxml().Deserialize(filename);
|
||||
var metadata = new Serialization.CrossModel.Listxml().Serialize(mame);
|
||||
Models.Metadata.MetadataFile? metadata;
|
||||
if (mame == null)
|
||||
{
|
||||
var m1 = new Serialization.Files.M1().Deserialize(filename);
|
||||
metadata = new Serialization.CrossModel.M1().Serialize(m1);
|
||||
}
|
||||
else
|
||||
{
|
||||
metadata = new Serialization.CrossModel.Listxml().Serialize(mame);
|
||||
}
|
||||
|
||||
// Convert to the internal format
|
||||
ConvertMetadata(metadata, filename, indexId, keep, statsOnly);
|
||||
|
||||
Reference in New Issue
Block a user