From cc6c4faa2d824655b8c9720d9df78a09f97d1bf4 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sun, 6 Apr 2025 22:57:35 -0500 Subject: [PATCH] feat: migration --- .gitmodules | 3 ++ packages/scripts/src/buildAssets/index.ts | 2 + packages/scripts/src/buildAssets/migration.ts | 38 +++++++++++++++++++ submodules/CUE4Parse | 1 + 4 files changed, 44 insertions(+) create mode 100644 packages/scripts/src/buildAssets/migration.ts create mode 160000 submodules/CUE4Parse diff --git a/.gitmodules b/.gitmodules index fce342994..481aa1bbc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "submodules/blitzkit-closed"] path = submodules/blitzkit-closed url = https://github.com/tresabhi/blitzkit-closed +[submodule "submodules/CUE4Parse"] + path = submodules/CUE4Parse + url = https://github.com/FabianFG/CUE4Parse diff --git a/packages/scripts/src/buildAssets/index.ts b/packages/scripts/src/buildAssets/index.ts index 127afae18..1c9c76a97 100644 --- a/packages/scripts/src/buildAssets/index.ts +++ b/packages/scripts/src/buildAssets/index.ts @@ -18,6 +18,7 @@ import { definitions } from './definitions'; import { equipmentIcons } from './equipmentIcons'; import { flags } from './flags'; import { gameModeBanners } from './gameModeBanners'; +import { migration } from './migration'; import { moduleIcons } from './moduleIcons'; import { shellIcons } from './shellIcons'; import { skillIcons } from './skillIcons'; @@ -28,6 +29,7 @@ import { tankModels } from './tankModels'; if (!targets && !allTargets) throw new Error('No target(s) specified'); const methods = [ + migration, definitions, tankModels, tankArmors, diff --git a/packages/scripts/src/buildAssets/migration.ts b/packages/scripts/src/buildAssets/migration.ts new file mode 100644 index 000000000..fd74496bf --- /dev/null +++ b/packages/scripts/src/buildAssets/migration.ts @@ -0,0 +1,38 @@ +import { toUniqueId } from '@blitzkit/core'; +import { readdir } from 'fs/promises'; +import { readXMLDVPL } from '../core/blitz/readXMLDVPL'; +import { commitAssets } from '../core/github/commitAssets'; +import { DATA } from './constants'; +import { VehicleDefinitionList } from './definitions'; + +export async function migration() { + console.log('Building migration map...'); + + const map: Record = {}; + const nations = await readdir(`${DATA}/XML/item_defs/vehicles`).then( + (nations) => nations.filter((nation) => nation !== 'common'), + ); + + await Promise.all( + nations.map(async (nation) => { + const tankList = await readXMLDVPL<{ root: VehicleDefinitionList }>( + `${DATA}/XML/item_defs/vehicles/${nation}/list.xml`, + ); + + for (const tankKey in tankList.root) { + const tank = tankList.root[tankKey]; + const tankId = toUniqueId(nation, tank.id); + const davaKey = `${nation}:${tankKey}`; + + map[davaKey] = tankId; + } + }), + ); + + await commitAssets('migration', [ + { + path: 'definitions/migration.json', + content: Buffer.from(JSON.stringify(map)), + }, + ]); +} diff --git a/submodules/CUE4Parse b/submodules/CUE4Parse new file mode 160000 index 000000000..624e07c8c --- /dev/null +++ b/submodules/CUE4Parse @@ -0,0 +1 @@ +Subproject commit 624e07c8c396724b3ae72d4e1e2854fdc5269e24