[DatFile, DatItem] Enable merge tags and proper usage

This commit is contained in:
Matt Nadareski
2017-02-04 21:40:25 -08:00
parent 039a6368a8
commit 051a4e8fc7
4 changed files with 23 additions and 1 deletions

View File

@@ -19,6 +19,7 @@ namespace SabreTools.Helper.Dats
// Standard item information
protected string _name;
private string _merge;
protected ItemType _itemType;
protected DupeType _dupeType;
@@ -51,6 +52,11 @@ namespace SabreTools.Helper.Dats
get { return _name; }
set { _name = value; }
}
public string MergeTag
{
get { return _merge; }
set { _merge = value; }
}
public ItemType Type
{
get { return _itemType; }

View File

@@ -11,7 +11,6 @@ namespace SabreTools.Helper.Dats
// Disk information
protected string _md5;
protected string _sha1;
// private string _merge;
protected ItemStatus _itemStatus;
#endregion

View File

@@ -809,6 +809,17 @@ namespace SabreTools.Helper.Dats
List<DatItem> items = this[game];
foreach (DatItem item in items)
{
// If the item doesn't have a valid merge tag OR the merged file doesn't exist in the parent, then add it
if (item.MergeTag == null || !this[parent].Select(i => i.Name).Contains(item.MergeTag))
{
// TODO: Remove hack for just disks at a later date
item.Name = (item.Type != ItemType.Disk ? item.Machine.Name + "\\" : "") + item.Name;
item.Machine = parentMachine;
this[parent].Add(item);
}
/*
// If the parent doesn't already contain the item, add it
if (!this[parent].Contains(item))
{
@@ -818,6 +829,7 @@ namespace SabreTools.Helper.Dats
this[parent].Add(item);
}
*/
}
// Then, remove the old game so it's not picked up by the writer

View File

@@ -1630,6 +1630,9 @@ namespace SabreTools.Helper.Dats
case "disk":
empty = false;
// If the rom has a merge tag, add it
string merge = subreader.GetAttribute("merge");
// If the rom has a status, flag it
its = ItemStatus.None;
if (subreader.GetAttribute("flags") == "good" || subreader.GetAttribute("status") == "good")
@@ -1709,6 +1712,7 @@ namespace SabreTools.Helper.Dats
Name = subreader.GetAttribute("name"),
MD5 = subreader.GetAttribute("md5")?.ToLowerInvariant(),
SHA1 = subreader.GetAttribute("sha1")?.ToLowerInvariant(),
MergeTag = merge,
ItemStatus = its,
Machine = machine,
@@ -1737,6 +1741,7 @@ namespace SabreTools.Helper.Dats
MD5 = subreader.GetAttribute("md5")?.ToLowerInvariant(),
SHA1 = subreader.GetAttribute("sha1")?.ToLowerInvariant(),
ItemStatus = its,
MergeTag = merge,
Date = date,
Machine = machine,