feat: vfs

This commit is contained in:
tresabhi committed 2025-01-25 13:49:28 -06:00
1 parent df93c986f9
commit 4afc413d8b
3 files changed
+69 -28

No files matched your search

+10 -24
View File
@@ -1,6 +1,5 @@
using CLI.Models; using CLI.Models;
using CUE4Parse.FileProvider.Objects; using CLI.Utils;
using CUE4Parse.UE4.Pak;
namespace CLI.Functions namespace CLI.Functions
{ {
@@ -8,34 +7,21 @@ namespace CLI.Functions
{ {
public static void Run(Arguments args) public static void Run(Arguments args)
{ {
// DefaultFileProvider provider = new( BlitzVfs vfs = new();
// directory: new(BlitzConstants.AppDataDirectory),
// searchOption: SearchOption.AllDirectories, vfs.Initialize();
// isCaseInsensitive: false,
// extraDirectories: [new(BlitzConstants.InstallationDirectory)] // PakFileReader reader = new(
// "C:/Program Files (x86)/Steam/steamapps/common/World of Tanks Blitz Playtest/Blitz/Content/Paks/pakchunk0-Windows.pak"
// ); // );
// provider.Initialize(); // reader.Mount();
// Console.WriteLine("Mounted containers: " + provider.MountedVfs.Count); // foreach (var file in reader.Files)
// foreach (var file in provider.Files)
// { // {
// GameFile gameFile = file.Value; // GameFile gameFile = file.Value;
// Console.WriteLine(gameFile.Name); // Console.WriteLine(gameFile);
// } // }
PakFileReader reader = new(
"C:/Program Files (x86)/Steam/steamapps/common/World of Tanks Blitz Playtest/Blitz/Content/Paks/pakchunk0-Windows.pak"
);
reader.Mount();
foreach (var file in reader.Files)
{
GameFile gameFile = file.Value;
// Console.WriteLine(gameFile);
}
} }
} }
} }
-4
View File
@@ -9,9 +9,5 @@ namespace CLI.Constants
public static class BlitzConstants public static class BlitzConstants
{ {
public const EGame EngineVersion = EGame.GAME_UE5_3;
public const string InstallationDirectory =
"C:/Program Files (x86)/Steam/steamapps/common/World of Tanks Blitz Playtest";
public const string AppDataDirectory = "C:/Users/coola/AppData/Local/Blitz/";
} }
} }
+59
View File
@@ -0,0 +1,59 @@
using CUE4Parse.FileProvider.Vfs;
using CUE4Parse.UE4.Pak;
using CUE4Parse.UE4.Versions;
namespace CLI.Utils
{
public class BlitzVfs : AbstractVfsFileProvider
{
public const EGame EngineVersion = EGame.GAME_UE5_3;
public const string InstallationDirectory =
"C:/Program Files (x86)/Steam/steamapps/common/World of Tanks Blitz Playtest";
public const string AppDataDirectory = "C:/Users/coola/AppData/Local/Blitz";
private static string[] IndexDirectories()
{
return
[
Path.Combine(InstallationDirectory, "Blitz/Content/Paks"),
Path.Combine(AppDataDirectory, "Saved/PersistentDownloadDir/Dlc/PakCache"),
];
}
private static List<string> IndexContainers()
{
string[] directories = IndexDirectories();
List<string> files = [];
foreach (string directory in directories)
{
if (!Directory.Exists(directory))
{
throw new Exception($"Directory \"{directory}\" does not exist");
}
string[] directoryFiles = Directory.GetFiles(directory, "*.pak");
files.AddRange(directoryFiles);
}
return files;
}
public override void Initialize()
{
List<string> containers = IndexContainers();
foreach (string container in containers)
{
PakFileReader reader = new(container);
reader.Mount();
foreach (var gameFile in reader.Files)
{
Console.WriteLine(gameFile.Value);
}
}
}
}
}