feat: mirrors

This commit is contained in:
tresabhi committed 2025-04-01 21:03:39 -05:00
1 parent 8087752172
commit a8dc3313cf
16 files changed
+268 -148

No files matched your search

+19 -10
View File
@@ -1,5 +1,9 @@
using System.Threading.Tasks;
using AssetRipper.TextureDecoder.Rgb.Channels;
using Blitzkit;
using Google.Protobuf;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
namespace BlitzKit.CLI.Functions
{
@@ -9,19 +13,19 @@ namespace BlitzKit.CLI.Functions
readonly Mangler mangler = new(args);
void Map<T>(string path, Func<Task<T>> func)
where T : IMessage<T> =>
app.MapGet(path, async context => await Octet(context, await func()));
void Map<T>(string path, Func<T> func)
where T : IMessage<T> => Map(path, () => Task.FromResult(func()));
static async Task Octet<T>(HttpContext context, T message)
where T : IMessage<T>
{
app.MapGet(
path,
async (context) =>
{
var message = await func();
var bytes = message.ToByteArray();
var bytes = message.ToByteArray();
context.Response.ContentType = "application/octet-stream";
await context.Response.Body.WriteAsync(bytes);
}
);
context.Response.ContentType = "application/octet-stream";
await context.Response.Body.WriteAsync(bytes);
}
public async Task Run()
@@ -31,6 +35,11 @@ namespace BlitzKit.CLI.Functions
Map("/tanks/full.pb", mangler.TanksFull);
Map("/tanks/list.pb", mangler.Tanks);
app.MapGet(
"/tanks/{id}.pb",
(HttpContext context, string id) => Octet(context, mangler.Tank(id))
);
app.Run();
}
}
+32 -22
View File
@@ -49,11 +49,21 @@ namespace BlitzKit.CLI.Functions
readonly BlitzProvider provider = new(args.Contains("--depot"));
Locales? locales;
readonly Dictionary<string, Dictionary<string, string>> strings = [];
TanksFull tanksFull = null!;
public async Task<TanksFull> TanksFull()
public async Task Initialize()
{
await FetchStrings();
tanksFull = TanksFull();
}
public TanksFull TanksFull()
{
if (tanksFull != null)
return tanksFull;
var dirs = provider.RootDirectory.GetDirectory("Blitz/Content/Tanks").Directories;
TanksFull tanksFull = new();
tanksFull = new();
foreach (var dir in dirs)
{
@@ -62,7 +72,7 @@ namespace BlitzKit.CLI.Functions
foreach (var tankDir in dir.Value.Directories)
{
var tank = MangleTank(tankDir.Value);
var tank = Tank(tankDir.Value);
tanksFull.Tanks.Add(tank);
}
}
@@ -72,7 +82,25 @@ namespace BlitzKit.CLI.Functions
return tanksFull;
}
Tank MangleTank(VFS tankDir)
public Tanks Tanks()
{
var tanksFull = TanksFull();
Tanks tanks = new();
foreach (var tank in tanksFull.Tanks)
{
tanks.Tanks_.Add(tank.Id);
}
return tanks;
}
public Tank Tank(string id)
{
return tanksFull.Tanks.First(tank => tank.Id == id);
}
Tank Tank(VFS tankDir)
{
var pdaName = $"PDA_{tankDir.Name}";
var pda = provider.LoadObject($"{tankDir.Path}/{pdaName}.{pdaName}");
@@ -94,24 +122,6 @@ namespace BlitzKit.CLI.Functions
return tank;
}
public async Task<Tanks> Tanks()
{
var tanksFull = await TanksFull();
Tanks tanks = new();
foreach (var tank in tanksFull.Tanks)
{
tanks.Tanks_.Add(tank.Id);
}
return tanks;
}
public async Task Initialize()
{
await FetchStrings();
}
///////////////////////////////////////////////////////////////////////////
I18n GetString(string name)