From 1d28768bb70e3212c3d3dea0f619d8faa3435c48 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Tue, 25 Feb 2025 18:28:08 -0600 Subject: [PATCH] feat: ini --- src/BlitzKit.CLI/Functions/Mangler.cs | 3 +++ src/BlitzKit.CLI/Functions/Unpacker.cs | 27 +++++++++++++++++++------- src/BlitzKit.CLI/Utils/IniParser.cs | 4 +--- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/BlitzKit.CLI/Functions/Mangler.cs b/src/BlitzKit.CLI/Functions/Mangler.cs index 888990f89..e3a91f468 100644 --- a/src/BlitzKit.CLI/Functions/Mangler.cs +++ b/src/BlitzKit.CLI/Functions/Mangler.cs @@ -1,4 +1,6 @@ using System.Data; +using System.Text; +using System.Text.Unicode; using Blitzkit; using BlitzKit.CLI.Models; using CUE4Parse.UE4.Assets.Exports; @@ -6,6 +8,7 @@ using CUE4Parse.UE4.Assets.Exports.Engine; using CUE4Parse.UE4.Assets.Exports.StaticMesh; using CUE4Parse.UE4.Assets.Objects; using CUE4Parse.UE4.Objects.UObject; +using CUE4Parse.UE4.Pak.Objects; using Google.Protobuf.Collections; using Newtonsoft.Json.Linq; diff --git a/src/BlitzKit.CLI/Functions/Unpacker.cs b/src/BlitzKit.CLI/Functions/Unpacker.cs index da7169958..e41b4f00f 100644 --- a/src/BlitzKit.CLI/Functions/Unpacker.cs +++ b/src/BlitzKit.CLI/Functions/Unpacker.cs @@ -1,10 +1,14 @@ +using System.Text; using System.Text.Json; using BlitzKit.CLI.Models; using BlitzKit.CLI.Quicktype; using BlitzKit.CLI.Utils; +using CUE4Parse.FileProvider; using CUE4Parse.FileProvider.Objects; using CUE4Parse.UE4.Pak; +using CUE4Parse.UE4.Pak.Objects; using CUE4Parse.UE4.Readers; +using CUE4Parse.UE4.Versions; using DotNet.Globbing; namespace BlitzKit.CLI.Functions @@ -27,22 +31,31 @@ namespace BlitzKit.CLI.Functions throw new ArgumentException("Missing required initial paks directory"); } + var pak0Path = Path.Combine(TEMP_DEPOT_DIR, "Blitz/Content/Paks/pakchunk0-Windows.pak"); + DefaultFileProvider provider0 = new( + directory: new DirectoryInfo(pak0Path), + searchOption: SearchOption.TopDirectoryOnly, + versions: new(EGame.GAME_UE5_3) + ); + provider0.Initialize(); + provider0.Mount(); + provider0.TryFindGameFile("Blitz/Config/DefaultDlc.ini", out var defaultDlcGameFile); + + if (defaultDlcGameFile is not FPakEntry) + throw new Exception("Failed to find DefaultDlc.ini"); + + IniParser defaultDlc = new(Encoding.UTF8.GetString(defaultDlcGameFile.Read())); + using HttpClient client = new(); - string defaultDlcPath = Path.Combine(VFS_PATH, "Blitz/Config/DefaultDlc.ini"); - IniParser iniParser = new(defaultDlcPath); - string? contentBuildId = iniParser.GetString("DefaultContentBuildId"); + string? contentBuildId = defaultDlc.GetString("DefaultContentBuildId"); if (string.IsNullOrEmpty(contentBuildId)) { throw new Exception("Failed to read content build id from DefaultDlc.ini"); } - Console.WriteLine($"Exploring DLC \"{contentBuildId}\" within group \"{CONTENT_GROUP}\""); - DlcManifest manifest = await FetchManifest(CONTENT_GROUP, contentBuildId); - Console.WriteLine("Filtering HD and non-HD containers"); - foreach (var pakFile in manifest.PakFiles) { var localContainerPath = Path.Combine(VFS_PATH, pakFile.FileName); diff --git a/src/BlitzKit.CLI/Utils/IniParser.cs b/src/BlitzKit.CLI/Utils/IniParser.cs index 92fc42e69..d763b0088 100644 --- a/src/BlitzKit.CLI/Utils/IniParser.cs +++ b/src/BlitzKit.CLI/Utils/IniParser.cs @@ -5,10 +5,8 @@ namespace BlitzKit.CLI.Utils private readonly Dictionary strings = []; private readonly Dictionary> arrays = []; - public IniParser(string file) + public IniParser(string content) { - string content = File.ReadAllText(file); - foreach (string line in content.Split('\n')) { if (string.IsNullOrWhiteSpace(line))