[SabreTools, Flags, DatFile, README] Add replace year, manufacturer

This commit is contained in:
Matt Nadareski
2018-01-06 22:30:58 -08:00
parent 99c4c4e5a2
commit caabf69f11
6 changed files with 80 additions and 22 deletions

View File

@@ -1796,8 +1796,8 @@ namespace SabreTools.Library.DatFiles
intDat.Parse(path, 1, 1, keep: true, clean: clean, remUnicode: remUnicode, descAsName: descAsName); intDat.Parse(path, 1, 1, keep: true, clean: clean, remUnicode: remUnicode, descAsName: descAsName);
// If we are matching based on hashes of any sort // If we are matching based on hashes of any sort
if ((replaceMode & ReplaceMode.Names) != 0 if ((replaceMode & ReplaceMode.ItemName) != 0
|| (replaceMode & ReplaceMode.Hashes) != 0) || (replaceMode & ReplaceMode.Hash) != 0)
{ {
// For comparison's sake, we want to use CRC as the base ordering // For comparison's sake, we want to use CRC as the base ordering
BucketBy(SortedBy.CRC, DedupeType.Full); BucketBy(SortedBy.CRC, DedupeType.Full);
@@ -1824,13 +1824,13 @@ namespace SabreTools.Library.DatFiles
if (dupes.Count > 0) if (dupes.Count > 0)
{ {
// If we're updating names, replace using the first found name // If we're updating names, replace using the first found name
if ((replaceMode & ReplaceMode.Names) != 0) if ((replaceMode & ReplaceMode.ItemName) != 0)
{ {
newDatItem.Name = dupes[0].Name; newDatItem.Name = dupes[0].Name;
} }
// If we're updating hashes, only replace if the current item doesn't have them // If we're updating hashes, only replace if the current item doesn't have them
if ((replaceMode & ReplaceMode.Hashes) != 0) if ((replaceMode & ReplaceMode.Hash) != 0)
{ {
if (newDatItem.Type == ItemType.Rom) if (newDatItem.Type == ItemType.Rom)
{ {
@@ -1901,7 +1901,9 @@ namespace SabreTools.Library.DatFiles
} }
// If we are matching based on names of any sort // If we are matching based on names of any sort
if ((replaceMode & ReplaceMode.Descriptions) != 0) if ((replaceMode & ReplaceMode.Description) != 0
|| (replaceMode & ReplaceMode.Year) != 0
|| (replaceMode & ReplaceMode.Manufacturer) != 0)
{ {
// For comparison's sake, we want to use Machine Name as the base ordering // For comparison's sake, we want to use Machine Name as the base ordering
BucketBy(SortedBy.Game, DedupeType.Full); BucketBy(SortedBy.Game, DedupeType.Full);
@@ -1918,7 +1920,18 @@ namespace SabreTools.Library.DatFiles
DatItem newDatItem = (DatItem)datItem.Clone(); DatItem newDatItem = (DatItem)datItem.Clone();
if (Contains(key) && this[key].Count() > 0) if (Contains(key) && this[key].Count() > 0)
{ {
newDatItem.MachineDescription = this[key][0].MachineDescription; if ((replaceMode & ReplaceMode.Description) != 0)
{
newDatItem.MachineDescription = this[key][0].MachineDescription;
}
if ((replaceMode & ReplaceMode.Year) != 0)
{
newDatItem.Year = this[key][0].Year;
}
if ((replaceMode & ReplaceMode.Manufacturer) != 0)
{
newDatItem.Manufacturer = this[key][0].Manufacturer;
}
} }
newDatItems.Add(newDatItem); newDatItems.Add(newDatItem);

View File

@@ -249,9 +249,15 @@ namespace SabreTools.Library.Data
public enum ReplaceMode public enum ReplaceMode
{ {
None = 0x0, None = 0x0,
Names = 0x1,
Hashes = Names << 1, // Sorted by hash
Descriptions = Hashes << 1, ItemName = 0x1,
Hash = ItemName << 1,
// Sorted by machine name
Description = Hash << 1,
Year = Description << 1,
Manufacturer = Year << 1,
} }
/// <summary> /// <summary>

View File

@@ -1159,12 +1159,20 @@ Options:
-un, --update-names Update item names from base DATs -un, --update-names Update item names from base DATs
This flag enables updating of item names from base DATs. This flag enables updating of item names from base DATs.
-uh, --update-hashes Update hashes from base DATs
This flag enables updating of hashes from base DATs.
-udd, --update-desc Update machine descriptions from base DATs -udd, --update-desc Update machine descriptions from base DATs
This flag enables updating of machine descriptions from base This flag enables updating of machine descriptions from base
DATs DATs
-uh, --update-hashes Update hashes from base DATs -udd, --update-years Update machine years from base DATs
This flag enables updating of hashes from base DATs. This flag enables updating of machine years from base
DATs
-udd, --update-manu Update machine manufacturers from base DATs
This flag enables updating of machine manufacturers from base
DATs
-gn=, --not-game= Filter by game name -gn=, --not-game= Filter by game name
-ngn=, --game-name= Exclude by game name -ngn=, --game-name= Exclude by game name

View File

@@ -1275,14 +1275,24 @@ namespace SabreTools
"Update item names from base DATs", "Update item names from base DATs",
FeatureType.Flag, FeatureType.Flag,
null)); null));
update["base-replace"].AddFeature("update-hashes", new Feature(
new List<string>() { "-uh", "--update-hashes" },
"Update hashes from base DATs",
FeatureType.Flag,
null));
update["base-replace"].AddFeature("update-desc", new Feature( update["base-replace"].AddFeature("update-desc", new Feature(
new List<string>() { "-udd", "--update-desc" }, new List<string>() { "-udd", "--update-desc" },
"Update machine descriptions from base DATs", "Update machine descriptions from base DATs",
FeatureType.Flag, FeatureType.Flag,
null)); null));
update["base-replace"].AddFeature("update-hashes", new Feature( update["base-replace"].AddFeature("update-year", new Feature(
new List<string>() { "-uh", "--update-hashes" }, new List<string>() { "-uy", "--update-year" },
"Update hashes from base DATs", "Update machine years from base DATs",
FeatureType.Flag,
null));
update["base-replace"].AddFeature("update-manu", new Feature(
new List<string>() { "-um", "--update-manu" },
"Update machine manufacturers from base DATs",
FeatureType.Flag, FeatureType.Flag,
null)); null));
update.AddFeature("reverse-base-replace", new Feature( update.AddFeature("reverse-base-replace", new Feature(
@@ -1297,7 +1307,7 @@ namespace SabreTools
null)); null));
update["reverse-base-replace"].AddFeature("update-names", new Feature( update["reverse-base-replace"].AddFeature("update-names", new Feature(
new List<string>() { "-un", "--update-names" }, new List<string>() { "-un", "--update-names" },
"Update names from base DATs", "Update item names from base DATs",
FeatureType.Flag, FeatureType.Flag,
null)); null));
update["reverse-base-replace"].AddFeature("update-hashes", new Feature( update["reverse-base-replace"].AddFeature("update-hashes", new Feature(
@@ -1305,6 +1315,21 @@ namespace SabreTools
"Update hashes from base DATs", "Update hashes from base DATs",
FeatureType.Flag, FeatureType.Flag,
null)); null));
update["reverse-base-replace"].AddFeature("update-desc", new Feature(
new List<string>() { "-udd", "--update-desc" },
"Update machine descriptions from base DATs",
FeatureType.Flag,
null));
update["reverse-base-replace"].AddFeature("update-years", new Feature(
new List<string>() { "-uy", "--update-years" },
"Update machine years from base DATs",
FeatureType.Flag,
null));
update["reverse-base-replace"].AddFeature("update-manu", new Feature(
new List<string>() { "-um", "--update-manu" },
"Update machine manufacturers from base DATs",
FeatureType.Flag,
null));
update.AddFeature("game-name", new Feature( update.AddFeature("game-name", new Feature(
new List<string>() { "-gn", "--game-name" }, new List<string>() { "-gn", "--game-name" },
"Filter by game name", "Filter by game name",

View File

@@ -303,7 +303,7 @@ namespace SabreTools
// If no replacement mode is set, default to Names // If no replacement mode is set, default to Names
if (replaceMode == ReplaceMode.None) if (replaceMode == ReplaceMode.None)
{ {
replaceMode = ReplaceMode.Names; replaceMode = ReplaceMode.ItemName;
} }
// Populate the DatData object // Populate the DatData object

View File

@@ -254,6 +254,9 @@ namespace SabreTools
case "dat-split": case "dat-split":
splitType = SplitType.Split; splitType = SplitType.Split;
break; break;
case "exclude-of":
datHeader.ExcludeOf = true;
break;
case "ext": case "ext":
splittingMode |= SplittingMode.Extension; splittingMode |= SplittingMode.Extension;
break; break;
@@ -489,16 +492,19 @@ namespace SabreTools
updateDat = true; updateDat = true;
break; break;
case "update-desc": case "update-desc":
replaceMode |= ReplaceMode.Descriptions; replaceMode |= ReplaceMode.Description;
break; break;
case "update-hashes": case "update-hashes":
replaceMode |= ReplaceMode.Hashes; replaceMode |= ReplaceMode.Hash;
break;
case "update-manu":
replaceMode |= ReplaceMode.Manufacturer;
break; break;
case "update-names": case "update-names":
replaceMode |= ReplaceMode.Names; replaceMode |= ReplaceMode.ItemName;
break; break;
case "exclude-of": case "update-years":
datHeader.ExcludeOf = true; replaceMode |= ReplaceMode.Year;
break; break;
// User inputs // User inputs