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 CUE4Parse.FileProvider.Objects;
using CUE4Parse.UE4.Pak;
using CLI.Utils;
namespace CLI.Functions
{
@@ -8,34 +7,21 @@ namespace CLI.Functions
{
public static void Run(Arguments args)
{
// DefaultFileProvider provider = new(
// directory: new(BlitzConstants.AppDataDirectory),
// searchOption: SearchOption.AllDirectories,
// isCaseInsensitive: false,
// extraDirectories: [new(BlitzConstants.InstallationDirectory)]
BlitzVfs vfs = new();
vfs.Initialize();
// 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 provider.Files)
// foreach (var file in reader.Files)
// {
// 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 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);
}
}
}
}
}