mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 10:47:04 +02:00
scripts api
This commit is contained in:
1 parent
402b6d5113
commit
6c9ce58af5
9 files changed
+73
-56
No files matched your search
@@ -12,6 +12,7 @@ import {
|
||||
TankDefinitions,
|
||||
} from "@blitzkit/protos";
|
||||
import { fetchPB } from "../../protobuf";
|
||||
import { BlitzScripts } from "../../types/blitzScripts";
|
||||
import { BlitzKitAPI } from "./base";
|
||||
|
||||
export class ClientBlitzKitAPI extends BlitzKitAPI {
|
||||
@@ -66,4 +67,10 @@ export class ClientBlitzKitAPI extends BlitzKitAPI {
|
||||
maps() {
|
||||
return fetchPB(alias("api", "/definitions/maps.pb"), MapDefinitions);
|
||||
}
|
||||
|
||||
async scripts() {
|
||||
const response = await fetch(alias("api", "/definitions/scripts.json"));
|
||||
const json = await response.json();
|
||||
return json as BlitzScripts;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
import { ConsumablesCommon, OptionalDevices } from "../../../types";
|
||||
import { BlitzScripts } from "../../../types/blitzScripts";
|
||||
import { AbstractVFS } from "../../vfs";
|
||||
import { ServerBlitzKitAPI10 } from "./10_avatars";
|
||||
|
||||
export abstract class ServerBlitzKitAPI11 extends ServerBlitzKitAPI10 {
|
||||
async scripts() {
|
||||
const scripts: BlitzScripts = {
|
||||
consumables: {},
|
||||
equipment: {},
|
||||
provisions: {},
|
||||
};
|
||||
|
||||
const optionalDevices = await this.vfs.xml<{
|
||||
root: OptionalDevices;
|
||||
}>("Data/XML/item_defs/vehicles/common/optional_devices.xml");
|
||||
|
||||
for (const key in optionalDevices.root) {
|
||||
const equipment = optionalDevices.root[key];
|
||||
scripts.equipment[equipment.id] = equipment.script;
|
||||
}
|
||||
|
||||
async function assign(
|
||||
vfs: AbstractVFS,
|
||||
dir: string,
|
||||
target: keyof BlitzScripts,
|
||||
) {
|
||||
const root = `Data/XML/item_defs/vehicles/common/${dir}`;
|
||||
const list = await vfs.text(`${root}/list.xml`);
|
||||
const pattern = /<items path="(\w+)\.xml"\/>/gm;
|
||||
|
||||
for (const match of list.matchAll(pattern)) {
|
||||
const group = match[1];
|
||||
const path = `${root}/${group}.xml`;
|
||||
const things = await vfs.xml<{ root: ConsumablesCommon }>(path);
|
||||
|
||||
for (const key in things.root) {
|
||||
const thing = things.root[key];
|
||||
scripts[target][thing.id] = things.root[key].script;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await assign(this.vfs, "consumables", "consumables");
|
||||
await assign(this.vfs, "provisions", "provisions");
|
||||
|
||||
return scripts;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
import { ServerBlitzKitAPI10 } from "./10_avatars";
|
||||
import { ServerBlitzKitAPI11 } from "./11_scripts";
|
||||
|
||||
export class ServerBlitzKitAPI extends ServerBlitzKitAPI10 {}
|
||||
export class ServerBlitzKitAPI extends ServerBlitzKitAPI11 {}
|
||||
@@ -1,4 +1,4 @@
|
||||
type BlitzEffectScript = RSN & {
|
||||
export type BlitzEffectScript = RSN & {
|
||||
"#text": string;
|
||||
attribute?: string;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ProvisionConsumableScript } from "@blitzkit/core/src/types/provisionConsumableScript";
|
||||
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
|
||||
|
||||
export interface ConsumablesCommon {
|
||||
@@ -13,6 +13,6 @@ export interface ConsumablesCommon {
|
||||
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||
};
|
||||
script: ProvisionConsumableScript;
|
||||
script: BlitzEffectScript;
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,12 @@
|
||||
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||
|
||||
export interface OptionalDevices {
|
||||
[key: string]: {
|
||||
id: number;
|
||||
userString: string;
|
||||
description: string;
|
||||
icon: string;
|
||||
script: unknown;
|
||||
script: BlitzEffectScript;
|
||||
display_params: unknown;
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user