use VFS class.

This commit is contained in:
morkt
2018-10-01 17:51:22 +04:00
parent ee8255e8a6
commit d21294f945

View File

@@ -17,6 +17,8 @@ namespace GARbro
class ConsoleBrowser class ConsoleBrowser
{ {
private string m_arc_name; private string m_arc_name;
private ImageFormat m_image_format;
private bool m_extract_all;
void ListFormats () void ListFormats ()
{ {
@@ -53,6 +55,7 @@ namespace GARbro
Console.WriteLine ("Extracting {0} ...", entry.Name); Console.WriteLine ("Extracting {0} ...", entry.Name);
arc.Extract (entry); arc.Extract (entry);
} }
void TestArc (string[] args) void TestArc (string[] args)
{ {
/* /*
@@ -63,46 +66,78 @@ namespace GARbro
} }
*/ */
} }
void Run (string[] args) void Run (string[] args)
{ {
int argn = 0; int argn = 0;
while (argn < args.Length)
{
if (args[argn].Equals ("-l")) if (args[argn].Equals ("-l"))
{ {
ListFormats(); ListFormats();
return; return;
} }
if (args[argn].Equals ("-t")) else if (args[argn].Equals ("-t"))
{ {
TestArc (args); TestArc (args);
return; return;
} }
if (args[argn].Equals ("-x")) else if (args[argn].Equals ("-c"))
{ {
if (argn+1 >= args.Length)
{
Usage();
return;
}
var tag = args[argn+1];
m_image_format = FindFormat (tag);
if (null == m_image_format)
{
Console.Error.WriteLine ("{0}: unknown format specified", tag);
return;
}
argn += 2;
}
else if (args[argn].Equals ("-x"))
{
m_extract_all = true;
++argn; ++argn;
if (args.Length < 2) if (args.Length <= argn)
{ {
Usage(); Usage();
return; return;
} }
} }
else
{
break;
}
}
if (argn >= args.Length)
{
Usage();
return;
}
DeserializeGameData(); DeserializeGameData();
foreach (var file in VFS.GetFiles (args[argn])) foreach (var file in VFS.GetFiles (args[argn]))
{ {
m_arc_name = file.Name; m_arc_name = file.Name;
var arc = ArcFile.TryOpen (file); try
if (null == arc) {
VFS.ChDir (m_arc_name);
}
catch (Exception X)
{ {
Console.Error.WriteLine ("{0}: unknown format", m_arc_name); Console.Error.WriteLine ("{0}: unknown format", m_arc_name);
continue; continue;
} }
using (arc) var arc = (ArchiveFileSystem)VFS.Top;
{
if (args.Length > argn+1) if (args.Length > argn+1)
{ {
for (int i = argn+1; i < args.Length; ++i) for (int i = argn+1; i < args.Length; ++i)
ExtractFile (arc, args[i]); ExtractFile (arc, args[i]);
} }
else if (args[0].Equals ("-x")) else if (m_extract_all)
{ {
ExtractAll (arc); ExtractAll (arc);
} }
@@ -115,7 +150,6 @@ namespace GARbro
} }
} }
} }
}
void DeserializeGameData () void DeserializeGameData ()
{ {