From 6ada813dd53da8a79deb0ee4881e5bad744781b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Wed, 14 Aug 2024 20:46:55 -0500 Subject: [PATCH] feat: gamemode defs --- .vscode/settings.json | 1 - scripts/buildAssets/definitions.ts | 31 ++++++++++++++++++++++++++++ src/core/blitzkit/gameDefinitions.ts | 6 ++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ad9ea3b0b..1ee34dfd5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -68,7 +68,6 @@ "Fullscreen", "fullstats", "fuzzysort", - "gamemode", "gameplay", "glsl", "GLTF", diff --git a/scripts/buildAssets/definitions.ts b/scripts/buildAssets/definitions.ts index 2c04b47dc..4971cada2 100644 --- a/scripts/buildAssets/definitions.ts +++ b/scripts/buildAssets/definitions.ts @@ -419,6 +419,7 @@ export async function definitions(production: boolean) { ).then((response) => response.json())) as { data: { [key: number]: { description: null | string } }; }; + const gameDefinitions: GameDefinitions = { version: (await readStringDVPL(`${DATA}/version.txt.dvpl`)) .split(' ')[0] @@ -430,6 +431,7 @@ export async function definitions(production: boolean) { `${DATA}/available_nations.yaml.dvpl`, ) ).available_nations, + gameModes: {}, }; const tankDefinitions: TankDefinitions = {}; const camouflageDefinitions: CamouflageDefinitions = {}; @@ -485,6 +487,35 @@ export async function definitions(production: boolean) { ); const camouflagesXmlEntries = Object.entries(camouflagesXml.root.camouflages); + for (const match of ( + await readYAMLDVPL<{ + Prototypes: { + components: { + UIDataLocalBindingsComponent: { + data: string[][]; + }; + }; + }[]; + }>(`${DATA}/UI/Screens3/Lobby/Hangar/Squad/SquadBattleType.yaml.dvpl`) + ).Prototypes[0].components.UIDataLocalBindingsComponent.data[1][2].matchAll( + /battleType\/([a-zA-Z]+)/g, + )) { + const id = match[1]; + const name = strings[`battleType/${id}`]; + const description = ( + strings[`hangar/battleType/${id}ShortDescription`] ?? + strings[ + `hangar/battleType/${id.slice(0, 1).toUpperCase() + id.slice(1)}ShortDescription` + ] ?? + strings[`hangar/battleType/${id}Description`] + ).split('\n')[0]; + + gameDefinitions.gameModes[id] = { + name, + description, + }; + } + camouflagesXmlEntries.forEach(([camoKey, camo]) => { const yamlEntry = camouflagesYaml[camoKey]; const fullName = yamlEntry.userString diff --git a/src/core/blitzkit/gameDefinitions.ts b/src/core/blitzkit/gameDefinitions.ts index dab1576fe..7697ff3cc 100644 --- a/src/core/blitzkit/gameDefinitions.ts +++ b/src/core/blitzkit/gameDefinitions.ts @@ -1,9 +1,15 @@ import { asset } from './asset'; import { fetchCdonLz4 } from './fetchCdonLz4'; +interface GameMode { + name: string; + description: string; +} + export interface GameDefinitions { version: string; nations: string[]; + gameModes: Record; } export const gameDefinitions = fetchCdonLz4(