Skip to content

Commit

Permalink
added option to use Description for extra directory name
Browse files Browse the repository at this point in the history
  • Loading branch information
GordonJ committed Feb 21, 2020
1 parent 5b980fa commit 00aad48
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 10 deletions.
12 changes: 10 additions & 2 deletions DATReader/DatClean/DatClean.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,23 @@ namespace DATReader.DatClean
{
public static partial class DatClean
{
public static void MakeDatSingleLevel(DatHeader tDatHeader)
public static void MakeDatSingleLevel(DatHeader tDatHeader,bool useDescription)
{
DatBase[] db = tDatHeader.BaseDir.ToArray();
tDatHeader.Dir = "noautodir";


// if we are auto adding extra directories then create a new directory.
string extraDirName="";
if (string.IsNullOrEmpty(extraDirName) && useDescription && !string.IsNullOrWhiteSpace(tDatHeader.Description))
extraDirName = tDatHeader.Description;
if (string.IsNullOrEmpty(extraDirName))
extraDirName = tDatHeader.Name;

tDatHeader.BaseDir.ChildrenClear();
DatDir root = new DatDir(DatFileType.UnSet)
{
Name = tDatHeader.Name,
Name = extraDirName,
DGame = new DatGame { Description = tDatHeader.Description }
};
tDatHeader.BaseDir.ChildAdd(root);
Expand Down
13 changes: 13 additions & 0 deletions ROMVault/FrmPathSettings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion ROMVault/FrmPathSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ private void SetDisplay()

chkSingleArchive.Checked = _rule.SingleArchive;
chkMultiDatDirOverride.Checked = _rule.MultiDATDirOverride;

chkUseDescription.Checked = _rule.UseDescriptionAsDirName;
}


Expand Down Expand Up @@ -189,6 +191,7 @@ private void BtnApplyClick(object sender, EventArgs e)
_rule.Filter = (FilterType)cboFilterType.SelectedIndex;
_rule.SingleArchive = chkSingleArchive.Checked;
_rule.MultiDATDirOverride = chkMultiDatDirOverride.Checked;
_rule.UseDescriptionAsDirName = chkUseDescription.Checked;

bool updatingRule = false;
int i;
Expand Down Expand Up @@ -313,7 +316,8 @@ private void BtnResetAllClick(object sender, EventArgs e)
_rule.Merge != MergeType.Split ||
_rule.MergeOverrideDAT ||
_rule.SingleArchive ||
_rule.MultiDATDirOverride)
_rule.MultiDATDirOverride ||
_rule.UseDescriptionAsDirName)
DatUpdate.CheckAllDats(DB.DirTree.Child(0), _rule.DirKey);
}

Expand Down
6 changes: 2 additions & 4 deletions RVCore/ReadDat/DatReader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,8 @@ public static RvFile ReadInDatFile(RvDat datFile, ThreadWorker thWrk)
if (dh == null)
return null;

string dirName = Path.GetDirectoryName(datRootFullName) + Path.DirectorySeparatorChar;

string extraPath = !string.IsNullOrEmpty(dh.RootDir) ? dh.RootDir : dh.Name;
string dirName = Path.GetDirectoryName(datRootFullName) + Path.DirectorySeparatorChar + extraPath + Path.DirectorySeparatorChar;

DatRule datRule = FindDatRule(dirName);

DatClean.CleanFilenames(dh.BaseDir);
Expand All @@ -95,7 +93,7 @@ public static RvFile ReadInDatFile(RvDat datFile, ThreadWorker thWrk)
SetMergeType(datRule, dh);

if (datRule.SingleArchive)
DatClean.MakeDatSingleLevel(dh);
DatClean.MakeDatSingleLevel(dh, datFile.UseDescriptionAsDirName);

DatClean.RemoveUnNeededDirectories(dh.BaseDir);

Expand Down
12 changes: 10 additions & 2 deletions RVCore/ReadDat/DatUpdate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ private static bool RecursiveDatTree(RvFile tDir, out int datCount)
string datRootFullName = tDat.GetData(RvDat.DatData.DatRootFullName);
DatRule datRule = DatReader.FindDatRule(datRootFullName);
tDat.MultiDatOverride = datRule.MultiDATDirOverride;
tDat.UseDescriptionAsDirName = datRule.UseDescriptionAsDirName;

tDir.DirDatAdd(tDat);
}
Expand All @@ -125,6 +126,7 @@ private static bool RecursiveDatTree(RvFile tDir, out int datCount)
string datRootFullName = tDat.GetData(RvDat.DatData.DatRootFullName);
DatRule datRule = DatReader.FindDatRule(datRootFullName);
tDat.MultiDatOverride = datRule.MultiDATDirOverride;
tDat.UseDescriptionAsDirName = datRule.UseDescriptionAsDirName;

tDir.DirDatAdd(tDat);
}
Expand Down Expand Up @@ -424,8 +426,14 @@ private static bool LoadNewDat(RvDat fileDat, RvFile thisDirectory)
)
{
// if we are auto adding extra directories then create a new directory.
newDatFile.Name = !string.IsNullOrEmpty(newDatFile.Dat.GetData(RvDat.DatData.RootDir)) ?
newDatFile.Dat.GetData(RvDat.DatData.RootDir) : newDatFile.Dat.GetData(RvDat.DatData.DatName);
string dirName = "";
if (string.IsNullOrEmpty(dirName) && fileDat.UseDescriptionAsDirName && !string.IsNullOrWhiteSpace(newDatFile.Dat.GetData(RvDat.DatData.Description)))
dirName = newDatFile.Dat.GetData(RvDat.DatData.Description);
if (string.IsNullOrEmpty(dirName) && !string.IsNullOrEmpty(newDatFile.Dat.GetData(RvDat.DatData.RootDir)))
dirName = newDatFile.Dat.GetData(RvDat.DatData.RootDir);
if (string.IsNullOrEmpty(dirName))
dirName= newDatFile.Dat.GetData(RvDat.DatData.DatName);
newDatFile.Name = dirName;

newDatFile.DatStatus = DatStatus.InDatCollect;
newDatFile.Tree = new RvTreeRow();
Expand Down
6 changes: 6 additions & 0 deletions RVCore/RvDB/DBHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,12 @@ public static int DatCompare(RvDat var1, RvDat var2)
return retv;
}

retv = Math.Sign(var1.UseDescriptionAsDirName.CompareTo(var2.UseDescriptionAsDirName));
if (retv != 0)
{
return retv;
}

return 0;
}

Expand Down
10 changes: 9 additions & 1 deletion RVCore/RvDB/RvDat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,18 @@ public enum DatData
public bool MultiDatOverride;
public bool MultiDatsInDirectory;
public bool AutoAddedDirectory;
public bool UseDescriptionAsDirName;

public void Write(BinaryWriter bw)
{
bw.Write(TimeStamp);
byte bools = (byte) ((AutoAddedDirectory ? 1 : 0) | (MultiDatOverride ? 2:0) | (MultiDatsInDirectory ? 4:0));
byte bools = (byte)
(
(AutoAddedDirectory ? 1 : 0) |
(MultiDatOverride ? 2 : 0) |
(MultiDatsInDirectory ? 4 : 0) |
(UseDescriptionAsDirName ? 8 : 0)
);
bw.Write(bools);

bw.Write((byte)_gameMetaData.Count);
Expand All @@ -67,6 +74,7 @@ public void Read(BinaryReader br)
AutoAddedDirectory = (bools & 1) == 1;
MultiDatOverride = (bools & 2) == 2;
MultiDatsInDirectory = (bools & 4) == 4;
UseDescriptionAsDirName = (bools & 8) == 8;

byte c = br.ReadByte();
_gameMetaData.Clear();
Expand Down
1 change: 1 addition & 0 deletions RVCore/Settings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,7 @@ public class DatRule : IComparable<DatRule>

public bool SingleArchive;
public bool MultiDATDirOverride;
public bool UseDescriptionAsDirName;

public int CompareTo(DatRule obj)
{
Expand Down

0 comments on commit 00aad48

Please sign in to comment.