use tag system for equipment

This commit is contained in:
tresabhi committed 2026-05-28 12:34:14 -05:00
1 parent 0cb4aadec3
commit f8a71feb46
2 files changed
+6 -43

No files matched your search

+2 -35
View File
@@ -130,43 +130,10 @@ public partial class GameInterface
return provider.Image(icon); return provider.Image(icon);
} }
private static readonly string equipmentPDAPrefix = public byte[] EquipmentIcon(string tag)
"Blitz/Content/TanksStuff/Equipment/PDA_Equipment";
private static readonly string equipmentPDASuffix = ".uasset";
public byte[] EquipmentIcon(string[] names)
{ {
List<string> candidates = []; var pda = provider.Discovered<UPrimaryDataAsset>(tag);
foreach (var name in names)
{
candidates.AddRange([
$"{equipmentPDAPrefix}{name}{equipmentPDASuffix}",
$"{equipmentPDAPrefix}_{name}{equipmentPDASuffix}",
]);
}
string? candidate = null;
foreach (var c in candidates)
{
if (!files.Contains(c))
{
continue;
}
candidate = c;
break;
}
if (candidate is null)
{
Console.WriteLine($"No equipment pda found for {string.Join(", ", names)}");
return [];
}
var pda = provider.PDA(candidate);
var icon = pda.Get<FSoftObjectPath>("Icon"); var icon = pda.Get<FSoftObjectPath>("Icon");
return provider.Image(icon); return provider.Image(icon);
} }
} }
@@ -4,7 +4,7 @@ import { notFoundResponse } from "../../../api/responses";
import { mixStaticPaths } from "../../../astro/mixStaticPaths"; import { mixStaticPaths } from "../../../astro/mixStaticPaths";
import { game } from "../../../game/game"; import { game } from "../../../game/game";
import { getStaticPaths as _getStaticPaths } from "../_index"; import { getStaticPaths as _getStaticPaths } from "../_index";
import { assetsDiscovery } from "../../../game/assetsDiscovery"; import { assertDiscoveryTag } from "../../../game/assertDiscoveryTag";
export const getStaticPaths = mixStaticPaths(_getStaticPaths, () => { export const getStaticPaths = mixStaticPaths(_getStaticPaths, () => {
return api.metadata return api.metadata
@@ -18,13 +18,9 @@ const HACK_nameMap: Record<string, string> = {
export function GET({ params }: APIContext<never, { id: string }>) { export function GET({ params }: APIContext<never, { id: string }>) {
const item = api.metadata.item(params.id); const item = api.metadata.item(params.id);
const names = assetsDiscovery(item, HACK_nameMap); const assetsDiscovery = item.BlitzStaticAssetsDiscovery();
const icon = game!.equipmentIcon(names); const tag = assertDiscoveryTag(assetsDiscovery);
const icon = game!.equipmentIcon(tag);
if (icon.length === 0) {
return notFoundResponse;
}
const array = new Uint8Array(icon); const array = new Uint8Array(icon);
return new Response(array); return new Response(array);