Add setters and getters for Machine

This commit is contained in:
Matt Nadareski
2024-03-09 23:43:43 -05:00
parent f37e3a07da
commit c2e30138db
55 changed files with 534 additions and 890 deletions

View File

@@ -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);

View File

@@ -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()
{

View File

@@ -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()
{

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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

View File

@@ -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()
{

View File

@@ -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),

View File

@@ -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);
}

View File

@@ -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)
{

View File

@@ -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
{

View File

@@ -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

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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,
};

View File

@@ -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();
}

View File

@@ -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
{

View File

@@ -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;

View File

@@ -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 },

View File

@@ -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

View File

@@ -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
{

View File

@@ -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;

View File

@@ -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();

View File

@@ -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");

View File

@@ -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;

View File

@@ -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,

View File

@@ -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 ?? [])

View File

@@ -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;

View File

@@ -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();
}
}

View File

@@ -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();
}
}