mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-22 03:07:04 +02:00
feat: more shit
This commit is contained in:
1 parent
920ef6e5c4
commit
8b0f95c53d
7 files changed
+129
-174
No files matched your search
@@ -15,7 +15,7 @@ namespace BlitzKit.CLI.Models
|
||||
private static readonly string LOCAL_MAPPINGS_PATH =
|
||||
"../../submodules/blitzkit-closed/blitz.usmap";
|
||||
|
||||
public readonly VfsDirectory RootDirectory = new();
|
||||
public readonly VfsDirectory RootDirectory;
|
||||
|
||||
public BlitzProvider()
|
||||
: base(
|
||||
@@ -25,6 +25,7 @@ namespace BlitzKit.CLI.Models
|
||||
versions: new(EGame.GAME_UE5_3)
|
||||
)
|
||||
{
|
||||
RootDirectory = new() { Name = "", provider = this };
|
||||
MappingsContainer = new FileUsmapTypeMappingsProvider(LOCAL_MAPPINGS_PATH);
|
||||
|
||||
Initialize();
|
||||
@@ -51,7 +52,7 @@ namespace BlitzKit.CLI.Models
|
||||
}
|
||||
else
|
||||
{
|
||||
VfsDirectory newDirectory = new();
|
||||
VfsDirectory newDirectory = new() { Name = segment, provider = this };
|
||||
directory.AddDirectory(segment, newDirectory);
|
||||
directory = newDirectory;
|
||||
}
|
||||
@@ -59,42 +60,4 @@ namespace BlitzKit.CLI.Models
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class VfsDirectory
|
||||
{
|
||||
public Dictionary<string, VfsDirectory> Directories = [];
|
||||
public Dictionary<string, GameFile> Files = [];
|
||||
|
||||
public void AddFile(string name, GameFile file) => Files.TryAdd(name, file);
|
||||
|
||||
public bool HasFile(string name) => Files.ContainsKey(name);
|
||||
|
||||
public GameFile GetFile(string name)
|
||||
{
|
||||
var directoryPath = Path.GetDirectoryName(name);
|
||||
var fileName = Path.GetFileName(name);
|
||||
var directory =
|
||||
directoryPath == null || directoryPath.Length == 0 ? this : GetDirectory(directoryPath);
|
||||
|
||||
return directory.Files[fileName];
|
||||
}
|
||||
|
||||
public bool HasDirectory(string name) => Directories.ContainsKey(name);
|
||||
|
||||
public VfsDirectory GetDirectory(string name)
|
||||
{
|
||||
var segments = name.Split('/');
|
||||
var directory = this;
|
||||
|
||||
foreach (var segment in segments)
|
||||
{
|
||||
directory = directory.Directories[segment];
|
||||
}
|
||||
|
||||
return directory;
|
||||
}
|
||||
|
||||
public void AddDirectory(string name, VfsDirectory directory) =>
|
||||
Directories.Add(name, directory);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
using CUE4Parse.FileProvider;
|
||||
using CUE4Parse.FileProvider.Objects;
|
||||
using CUE4Parse.UE4.Assets.Exports;
|
||||
|
||||
namespace BlitzKit.CLI.Models
|
||||
{
|
||||
public class Uasset
|
||||
{
|
||||
readonly GameFile file;
|
||||
readonly Dictionary<string, UObject> objects = [];
|
||||
|
||||
public Uasset(GameFile file, AbstractFileProvider provider)
|
||||
{
|
||||
this.file = file;
|
||||
var objects = provider.LoadAllObjects(file.Path);
|
||||
|
||||
foreach (var obj in objects)
|
||||
{
|
||||
this.objects.Add(obj.Name, obj);
|
||||
}
|
||||
}
|
||||
|
||||
public UObject Get(string name) => objects[name];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using CUE4Parse.FileProvider;
|
||||
using CUE4Parse.FileProvider.Objects;
|
||||
|
||||
namespace BlitzKit.CLI.Models
|
||||
{
|
||||
public class VfsDirectory
|
||||
{
|
||||
public Dictionary<string, VfsDirectory> Directories = [];
|
||||
public Dictionary<string, GameFile> Files = [];
|
||||
public required string Name;
|
||||
public required AbstractFileProvider provider;
|
||||
|
||||
public void AddFile(string name, GameFile file) => Files.TryAdd(name, file);
|
||||
|
||||
public bool HasFile(string name) => Files.ContainsKey(name);
|
||||
|
||||
public Uasset GetUasset(string name) => new(GetFile(name), provider);
|
||||
|
||||
public GameFile GetFile(string name)
|
||||
{
|
||||
var directoryPath = Path.GetDirectoryName(name);
|
||||
var fileName = Path.GetFileName(name);
|
||||
var directory =
|
||||
directoryPath == null || directoryPath.Length == 0 ? this : GetDirectory(directoryPath);
|
||||
|
||||
return directory.Files[fileName];
|
||||
}
|
||||
|
||||
public bool HasDirectory(string name) => Directories.ContainsKey(name);
|
||||
|
||||
public VfsDirectory GetDirectory(string name)
|
||||
{
|
||||
var segments = name.Split('/');
|
||||
var directory = this;
|
||||
|
||||
foreach (var segment in segments)
|
||||
{
|
||||
directory = directory.Directories[segment];
|
||||
}
|
||||
|
||||
return directory;
|
||||
}
|
||||
|
||||
public void AddDirectory(string name, VfsDirectory directory) =>
|
||||
Directories.Add(name, directory);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user