diff --git a/src/CLI/Functions/DLC.cs b/src/CLI/Functions/DLC.cs index 3a6b26656..e37cbab5f 100644 --- a/src/CLI/Functions/DLC.cs +++ b/src/CLI/Functions/DLC.cs @@ -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); - } } } } diff --git a/src/CLI/Models/Constants.cs b/src/CLI/Models/Constants.cs index 09200749c..b2f615ee2 100644 --- a/src/CLI/Models/Constants.cs +++ b/src/CLI/Models/Constants.cs @@ -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/"; } } diff --git a/src/CLI/Utils/BlitzVfs.cs b/src/CLI/Utils/BlitzVfs.cs new file mode 100644 index 000000000..2ebdac91f --- /dev/null +++ b/src/CLI/Utils/BlitzVfs.cs @@ -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 IndexContainers() + { + string[] directories = IndexDirectories(); + List 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 containers = IndexContainers(); + + foreach (string container in containers) + { + PakFileReader reader = new(container); + + reader.Mount(); + + foreach (var gameFile in reader.Files) + { + Console.WriteLine(gameFile.Value); + } + } + } + } +}