mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add setters and getters for Machine
This commit is contained in:
@@ -366,7 +366,7 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
// Initialize strings
|
||||
string fix,
|
||||
game = item.Machine.Name ?? string.Empty,
|
||||
game = item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty,
|
||||
name = item.GetName() ?? item.ItemType.ToString(),
|
||||
crc = string.Empty,
|
||||
md5 = string.Empty,
|
||||
@@ -415,9 +415,9 @@ namespace SabreTools.DatFiles
|
||||
.Replace("%game%", game)
|
||||
.Replace("%machine%", game)
|
||||
.Replace("%name%", name)
|
||||
.Replace("%manufacturer%", item.Machine.Manufacturer ?? string.Empty)
|
||||
.Replace("%publisher%", item.Machine.Publisher ?? string.Empty)
|
||||
.Replace("%category%", item.Machine.Category ?? string.Empty)
|
||||
.Replace("%manufacturer%", item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty)
|
||||
.Replace("%publisher%", item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey) ?? string.Empty)
|
||||
.Replace("%category%", item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey) ?? string.Empty)
|
||||
.Replace("%crc%", crc)
|
||||
.Replace("%md5%", md5)
|
||||
.Replace("%sha1%", sha1)
|
||||
@@ -447,7 +447,7 @@ namespace SabreTools.DatFiles
|
||||
Header.UseRomName = true;
|
||||
|
||||
// Get the name to update
|
||||
string? name = (Header.UseRomName ? item.GetName() : item.Machine.Name) ?? string.Empty;
|
||||
string? name = (Header.UseRomName ? item.GetName() : item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)) ?? string.Empty;
|
||||
|
||||
// Create the proper Prefix and Postfix
|
||||
string pre = CreatePrefixPostfix(item, true);
|
||||
@@ -504,14 +504,14 @@ namespace SabreTools.DatFiles
|
||||
name += Header.AddExtension;
|
||||
|
||||
if (Header.UseRomName && Header.GameName)
|
||||
name = Path.Combine(item.Machine.Name ?? string.Empty, name);
|
||||
name = Path.Combine(item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty, name);
|
||||
|
||||
// Now assign back the formatted name
|
||||
name = $"{pre}{name}{post}";
|
||||
if (Header.UseRomName)
|
||||
item.SetName(name);
|
||||
else if (item.Machine != null)
|
||||
item.Machine.Name = name;
|
||||
item.Machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, name);
|
||||
|
||||
// Restore all relevant values
|
||||
if (forceRemoveQuotes)
|
||||
@@ -539,7 +539,7 @@ namespace SabreTools.DatFiles
|
||||
// If the Rom has "null" characteristics, ensure all fields
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null && rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey) == "null")
|
||||
{
|
||||
logger.Verbose($"Empty folder found: {datItem.Machine.Name}");
|
||||
logger.Verbose($"Empty folder found: {datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}");
|
||||
|
||||
rom.SetName(rom.GetName() == "null" ? "-" : rom.GetName());
|
||||
rom.SetFieldValue<long?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero);
|
||||
|
||||
@@ -59,7 +59,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
filename = filename.Substring(machineName.Length + 1);
|
||||
}
|
||||
|
||||
var machine = new Machine { Name = machineName };
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
|
||||
|
||||
return (machine, filename);
|
||||
}
|
||||
|
||||
@@ -97,10 +99,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
return;
|
||||
|
||||
(var machine, string? name) = DeriveMachine(file.Name);
|
||||
machine ??= new Machine { Name = Path.GetFileNameWithoutExtension(file.Name) };
|
||||
if (machine == null)
|
||||
{
|
||||
machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, Path.GetFileNameWithoutExtension(file.Name));
|
||||
}
|
||||
|
||||
machine.Publisher = file.Publisher;
|
||||
machine.Comment = file.Comment;
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CommentKey, file.Comment);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.PublisherKey, file.Publisher);
|
||||
|
||||
var rom = new Rom()
|
||||
{
|
||||
|
||||
@@ -65,23 +65,21 @@ namespace SabreTools.DatFiles.Formats
|
||||
if (row == null)
|
||||
return;
|
||||
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = row.Name,
|
||||
Description = row.Title,
|
||||
CloneOf = row.CloneOf,
|
||||
Year = row.Year,
|
||||
Manufacturer = row.Manufacturer,
|
||||
Category = row.Category,
|
||||
Players = row.Players,
|
||||
Rotation = row.Rotation,
|
||||
Control = row.Control,
|
||||
Status = row.Status,
|
||||
DisplayCount = row.DisplayCount,
|
||||
DisplayType = row.DisplayType,
|
||||
Comment = row.Extra,
|
||||
Buttons = row.Buttons
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ButtonsKey, row.Buttons);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CategoryKey, row.Category);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, row.CloneOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CommentKey, row.Extra);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ControlKey, row.Control);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, row.Title);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DisplayCountKey, row.DisplayCount);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DisplayTypeKey, row.DisplayType);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey, row.Manufacturer);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, row.Name);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.PlayersKey, row.Players);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.RotationKey, row.Rotation);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.StatusKey, row.Status);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.YearKey, row.Year);
|
||||
|
||||
var rom = new Rom()
|
||||
{
|
||||
|
||||
@@ -124,23 +124,23 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var row = new Models.AttractMode.Row
|
||||
{
|
||||
Name = rom.Machine.Name,
|
||||
Title = rom.Machine.Description,
|
||||
Name = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
Title = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Emulator = Header.FileName,
|
||||
CloneOf = rom.Machine.CloneOf,
|
||||
Year = rom.Machine.Year,
|
||||
Manufacturer = rom.Machine.Manufacturer,
|
||||
Category = rom.Machine.Category,
|
||||
Players = rom.Machine.Players,
|
||||
Rotation = rom.Machine.Rotation,
|
||||
Control = rom.Machine.Control,
|
||||
Status = rom.Machine.Status,
|
||||
DisplayCount = rom.Machine.DisplayCount,
|
||||
DisplayType = rom.Machine.DisplayType,
|
||||
CloneOf = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
Year = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Manufacturer = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey),
|
||||
Category = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey),
|
||||
Players = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.PlayersKey),
|
||||
Rotation = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.RotationKey),
|
||||
Control = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.ControlKey),
|
||||
Status = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.StatusKey),
|
||||
DisplayCount = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DisplayCountKey),
|
||||
DisplayType = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DisplayTypeKey),
|
||||
AltRomname = rom.GetFieldValue<string?>(Models.Metadata.Rom.AltRomnameKey),
|
||||
AltTitle = rom.GetFieldValue<string?>(Models.Metadata.Rom.AltTitleKey),
|
||||
Extra = rom.Machine.Comment,
|
||||
Buttons = rom.Machine.Buttons,
|
||||
Extra = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey),
|
||||
Buttons = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.ButtonsKey),
|
||||
// TODO: Add extended fields
|
||||
};
|
||||
return row;
|
||||
|
||||
@@ -105,18 +105,17 @@ namespace SabreTools.DatFiles.Formats
|
||||
return;
|
||||
|
||||
// Create the machine for copying information
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = game.Name,
|
||||
Description = game.Description,
|
||||
Year = game.Year,
|
||||
Manufacturer = game.Manufacturer,
|
||||
Category = game.Category,
|
||||
CloneOf = game.CloneOf,
|
||||
RomOf = game.RomOf,
|
||||
SampleOf = game.SampleOf,
|
||||
MachineType = (game is Models.ClrMamePro.Resource ? MachineType.Bios : MachineType.None),
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CategoryKey, game.Category);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, game.CloneOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, game.Description);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey, game.Manufacturer);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, game.Name);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.RomOfKey, game.RomOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey, game.SampleOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.YearKey, game.Year);
|
||||
if (game is Models.ClrMamePro.Resource)
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsBiosKey, true);
|
||||
|
||||
// Check if there are any items
|
||||
bool containsItems = false;
|
||||
|
||||
@@ -232,14 +232,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
// We normalize to all "game"
|
||||
var game = new Models.ClrMamePro.Game
|
||||
{
|
||||
Name = machine?.Name,
|
||||
Description = machine?.Description,
|
||||
Year = machine?.Year,
|
||||
Manufacturer = machine?.Manufacturer,
|
||||
Category = machine?.Category,
|
||||
CloneOf = machine?.CloneOf,
|
||||
RomOf = machine?.RomOf,
|
||||
SampleOf = machine?.SampleOf,
|
||||
Name = machine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
Description = machine?.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine?.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Manufacturer = machine?.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey),
|
||||
Category = machine?.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey),
|
||||
CloneOf = machine?.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
RomOf = machine?.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey),
|
||||
SampleOf = machine?.GetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey),
|
||||
};
|
||||
|
||||
// Create holders for all item types
|
||||
|
||||
@@ -96,7 +96,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
if (machineName?.EndsWith(".zip") == true)
|
||||
machineName = System.IO.Path.GetFileNameWithoutExtension(machineName);
|
||||
|
||||
var machine = new Machine { Name = machineName };
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
|
||||
|
||||
// Check if there are any items
|
||||
bool containsItems = false;
|
||||
|
||||
@@ -134,7 +134,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
// We re-add the missing parts of the game name
|
||||
var game = new Models.DosCenter.Game
|
||||
{
|
||||
Name = $"\"{machine?.Name ?? string.Empty}.zip\""
|
||||
Name = $"\"{machine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty}.zip\""
|
||||
};
|
||||
|
||||
// Create holders for all item types
|
||||
|
||||
@@ -58,7 +58,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
filename = filename.Substring(machineName.Length + 1);
|
||||
}
|
||||
|
||||
var machine = new Machine { Name = machineName };
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
|
||||
|
||||
return (machine, filename);
|
||||
}
|
||||
|
||||
@@ -96,7 +98,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
return;
|
||||
|
||||
(var machine, string? name) = DeriveMachine(row.Name);
|
||||
machine ??= new Machine { Name = Path.GetFileNameWithoutExtension(row.Name) };
|
||||
if (machine == null)
|
||||
{
|
||||
machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, Path.GetFileNameWithoutExtension(row.Name));
|
||||
}
|
||||
|
||||
var rom = new Rom()
|
||||
{
|
||||
|
||||
@@ -139,7 +139,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var row = new Models.EverdriveSMDB.Row
|
||||
{
|
||||
SHA256 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key),
|
||||
Name = $"{rom.Machine.Name ?? string.Empty}/{rom.GetName()}",
|
||||
Name = $"{rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty}/{rom.GetName()}",
|
||||
SHA1 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
MD5 = rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key),
|
||||
CRC32 = rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
|
||||
@@ -80,7 +80,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
filename = filename.Substring(machineName.Length + 1);
|
||||
}
|
||||
|
||||
var machine = new Machine { Name = machineName };
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, machineName);
|
||||
|
||||
return (machine, filename);
|
||||
}
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GameName && item.Machine != null)
|
||||
name = $"{item.Machine.Name}{Path.DirectorySeparatorChar}";
|
||||
name = $"{item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
@@ -295,7 +295,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GameName && item.Machine != null)
|
||||
name = $"{item.Machine.Name}{Path.DirectorySeparatorChar}";
|
||||
name = $"{item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
@@ -362,7 +362,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GameName && item.Machine != null)
|
||||
name = $"{item.Machine.Name}{Path.DirectorySeparatorChar}";
|
||||
name = $"{item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
@@ -429,7 +429,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GameName && item.Machine != null)
|
||||
name = $"{item.Machine.Name}{Path.DirectorySeparatorChar}";
|
||||
name = $"{item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
@@ -488,7 +488,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GameName && item.Machine != null)
|
||||
name = $"{item.Machine.Name}{Path.DirectorySeparatorChar}";
|
||||
name = $"{item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
@@ -539,7 +539,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GameName && item.Machine != null)
|
||||
name = $"{item.Machine.Name}{Path.DirectorySeparatorChar}";
|
||||
name = $"{item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
@@ -590,7 +590,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GameName && item.Machine != null)
|
||||
name = $"{item.Machine.Name}{Path.DirectorySeparatorChar}";
|
||||
name = $"{item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
|
||||
@@ -69,19 +69,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
Machine machine;
|
||||
if (!string.IsNullOrEmpty(set.Device))
|
||||
{
|
||||
machine = new Machine
|
||||
{
|
||||
Name = set.Device,
|
||||
MachineType = MachineType.Device,
|
||||
};
|
||||
machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, set.Device);
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey, true);
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(set.Driver))
|
||||
{
|
||||
machine = new Machine
|
||||
{
|
||||
Name = set.Driver,
|
||||
MachineType = MachineType.None,
|
||||
};
|
||||
machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, set.Driver);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -116,13 +116,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var set = new Models.Listrom.Set
|
||||
{
|
||||
#if NETFRAMEWORK
|
||||
Driver = (items[0]!.Machine!.MachineType & MachineType.Device) != 0 ? items[0]!.Machine!.Name : null,
|
||||
Device = (items[0]!.Machine!.MachineType & MachineType.Device) != 0 ? items[0]!.Machine!.Name : null,
|
||||
#else
|
||||
Driver = items[0]!.Machine!.MachineType.HasFlag(MachineType.Device) ? items[0]!.Machine!.Name : null,
|
||||
Device = items[0]!.Machine!.MachineType.HasFlag(MachineType.Device) ? items[0]!.Machine!.Name : null,
|
||||
#endif
|
||||
Driver = items[0]!.Machine!.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true ? items[0]!.Machine!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) : null,
|
||||
Device = items[0]!.Machine!.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true ? items[0]!.Machine!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) : null,
|
||||
};
|
||||
|
||||
// Loop through and convert the items to respective lists
|
||||
|
||||
@@ -93,26 +93,20 @@ namespace SabreTools.DatFiles.Formats
|
||||
return;
|
||||
|
||||
// Create the machine for copying information
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = game.Name,
|
||||
SourceFile = game.SourceFile,
|
||||
Runnable = game.Runnable.AsEnumValue<Runnable>(),
|
||||
CloneOf = game.CloneOf,
|
||||
RomOf = game.RomOf,
|
||||
SampleOf = game.SampleOf,
|
||||
Description = game.Description,
|
||||
Year = game.Year,
|
||||
Manufacturer = game.Manufacturer,
|
||||
History = game.History,
|
||||
};
|
||||
|
||||
if (game.IsBios.AsYesNo() == true)
|
||||
machine.MachineType |= MachineType.Bios;
|
||||
if (game.IsDevice.AsYesNo() == true)
|
||||
machine.MachineType |= MachineType.Device;
|
||||
if (game.IsMechanical.AsYesNo() == true)
|
||||
machine.MachineType |= MachineType.Mechanical;
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, game.CloneOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, game.Description);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.HistoryKey, game.History);
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsBiosKey, game.IsBios.AsYesNo());
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey, game.IsDevice.AsYesNo());
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsMechanicalKey, game.IsMechanical.AsYesNo());
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey, game.Manufacturer);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, game.Name);
|
||||
machine.SetFieldValue<Runnable>(Models.Metadata.Machine.RunnableKey, game.Runnable.AsEnumValue<Runnable>());
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.RomOfKey, game.RomOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey, game.SampleOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey, game.SourceFile);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.YearKey, game.Year);
|
||||
|
||||
// Check if there are any items
|
||||
bool containsItems = false;
|
||||
|
||||
@@ -372,33 +372,24 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var game = new Models.Listxml.Machine
|
||||
{
|
||||
Name = machine.Name,
|
||||
SourceFile = machine.SourceFile,
|
||||
Runnable = machine.Runnable.AsStringValue<Runnable>(),
|
||||
CloneOf = machine.CloneOf,
|
||||
RomOf = machine.RomOf,
|
||||
SampleOf = machine.SampleOf,
|
||||
Description = machine.Description,
|
||||
Year = machine.Year,
|
||||
Manufacturer = machine.Manufacturer,
|
||||
History = machine.History,
|
||||
Name = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
SourceFile = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey),
|
||||
Runnable = machine.GetFieldValue<Runnable>(Models.Metadata.Machine.RunnableKey).AsStringValue<Runnable>(),
|
||||
CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
RomOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey),
|
||||
SampleOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey),
|
||||
Description = machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Manufacturer = machine.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey),
|
||||
History = machine.GetFieldValue<string?>(Models.Metadata.Machine.HistoryKey),
|
||||
};
|
||||
|
||||
#if NETFRAMEWORK
|
||||
if ((machine.MachineType & MachineType.Bios) != 0)
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsBiosKey) == true)
|
||||
game.IsBios = "yes";
|
||||
if ((machine.MachineType & MachineType.Device) != 0)
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true)
|
||||
game.IsDevice = "yes";
|
||||
if ((machine.MachineType & MachineType.Mechanical) != 0)
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsMechanicalKey) == true)
|
||||
game.IsMechanical = "yes";
|
||||
#else
|
||||
if (machine.MachineType.HasFlag(MachineType.Bios))
|
||||
game.IsBios = "yes";
|
||||
if (machine.MachineType.HasFlag(MachineType.Device))
|
||||
game.IsDevice = "yes";
|
||||
if (machine.MachineType.HasFlag(MachineType.Mechanical))
|
||||
game.IsMechanical = "yes";
|
||||
#endif
|
||||
|
||||
return game;
|
||||
}
|
||||
|
||||
@@ -207,45 +207,38 @@ namespace SabreTools.DatFiles.Formats
|
||||
return;
|
||||
|
||||
// Create the machine for copying information
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = game.Name,
|
||||
SourceFile = game.SourceFile,
|
||||
CloneOf = game.CloneOf,
|
||||
RomOf = game.RomOf,
|
||||
SampleOf = game.SampleOf,
|
||||
Board = game.Board,
|
||||
RebuildTo = game.RebuildTo,
|
||||
NoIntroId = game.Id,
|
||||
NoIntroCloneOfId = game.CloneOfId,
|
||||
Runnable = game.Runnable.AsEnumValue<Runnable>(),
|
||||
|
||||
Description = game.Description,
|
||||
Year = game.Year,
|
||||
Manufacturer = game.Manufacturer,
|
||||
Publisher = game.Publisher,
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.BoardKey, game.Board);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, game.CloneOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfIdKey, game.CloneOfId);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, game.Description);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.IdKey, game.Id);
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsBiosKey, game.IsBios.AsYesNo());
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey, game.IsDevice.AsYesNo());
|
||||
machine.SetFieldValue<bool?>(Models.Metadata.Machine.IsMechanicalKey, game.IsMechanical.AsYesNo());
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey, game.Manufacturer);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, game.Name);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.PublisherKey, game.Publisher);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.RebuildToKey, game.RebuildTo);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.RomKey, game.RomOf);
|
||||
machine.SetFieldValue<Runnable>(Models.Metadata.Machine.RunnableKey, game.Runnable.AsEnumValue<Runnable>());
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey, game.SampleOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey, game.SourceFile);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.YearKey, game.Year);
|
||||
|
||||
if (!string.IsNullOrEmpty(dirname))
|
||||
machine.Name = $"{dirname}/{machine.Name}";
|
||||
|
||||
if (game.IsBios.AsYesNo() == true)
|
||||
machine.MachineType |= MachineType.Bios;
|
||||
if (game.IsDevice.AsYesNo() == true)
|
||||
machine.MachineType |= MachineType.Device;
|
||||
if (game.IsMechanical.AsYesNo() == true)
|
||||
machine.MachineType |= MachineType.Mechanical;
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, $"{dirname}/{machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}");
|
||||
|
||||
#if NETFRAMEWORK
|
||||
if (game.Comment != null && game.Comment.Any())
|
||||
machine.Comment = string.Join(";", game.Comment);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CommentKey, string.Join(";", game.Comment));
|
||||
if (game.Category != null && game.Category.Any())
|
||||
machine.Category = string.Join(";", game.Category);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CategoryKey, string.Join(";", game.Category));
|
||||
#else
|
||||
if (game.Comment != null && game.Comment.Any())
|
||||
machine.Comment = string.Join(';', game.Comment);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CommentKey, string.Join(';', game.Comment));
|
||||
if (game.Category != null && game.Category.Any())
|
||||
machine.Category = string.Join(';', game.Category);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CategoryKey, string.Join(';', game.Category));
|
||||
#endif
|
||||
|
||||
if (game.Trurip != null)
|
||||
@@ -253,18 +246,18 @@ namespace SabreTools.DatFiles.Formats
|
||||
var trurip = game.Trurip;
|
||||
|
||||
machine.TitleID = trurip.TitleID;
|
||||
machine.Publisher = trurip.Publisher;
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.PublisherKey, trurip.Publisher);
|
||||
machine.Developer = trurip.Developer;
|
||||
machine.Year = trurip.Year;
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.YearKey, value: trurip.Year);
|
||||
machine.Genre = trurip.Genre;
|
||||
machine.Subgenre = trurip.Subgenre;
|
||||
machine.Ratings = trurip.Ratings;
|
||||
machine.Score = trurip.Score;
|
||||
machine.Players = trurip.Players;
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.PlayersKey, trurip.Players);
|
||||
machine.Enabled = trurip.Enabled;
|
||||
machine.Crc = trurip.CRC.AsYesNo();
|
||||
machine.SourceFile = trurip.Source;
|
||||
machine.CloneOf = trurip.CloneOf;
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey, trurip.Source);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, trurip.CloneOf);
|
||||
machine.RelatedTo = trurip.RelatedTo;
|
||||
}
|
||||
|
||||
|
||||
@@ -389,48 +389,39 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
Models.Logiqx.GameBase game = _deprecated ? new Models.Logiqx.Game() : new Models.Logiqx.Machine();
|
||||
|
||||
game.Name = machine.Name;
|
||||
game.SourceFile = machine.SourceFile;
|
||||
#if NETFRAMEWORK
|
||||
if ((machine.MachineType & MachineType.Bios) != 0)
|
||||
game.Name = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
game.SourceFile = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey);
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsBiosKey) == true)
|
||||
game.IsBios = "yes";
|
||||
if ((machine.MachineType & MachineType.Device) != 0)
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true)
|
||||
game.IsDevice = "yes";
|
||||
if ((machine.MachineType & MachineType.Mechanical) != 0)
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsMechanicalKey) == true)
|
||||
game.IsMechanical = "yes";
|
||||
#else
|
||||
if (machine.MachineType.HasFlag(MachineType.Bios))
|
||||
game.IsBios = "yes";
|
||||
if (machine.MachineType.HasFlag(MachineType.Device))
|
||||
game.IsDevice = "yes";
|
||||
if (machine.MachineType.HasFlag(MachineType.Mechanical))
|
||||
game.IsMechanical = "yes";
|
||||
#endif
|
||||
game.CloneOf = machine.CloneOf;
|
||||
game.RomOf = machine.RomOf;
|
||||
game.SampleOf = machine.SampleOf;
|
||||
game.Board = machine.Board;
|
||||
game.RebuildTo = machine.RebuildTo;
|
||||
game.Id = machine.NoIntroId;
|
||||
game.CloneOfId = machine.NoIntroCloneOfId;
|
||||
game.Runnable = machine.Runnable.AsStringValue<Runnable>();
|
||||
if (machine.Comment != null)
|
||||
game.CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey);
|
||||
game.RomOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey);
|
||||
game.SampleOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey);
|
||||
game.Board = machine.GetFieldValue<string?>(Models.Metadata.Machine.BoardKey);
|
||||
game.RebuildTo = machine.GetFieldValue<string?>(Models.Metadata.Machine.RebuildToKey);
|
||||
game.Id = machine.GetFieldValue<string?>(Models.Metadata.Machine.IdKey);
|
||||
game.CloneOfId = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfIdKey);
|
||||
game.Runnable = machine.GetFieldValue<Runnable>(Models.Metadata.Machine.RunnableKey).AsStringValue<Runnable>();
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey) != null)
|
||||
{
|
||||
if (machine.Comment.Contains(';'))
|
||||
game.Comment = machine.Comment.Split(';');
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey)!.Contains(';'))
|
||||
game.Comment = machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey)!.Split(';');
|
||||
else
|
||||
game.Comment = [machine.Comment];
|
||||
game.Comment = [machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey)!];
|
||||
}
|
||||
game.Description = machine.Description;
|
||||
game.Year = machine.Year;
|
||||
game.Manufacturer = machine.Manufacturer;
|
||||
game.Publisher = machine.Publisher;
|
||||
if (machine.Category != null)
|
||||
game.Description = machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey);
|
||||
game.Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey);
|
||||
game.Manufacturer = machine.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey);
|
||||
game.Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey);
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey) != null)
|
||||
{
|
||||
if (machine.Category.Contains(';'))
|
||||
game.Category = machine.Category.Split(';');
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey)!.Contains(';'))
|
||||
game.Category = machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey)!.Split(';');
|
||||
else
|
||||
game.Category = [machine.Category];
|
||||
game.Category = [machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey)!];
|
||||
}
|
||||
game.Trurip = CreateTrurip(machine);
|
||||
|
||||
@@ -459,18 +450,18 @@ namespace SabreTools.DatFiles.Formats
|
||||
var trurip = new Models.Logiqx.Trurip
|
||||
{
|
||||
TitleID = machine.TitleID,
|
||||
Publisher = machine.Publisher,
|
||||
Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey),
|
||||
Developer = machine.Developer,
|
||||
Year = machine.Year,
|
||||
Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Genre = machine.Genre,
|
||||
Subgenre = machine.Subgenre,
|
||||
Ratings = machine.Ratings,
|
||||
Score = machine.Score,
|
||||
Players = machine.Players,
|
||||
Players = machine.GetFieldValue<string?>(Models.Metadata.Machine.PlayersKey),
|
||||
Enabled = machine.Enabled,
|
||||
CRC = machine.Crc.FromYesNo(),
|
||||
Source = machine.SourceFile,
|
||||
CloneOf = machine.CloneOf,
|
||||
Source = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey),
|
||||
CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
RelatedTo = machine.RelatedTo,
|
||||
};
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
WriteDatItem(sw, datItem, lastgame);
|
||||
|
||||
// Set the new data to compare against
|
||||
lastgame = datItem.Machine.Name;
|
||||
lastgame = datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,8 +94,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
// Romba mode automatically uses item name
|
||||
if (Header.OutputDepot?.IsActive == true || Header.UseRomName)
|
||||
sw.Write($"{datItem.GetName() ?? string.Empty}\n");
|
||||
else if (!Header.UseRomName && datItem.Machine.Name != lastgame)
|
||||
sw.Write($"{datItem.Machine.Name ?? string.Empty}\n");
|
||||
else if (!Header.UseRomName && datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != lastgame)
|
||||
sw.Write($"{datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty}\n");
|
||||
|
||||
sw.Flush();
|
||||
}
|
||||
|
||||
@@ -301,24 +301,22 @@ namespace SabreTools.DatFiles.Formats
|
||||
if (game == null)
|
||||
return;
|
||||
|
||||
var machine = new Machine
|
||||
{
|
||||
//ImageNumber = game.ImageNumber, // TODO: Add to internal model
|
||||
//ReleaseNumber = game.ReleaseNumber, // TODO: Add to internal model
|
||||
Name = game.Title,
|
||||
//SaveType = game.SaveType, // TODO: Add to internal model
|
||||
Publisher = game.Publisher,
|
||||
//Location = game.Location, // TODO: Add to internal model
|
||||
//SourceRom = game.SourceRom, // TODO: Add to internal model
|
||||
//Language = game.Language, // TODO: Add to internal model
|
||||
//Im1CRC = game.Im1CRC, // TODO: Add to internal model
|
||||
//Im2CRC = game.Im2CRC, // TODO: Add to internal model
|
||||
Comment = game.Comment,
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CommentKey, game.Comment);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.Im1CRCKey, game.Im1CRC);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.Im2CRCKey, game.Im2CRC);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ImageNumberKey, game.ImageNumber);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.LanguageKey, game.Language);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.LocationKey, game.Location);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, game.Title);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.PublisherKey, game.Publisher);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ReleaseNumberKey, game.ReleaseNumber);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SaveTypeKey, game.SaveType);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SourceRomKey, game.SourceRom);
|
||||
|
||||
long? size = NumberHelper.ConvertToInt64(game.RomSize);
|
||||
if (game.DuplicateID != "0")
|
||||
machine.CloneOf = game.DuplicateID;
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, game.DuplicateID);
|
||||
|
||||
// Check if there are any items
|
||||
bool containsItems = false;
|
||||
@@ -362,7 +360,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
string name = string.Empty;
|
||||
if (!string.IsNullOrEmpty(releaseNumber) && releaseNumber != "0")
|
||||
name += $"{releaseNumber} - ";
|
||||
name += $"{machine.Name}{crc.Extension}";
|
||||
name += $"{machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{crc.Extension}";
|
||||
|
||||
var item = new Rom
|
||||
{
|
||||
|
||||
@@ -361,21 +361,20 @@ namespace SabreTools.DatFiles.Formats
|
||||
/// <summary>
|
||||
private static Models.OfflineList.Game CreateGame(Machine machine)
|
||||
{
|
||||
|
||||
var game = new Models.OfflineList.Game
|
||||
{
|
||||
//ImageNumber = machine.ImageNumber, // TODO: Add to internal model
|
||||
//ReleaseNumber = machine.ReleaseNumber, // TODO: Add to internal model
|
||||
Title = machine.Name,
|
||||
//SaveType = machine.SaveType, // TODO: Add to internal model
|
||||
Publisher = machine.Publisher,
|
||||
//Location = machine.Location, // TODO: Add to internal model
|
||||
//SourceRom = machine.SourceRom, // TODO: Add to internal model
|
||||
//Language = machine.Language, // TODO: Add to internal model
|
||||
//Im1CRC = machine.Im1CRC, // TODO: Add to internal model
|
||||
//Im2CRC = machine.Im2CRC, // TODO: Add to internal model
|
||||
Comment = machine.Comment,
|
||||
DuplicateID = machine.CloneOf,
|
||||
ImageNumber = machine.GetFieldValue<string?>(Models.Metadata.Machine.ImageNumberKey),
|
||||
ReleaseNumber = machine.GetFieldValue<string?>(Models.Metadata.Machine.ReleaseNumberKey),
|
||||
Title = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
SaveType = machine.GetFieldValue<string?>(Models.Metadata.Machine.SaveTypeKey),
|
||||
Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey),
|
||||
Location = machine.GetFieldValue<string?>(Models.Metadata.Machine.LocationKey),
|
||||
SourceRom = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceRomKey),
|
||||
Language = machine.GetFieldValue<string?>(Models.Metadata.Machine.LanguageKey),
|
||||
Im1CRC = machine.GetFieldValue<string?>(Models.Metadata.Machine.Im1CRCKey),
|
||||
Im2CRC = machine.GetFieldValue<string?>(Models.Metadata.Machine.Im2CRCKey),
|
||||
Comment = machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey),
|
||||
DuplicateID = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
};
|
||||
|
||||
return game;
|
||||
|
||||
@@ -84,15 +84,13 @@ namespace SabreTools.DatFiles.Formats
|
||||
return;
|
||||
|
||||
// Create the machine for copying information
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = software.Title,
|
||||
GenMSXID = software.GenMSXID,
|
||||
System = software.System,
|
||||
Manufacturer = software.Company,
|
||||
Year = software.Year,
|
||||
Country = software.Country,
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CountryKey, software.Country);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.GenMSXIDKey, software.GenMSXID);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey, software.Company);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.SystemKey, software.System);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, software.Title);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.YearKey, software.Year);
|
||||
|
||||
// Check if there are any items
|
||||
bool containsItems = false;
|
||||
@@ -136,7 +134,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var rom = dump.Rom;
|
||||
|
||||
string name = $"{machine.Name}_{index++}{(!string.IsNullOrEmpty(rom.Remark) ? $" {rom.Remark}" : string.Empty)}";
|
||||
string name = $"{machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}_{index++}{(!string.IsNullOrEmpty(rom.Remark) ? $" {rom.Remark}" : string.Empty)}";
|
||||
var item = new Rom
|
||||
{
|
||||
Source = new Source { Index = indexId, Name = filename },
|
||||
|
||||
@@ -106,12 +106,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
var machine = items[0].Machine;
|
||||
var software = new Models.OpenMSX.Software
|
||||
{
|
||||
Title = machine?.Name,
|
||||
GenMSXID = machine?.GenMSXID,
|
||||
System = machine?.System,
|
||||
Company = machine?.Manufacturer,
|
||||
Year = machine?.Year,
|
||||
Country = machine?.Country,
|
||||
Title = machine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GenMSXID = machine?.GetFieldValue<string?>(Models.Metadata.Machine.GenMSXIDKey),
|
||||
System = machine?.GetFieldValue<string?>(Models.Metadata.Machine.SystemKey),
|
||||
Company = machine?.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey),
|
||||
Year = machine?.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Country = machine?.GetFieldValue<string?>(Models.Metadata.Machine.CountryKey),
|
||||
};
|
||||
|
||||
// Create holder for dumps
|
||||
|
||||
@@ -107,14 +107,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
foreach (var rom in games.Rom)
|
||||
{
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = rom.GameName,
|
||||
Description = rom.GameDescription,
|
||||
CloneOf = rom.ParentName,
|
||||
//CloneOfDescription = rom.ParentDescription, // TODO: Add to internal model or find mapping
|
||||
RomOf = rom.RomOf,
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, rom.ParentName);
|
||||
//machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfDescriptionKey, rom.ParentDescription); // TODO: Add to internal model or find mapping
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, rom.GameDescription);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, rom.GameName);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.RomOfKey, rom.RomOf);
|
||||
|
||||
var item = new Rom
|
||||
{
|
||||
|
||||
@@ -183,14 +183,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var rom = new Models.RomCenter.Rom
|
||||
{
|
||||
ParentName = item.Machine.CloneOf,
|
||||
//ParentDescription = item.Machine.CloneOfDescription, // TODO: Add to internal model or find mapping
|
||||
GameName = item.Machine.Name,
|
||||
GameDescription = item.Machine.Description,
|
||||
ParentName = item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
//ParentDescription = item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfDescription), // TODO: Add to internal model or find mapping
|
||||
GameName = item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
RomName = item.GetName(),
|
||||
RomCRC = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
RomSize = item.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey)?.ToString(),
|
||||
RomOf = item.Machine.RomOf,
|
||||
RomOf = item.Machine.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey),
|
||||
MergeName = item.GetFieldValue<string?>(Models.Metadata.Rom.MergeKey),
|
||||
};
|
||||
return rom;
|
||||
|
||||
@@ -395,11 +395,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
DatItem datItem = datItems[index];
|
||||
|
||||
// If we have a different game and we're not at the start of the list, output the end of last item
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.Machine.Name?.ToLowerInvariant())
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
SabreJSON.WriteEndGame(jtw);
|
||||
|
||||
// If we have a new game, output the beginning of the new item
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.Machine.Name?.ToLowerInvariant())
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
SabreJSON.WriteStartGame(jtw, datItem);
|
||||
|
||||
// Check for a "null" item
|
||||
@@ -410,7 +410,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
WriteDatItem(jtw, datItem);
|
||||
|
||||
// Set the new data to compare against
|
||||
lastgame = datItem.Machine.Name;
|
||||
lastgame = datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -457,8 +457,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
private static void WriteStartGame(JsonTextWriter jtw, DatItem datItem)
|
||||
{
|
||||
// No game should start with a path separator
|
||||
if (!string.IsNullOrEmpty(datItem.Machine.Name))
|
||||
datItem.Machine.Name = datItem.Machine.Name!.TrimStart(Path.DirectorySeparatorChar);
|
||||
if (!string.IsNullOrEmpty(datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)))
|
||||
datItem.Machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)!.TrimStart(Path.DirectorySeparatorChar));
|
||||
|
||||
// Build the state
|
||||
jtw.WriteStartObject();
|
||||
|
||||
@@ -227,11 +227,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
DatItem datItem = datItems[index];
|
||||
|
||||
// If we have a different game and we're not at the start of the list, output the end of last item
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.Machine.Name?.ToLowerInvariant())
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
WriteEndGame(xtw);
|
||||
|
||||
// If we have a new game, output the beginning of the new item
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.Machine.Name?.ToLowerInvariant())
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
WriteStartGame(xtw, datItem);
|
||||
|
||||
// Check for a "null" item
|
||||
@@ -242,7 +242,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
WriteDatItem(xtw, datItem);
|
||||
|
||||
// Set the new data to compare against
|
||||
lastgame = datItem.Machine.Name;
|
||||
lastgame = datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem)
|
||||
{
|
||||
// No game should start with a path separator
|
||||
datItem.Machine!.Name = datItem.Machine.Name?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty;
|
||||
datItem.Machine!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, datItem.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty);
|
||||
|
||||
// Write the machine
|
||||
xtw.WriteStartElement("directory");
|
||||
|
||||
@@ -71,11 +71,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
Header.Description ??= row.Description;
|
||||
|
||||
// Read Machine values
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = row.GameName,
|
||||
Description = row.GameDescription,
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, row.GameDescription);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, row.GameName);
|
||||
|
||||
// Read item values
|
||||
DatItem? item = null;
|
||||
|
||||
@@ -162,8 +162,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
FileName = Header.FileName,
|
||||
InternalName = Header.Name,
|
||||
Description = Header.Description,
|
||||
GameName = disk.Machine.Name,
|
||||
GameDescription = disk.Machine.Description,
|
||||
GameName = disk.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = disk.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Type = disk.GetFieldValue<ItemType>(Models.Metadata.Disk.TypeKey).AsStringValue<ItemType>(),
|
||||
RomName = string.Empty,
|
||||
DiskName = disk.GetName(),
|
||||
@@ -190,8 +190,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
FileName = Header.FileName,
|
||||
InternalName = Header.Name,
|
||||
Description = Header.Description,
|
||||
GameName = media.Machine.Name,
|
||||
GameDescription = media.Machine.Description,
|
||||
GameName = media.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = media.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Type = media.ItemType.AsStringValue<ItemType>(),
|
||||
RomName = string.Empty,
|
||||
DiskName = media.GetName(),
|
||||
@@ -218,8 +218,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
FileName = Header.FileName,
|
||||
InternalName = Header.Name,
|
||||
Description = Header.Description,
|
||||
GameName = rom.Machine.Name,
|
||||
GameDescription = rom.Machine.Description,
|
||||
GameName = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = rom.Machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Type = rom.ItemType.AsStringValue<ItemType>(),
|
||||
RomName = rom.GetName(),
|
||||
DiskName = string.Empty,
|
||||
|
||||
@@ -90,16 +90,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
return;
|
||||
|
||||
// Create the machine for copying information
|
||||
var machine = new Machine
|
||||
{
|
||||
Name = software.Name,
|
||||
CloneOf = software.CloneOf,
|
||||
Supported = software.Supported.AsEnumValue<Supported>(),
|
||||
Description = software.Description,
|
||||
Year = software.Year,
|
||||
Publisher = software.Publisher,
|
||||
Comment = software.Notes,
|
||||
};
|
||||
var machine = new Machine();
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey, software.CloneOf);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.CommentKey, software.Notes);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey, software.Description);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, software.Name);
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.PublisherKey, software.Publisher);
|
||||
machine.SetFieldValue<Supported>(Models.Metadata.Machine.SupportedKey, software.Supported.AsEnumValue<Supported>());
|
||||
machine.SetFieldValue<string?>(Models.Metadata.Machine.YearKey, software.Year);
|
||||
|
||||
// Add all Info objects
|
||||
foreach (var info in software.Info ?? [])
|
||||
|
||||
@@ -259,13 +259,13 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var software = new Models.SoftwareList.Software
|
||||
{
|
||||
Name = machine.Name,
|
||||
CloneOf = machine.CloneOf,
|
||||
Supported = machine.Supported.AsStringValue<Supported>(useSecond: true),
|
||||
Description = machine.Description,
|
||||
Year = machine.Year,
|
||||
Publisher = machine.Publisher,
|
||||
Notes = machine.Comment,
|
||||
Name = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
Supported = machine.GetFieldValue<Supported>(Models.Metadata.Machine.SupportedKey).AsStringValue<Supported>(useSecond: true),
|
||||
Description = machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey),
|
||||
Notes = machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey),
|
||||
};
|
||||
|
||||
return software;
|
||||
|
||||
@@ -400,7 +400,7 @@ namespace SabreTools.DatFiles
|
||||
// Filter the list
|
||||
return fi.Where(i => i != null)
|
||||
.Where(i => !i.Remove)
|
||||
.Where(i => i.Machine.Name != null)
|
||||
.Where(i => i.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != null)
|
||||
.ToConcurrentList();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -531,7 +531,7 @@ namespace SabreTools.DatFiles
|
||||
// Filter the list
|
||||
return fi.Where(i => i != null)
|
||||
.Where(i => !i.Remove)
|
||||
.Where(i => i.Machine.Name != null)
|
||||
.Where(i => i.Machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != null)
|
||||
.ToConcurrentList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user