mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[DatItems] Add reading Blanks where appropriate
This commit is contained in:
@@ -58,7 +58,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
Encoding enc = Utilities.GetEncoding(filename);
|
Encoding enc = Utilities.GetEncoding(filename);
|
||||||
StreamReader sr = new StreamReader(Utilities.TryOpenRead(filename), enc);
|
StreamReader sr = new StreamReader(Utilities.TryOpenRead(filename), enc);
|
||||||
|
|
||||||
bool block = false, superdat = false;
|
bool block = false, superdat = false, containsItems = false;
|
||||||
string blockname = "", tempgamename = "", gamedesc = "", cloneof = "",
|
string blockname = "", tempgamename = "", gamedesc = "", cloneof = "",
|
||||||
romof = "", sampleof = "", year = "", manufacturer = "";
|
romof = "", sampleof = "", year = "", manufacturer = "";
|
||||||
while (!sr.EndOfStream)
|
while (!sr.EndOfStream)
|
||||||
@@ -82,6 +82,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
}
|
}
|
||||||
|
|
||||||
block = true;
|
block = true;
|
||||||
|
containsItems = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the line is a rom-like item and we're in a block
|
// If the line is a rom-like item and we're in a block
|
||||||
@@ -91,6 +92,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
|| (line.Trim().StartsWith("sample") && !line.Trim().StartsWith("sampleof"))
|
|| (line.Trim().StartsWith("sample") && !line.Trim().StartsWith("sampleof"))
|
||||||
) && block)
|
) && block)
|
||||||
{
|
{
|
||||||
|
containsItems = true;
|
||||||
ItemType temptype = ItemType.Rom;
|
ItemType temptype = ItemType.Rom;
|
||||||
if (line.Trim().StartsWith("rom ("))
|
if (line.Trim().StartsWith("rom ("))
|
||||||
{
|
{
|
||||||
@@ -535,52 +537,19 @@ namespace SabreTools.Library.DatFiles
|
|||||||
case "forcemerging":
|
case "forcemerging":
|
||||||
if (ForceMerging == ForceMerging.None)
|
if (ForceMerging == ForceMerging.None)
|
||||||
{
|
{
|
||||||
switch (itemval)
|
ForceMerging = Utilities.GetForceMerging(itemval);
|
||||||
{
|
|
||||||
case "none":
|
|
||||||
ForceMerging = ForceMerging.None;
|
|
||||||
break;
|
|
||||||
case "split":
|
|
||||||
ForceMerging = ForceMerging.Split;
|
|
||||||
break;
|
|
||||||
case "merged":
|
|
||||||
ForceMerging = ForceMerging.Merged;
|
|
||||||
break;
|
|
||||||
case "nonmerged":
|
|
||||||
ForceMerging = ForceMerging.NonMerged;
|
|
||||||
break;
|
|
||||||
case "full":
|
|
||||||
ForceMerging = ForceMerging.Full;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "forcezipping":
|
case "forcezipping":
|
||||||
if (ForcePacking == ForcePacking.None)
|
if (ForcePacking == ForcePacking.None)
|
||||||
{
|
{
|
||||||
switch (itemval)
|
ForcePacking = Utilities.GetForcePacking(itemval);
|
||||||
{
|
|
||||||
case "yes":
|
|
||||||
ForcePacking = ForcePacking.Zip;
|
|
||||||
break;
|
|
||||||
case "no":
|
|
||||||
ForcePacking = ForcePacking.Unzip;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "forcepacking":
|
case "forcepacking":
|
||||||
if (ForcePacking == ForcePacking.None)
|
if (ForcePacking == ForcePacking.None)
|
||||||
{
|
{
|
||||||
switch (itemval)
|
ForcePacking = Utilities.GetForcePacking(itemval);
|
||||||
{
|
|
||||||
case "zip":
|
|
||||||
ForcePacking = ForcePacking.Zip;
|
|
||||||
break;
|
|
||||||
case "unzip":
|
|
||||||
ForcePacking = ForcePacking.Unzip;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -590,7 +559,28 @@ namespace SabreTools.Library.DatFiles
|
|||||||
// If we find an end bracket that's not associated with anything else, the block is done
|
// If we find an end bracket that's not associated with anything else, the block is done
|
||||||
else if (Regex.IsMatch(line, Constants.EndPatternCMP) && block)
|
else if (Regex.IsMatch(line, Constants.EndPatternCMP) && block)
|
||||||
{
|
{
|
||||||
block = false;
|
// If no items were found for this machine, add a Blank placeholder
|
||||||
|
if (!containsItems)
|
||||||
|
{
|
||||||
|
Blank blank = new Blank()
|
||||||
|
{
|
||||||
|
MachineName = tempgamename,
|
||||||
|
MachineDescription = gamedesc,
|
||||||
|
CloneOf = cloneof,
|
||||||
|
RomOf = romof,
|
||||||
|
SampleOf = sampleof,
|
||||||
|
Manufacturer = manufacturer,
|
||||||
|
Year = year,
|
||||||
|
|
||||||
|
SystemID = sysid,
|
||||||
|
SourceID = srcid,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Now process and add the rom
|
||||||
|
ParseAddHelper(blank, clean, remUnicode);
|
||||||
|
}
|
||||||
|
|
||||||
|
block = false, containsItems = false;
|
||||||
blockname = ""; tempgamename = ""; gamedesc = ""; cloneof = "";
|
blockname = ""; tempgamename = ""; gamedesc = ""; cloneof = "";
|
||||||
romof = ""; sampleof = ""; year = ""; manufacturer = "";
|
romof = ""; sampleof = ""; year = ""; manufacturer = "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2957,10 +2957,13 @@ namespace SabreTools.Library.DatFiles
|
|||||||
foreach (DatItem item in parentItems)
|
foreach (DatItem item in parentItems)
|
||||||
{
|
{
|
||||||
DatItem datItem = (DatItem)item.Clone();
|
DatItem datItem = (DatItem)item.Clone();
|
||||||
|
while (this[game].Contains(datItem))
|
||||||
|
{
|
||||||
Remove(game, datItem);
|
Remove(game, datItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Use cloneof tags to remove roms from the children
|
/// Use cloneof tags to remove roms from the children
|
||||||
@@ -3274,6 +3277,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
{
|
{
|
||||||
case ItemType.Archive:
|
case ItemType.Archive:
|
||||||
case ItemType.BiosSet:
|
case ItemType.BiosSet:
|
||||||
|
case ItemType.Blank:
|
||||||
case ItemType.Release:
|
case ItemType.Release:
|
||||||
case ItemType.Sample:
|
case ItemType.Sample:
|
||||||
key = item.Type.ToString();
|
key = item.Type.ToString();
|
||||||
|
|||||||
@@ -501,6 +501,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
long? areasize = null;
|
long? areasize = null;
|
||||||
List<Tuple<string, string>> infos = new List<Tuple<string, string>>();
|
List<Tuple<string, string>> infos = new List<Tuple<string, string>>();
|
||||||
List<Tuple<string, string>> features = new List<Tuple<string, string>>();
|
List<Tuple<string, string>> features = new List<Tuple<string, string>>();
|
||||||
|
bool containsItems = false;
|
||||||
|
|
||||||
// We want to process the entire subtree of the game
|
// We want to process the entire subtree of the game
|
||||||
subreader = xtr.ReadSubtree();
|
subreader = xtr.ReadSubtree();
|
||||||
@@ -623,6 +624,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
break;
|
break;
|
||||||
case "romCRC":
|
case "romCRC":
|
||||||
empty = false;
|
empty = false;
|
||||||
|
containsItems = true;
|
||||||
|
|
||||||
ext = (subreader.GetAttribute("extension") ?? "");
|
ext = (subreader.GetAttribute("extension") ?? "");
|
||||||
|
|
||||||
@@ -698,6 +700,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
break;
|
break;
|
||||||
case "release":
|
case "release":
|
||||||
empty = false;
|
empty = false;
|
||||||
|
containsItems = true;
|
||||||
|
|
||||||
bool? defaultrel = null;
|
bool? defaultrel = null;
|
||||||
if (subreader.GetAttribute("default") != null)
|
if (subreader.GetAttribute("default") != null)
|
||||||
@@ -739,6 +742,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
break;
|
break;
|
||||||
case "biosset":
|
case "biosset":
|
||||||
empty = false;
|
empty = false;
|
||||||
|
containsItems = true;
|
||||||
|
|
||||||
bool? defaultbios = null;
|
bool? defaultbios = null;
|
||||||
if (subreader.GetAttribute("default") != null)
|
if (subreader.GetAttribute("default") != null)
|
||||||
@@ -782,6 +786,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
break;
|
break;
|
||||||
case "archive":
|
case "archive":
|
||||||
empty = false;
|
empty = false;
|
||||||
|
containsItems = true;
|
||||||
|
|
||||||
DatItem archiverom = new Archive
|
DatItem archiverom = new Archive
|
||||||
{
|
{
|
||||||
@@ -810,6 +815,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
break;
|
break;
|
||||||
case "sample":
|
case "sample":
|
||||||
empty = false;
|
empty = false;
|
||||||
|
containsItems = true;
|
||||||
|
|
||||||
DatItem samplerom = new Sample
|
DatItem samplerom = new Sample
|
||||||
{
|
{
|
||||||
@@ -839,6 +845,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
case "rom":
|
case "rom":
|
||||||
case "disk":
|
case "disk":
|
||||||
empty = false;
|
empty = false;
|
||||||
|
containsItems = true;
|
||||||
|
|
||||||
// If the rom has a merge tag, add it
|
// If the rom has a merge tag, add it
|
||||||
string merge = subreader.GetAttribute("merge");
|
string merge = subreader.GetAttribute("merge");
|
||||||
@@ -983,6 +990,31 @@ namespace SabreTools.Library.DatFiles
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If no items were found for this machine, add a Blank placeholder
|
||||||
|
if (!containsItems)
|
||||||
|
{
|
||||||
|
Blank blank = new Blank()
|
||||||
|
{
|
||||||
|
Supported = supported,
|
||||||
|
Publisher = publisher,
|
||||||
|
Infos = infos,
|
||||||
|
PartName = partname,
|
||||||
|
PartInterface = partinterface,
|
||||||
|
Features = features,
|
||||||
|
AreaName = areaname,
|
||||||
|
AreaSize = areasize,
|
||||||
|
|
||||||
|
SystemID = sysid,
|
||||||
|
System = filename,
|
||||||
|
SourceID = srcid,
|
||||||
|
}
|
||||||
|
|
||||||
|
blank.CopyMachineInformation(machine);
|
||||||
|
|
||||||
|
// Now process and add the rom
|
||||||
|
key = ParseAddHelper(blank, clean, remUnicode);
|
||||||
|
}
|
||||||
|
|
||||||
xtr.Skip();
|
xtr.Skip();
|
||||||
break;
|
break;
|
||||||
case "dir":
|
case "dir":
|
||||||
@@ -1004,6 +1036,7 @@ namespace SabreTools.Library.DatFiles
|
|||||||
break;
|
break;
|
||||||
case "file":
|
case "file":
|
||||||
empty = false;
|
empty = false;
|
||||||
|
containsItems = true;
|
||||||
|
|
||||||
// If the rom is itemStatus, flag it
|
// If the rom is itemStatus, flag it
|
||||||
its = ItemStatus.None;
|
its = ItemStatus.None;
|
||||||
|
|||||||
@@ -665,6 +665,10 @@ namespace SabreTools.Library.Tools
|
|||||||
return ForceMerging.None;
|
return ForceMerging.None;
|
||||||
case "split":
|
case "split":
|
||||||
return ForceMerging.Split;
|
return ForceMerging.Split;
|
||||||
|
case "merged":
|
||||||
|
return ForceMerging.Merged;
|
||||||
|
case "nonmerged":
|
||||||
|
return ForceMerging.NonMerged;
|
||||||
case "full":
|
case "full":
|
||||||
return ForceMerging.Full;
|
return ForceMerging.Full;
|
||||||
}
|
}
|
||||||
@@ -703,8 +707,10 @@ namespace SabreTools.Library.Tools
|
|||||||
case "none":
|
case "none":
|
||||||
default:
|
default:
|
||||||
return ForcePacking.None;
|
return ForcePacking.None;
|
||||||
|
case "yes":
|
||||||
case "zip":
|
case "zip":
|
||||||
return ForcePacking.Zip;
|
return ForcePacking.Zip;
|
||||||
|
case "no":
|
||||||
case "unzip":
|
case "unzip":
|
||||||
return ForcePacking.Unzip;
|
return ForcePacking.Unzip;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user