diff --git a/scripts/buildAssets/definitions.ts b/scripts/buildAssets/definitions.ts index 37a4685e0..42e1915e2 100644 --- a/scripts/buildAssets/definitions.ts +++ b/scripts/buildAssets/definitions.ts @@ -18,6 +18,7 @@ import { EquipmentRow, } from '../../src/core/blitzkit/equipmentDefinitions'; import { GameDefinitions } from '../../src/core/blitzkit/gameDefinitions'; +import { MapDefinitions } from '../../src/core/blitzkit/mapDefinitions'; import { ModelArmor, ModelDefinitions, @@ -325,6 +326,31 @@ type ConsumablesVehicleFilter = | { name: string } | { extendedTags: string }; +export interface Maps { + maps: { + [key: string]: { + id: number; + tags?: string; + localName: string; + avaliableInTrainingRoom: boolean; // lol wg typo + spriteFrame: number; + supremacyPointsThreshold?: number; + availableModes: number[]; + shadowMapsAvailable?: boolean; + assaultRespawnPoints: { + allies: MapAlly[]; + enemies: MapAlly[]; + }; + levels?: number[]; + }; + }; +} + +export interface MapAlly { + respawnNumber: number; + points: Array; +} + const blitzShellKindToBlitzkit: Record = { ARMOR_PIERCING: 'ap', ARMOR_PIERCING_CR: 'ap_cr', @@ -348,6 +374,7 @@ export async function definitions(production: boolean) { }; const tankDefinitions: TankDefinitions = {}; const modelDefinitions: ModelDefinitions = {}; + const mapDefinitions: MapDefinitions = {}; const equipmentDefinitions: EquipmentDefinitions = { presets: {}, equipments: {}, @@ -386,7 +413,7 @@ export async function definitions(production: boolean) { const avatar = await readXMLDVPL<{ root: Avatar }>( `${DATA}/XML/item_defs/tankmen/avatar.xml.dvpl`, ); - + const maps = await readYAMLDVPL(`${DATA}/maps.yaml.dvpl`); const tankXps = new Map(); await Promise.all( @@ -1122,6 +1149,13 @@ export async function definitions(production: boolean) { skillDefinitions.classes[tankClass as TankClass] = skills.split(' '); }); + Object.entries(maps.maps).forEach(([key, map]) => { + mapDefinitions[map.id] = { + id: map.id, + name: strings[`#maps:${key}:${map.localName}`], + }; + }); + await commitAssets( 'definitions', [ @@ -1160,6 +1194,11 @@ export async function definitions(production: boolean) { encoding: 'base64', path: 'definitions/skills.cdon.lz4', }, + { + content: superCompress(mapDefinitions), + encoding: 'base64', + path: 'definitions/maps.cdon.lz4', + }, ], production, ); diff --git a/src/core/blitzkit/mapDefinitions.ts b/src/core/blitzkit/mapDefinitions.ts new file mode 100644 index 000000000..fb47c7007 --- /dev/null +++ b/src/core/blitzkit/mapDefinitions.ts @@ -0,0 +1,13 @@ +import { asset } from './asset'; +import { fetchCdonLz4 } from './fetchCdonLz4'; + +export interface MapDefinitions { + [id: number]: { + id: number; + name: string; + }; +} + +export const mapDefinitions = fetchCdonLz4( + asset('definitions/maps.cdon.lz4'), +);