diff --git a/.gitmodules b/.gitmodules index fce342994..481aa1bbc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "submodules/blitzkit-closed"] path = submodules/blitzkit-closed url = https://github.com/tresabhi/blitzkit-closed +[submodule "submodules/CUE4Parse"] + path = submodules/CUE4Parse + url = https://github.com/FabianFG/CUE4Parse diff --git a/.vscode/settings.json b/.vscode/settings.json index c436f3bc2..23aed0af2 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -183,6 +183,7 @@ "tresabhi", "tungstentip", "TYPELESS", + "uasset", "ubjson", "Unicum", "UNLOCALIZED", diff --git a/src/CLI/CLI.csproj b/src/CLI/CLI.csproj index 767d236a6..56a41df47 100644 --- a/src/CLI/CLI.csproj +++ b/src/CLI/CLI.csproj @@ -1,5 +1,4 @@  - Exe net9.0 @@ -8,7 +7,6 @@ - + - diff --git a/src/CLI/Functions/DLC.cs b/src/CLI/Functions/DLC.cs index 273a3489e..1c5389bf1 100644 --- a/src/CLI/Functions/DLC.cs +++ b/src/CLI/Functions/DLC.cs @@ -1,4 +1,11 @@ +using CLI.Constants; using CLI.Models; +using CUE4Parse.FileProvider; +using CUE4Parse.UE4.Pak; +using CUE4Parse.UE4.Readers; +using CUE4Parse.UE4.Versions; +using CUE4Parse.UE4.VirtualFileSystem; +using UE4Config.Parsing; namespace CLI.Functions { @@ -6,22 +13,25 @@ namespace CLI.Functions { public static void Run(Arguments args) { - if (args.raw.Length < 2) - { - throw new ArgumentException("No directory provided"); - } + // string[] bundledContainers = Directory.GetFiles(Containers.BundledContainersDirectory); - string dlcPaksDirectory = args.raw[1]; + // foreach (string bundledContainer in bundledContainers) + // { + // string fileName = Path.GetFileName(bundledContainer); - if (args.sanitize && Directory.Exists(dlcPaksDirectory)) - { - Directory.Delete(dlcPaksDirectory, true); - } + // Console.WriteLine($"Parsing bundled container \"{fileName}\"..."); - Directory.CreateDirectory(dlcPaksDirectory); + // } - string testFilePath = Path.Combine(dlcPaksDirectory, "test.txt"); - File.WriteAllText(testFilePath, "test"); + + DefaultFileProvider provider = new( + directory: ContainerConstants.DLCContainersDirectory, + searchOption: SearchOption.TopDirectoryOnly, + isCaseInsensitive: false, + versions: new VersionContainer(BlitzConstants.EngineVersion) + ); + + provider.Initialize(); } } } diff --git a/src/CLI/Models/Constants.cs b/src/CLI/Models/Constants.cs new file mode 100644 index 000000000..64c30573f --- /dev/null +++ b/src/CLI/Models/Constants.cs @@ -0,0 +1,22 @@ +using CUE4Parse.UE4.Versions; + +namespace CLI.Constants +{ + public static class ContainerConstants + { + public const string ContentGroup = "p14y73c7_p5e_b10gg3RS_big_play"; + + // public const string BundledPaksDirectory = "./temp/blitz/Blitz/Content/Paks"; + public const string BundledContainersDirectory = + "C:/Program Files (x86)/Steam/steamapps/common/World of Tanks Blitz Playtest/Blitz/Content/Paks"; + + // public const string DLCContainersDirectory = "./temp/unpacked"; + public const string DLCContainersDirectory = + "C:/Users/coola/AppData/Local/Blitz/Saved/PersistentDownloadDir/Dlc/PakCache"; + } + + public static class BlitzConstants + { + public const EGame EngineVersion = EGame.GAME_UE5_3; + } +} diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse new file mode 160000 index 000000000..c8e362516 --- /dev/null +++ b/submodules/CUE4Parse @@ -0,0 +1 @@ +Subproject commit c8e362516a67505977dc4a4562b63e697d6e6dd0