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;
|
||||
};
|
||||
}
|
||||
@@ -1,54 +1,9 @@
|
||||
import {
|
||||
ConsumableDefinitions,
|
||||
type ConsumablesCommon,
|
||||
type OptionalDevices,
|
||||
} from "@blitzkit/core";
|
||||
import { ConsumableDefinitions } from "@blitzkit/core";
|
||||
import { api } from "../../../blitzkit/api";
|
||||
import { vfs } from "../../../core/blitzkit/vfs";
|
||||
|
||||
export { getStaticPaths } from "../_index";
|
||||
|
||||
export async function GET() {
|
||||
const samples: Record<string, any> = {};
|
||||
|
||||
const optionalDevices = await vfs.xml<{
|
||||
root: OptionalDevices;
|
||||
}>("Data/XML/item_defs/vehicles/common/optional_devices.xml");
|
||||
|
||||
for (const key in optionalDevices.root) {
|
||||
samples[key] = optionalDevices.root[key].script;
|
||||
}
|
||||
|
||||
const consumablesRoot = "Data/XML/item_defs/vehicles/common/consumables";
|
||||
const consumablesList = await vfs.text(`${consumablesRoot}/list.xml`);
|
||||
const consumablesListEntryPattern = /<items path="(\w+)\.xml"\/>/gm;
|
||||
|
||||
for (const match of consumablesList.matchAll(consumablesListEntryPattern)) {
|
||||
const group = match[1];
|
||||
const path = `${consumablesRoot}/${group}.xml`;
|
||||
const consumables = await vfs.xml<{ root: ConsumablesCommon }>(path);
|
||||
|
||||
for (const key in consumables.root) {
|
||||
samples[key] = consumables.root[key].script;
|
||||
}
|
||||
}
|
||||
|
||||
const provisionsRoot = "Data/XML/item_defs/vehicles/common/provisions";
|
||||
const provisionsList = await vfs.text(`${provisionsRoot}/list.xml`);
|
||||
const provisionsListEntryPattern = /<items path="(\w+)\.xml"\/>/gm;
|
||||
|
||||
for (const match of provisionsList.matchAll(provisionsListEntryPattern)) {
|
||||
const group = match[1];
|
||||
const path = `${provisionsRoot}/${group}.xml`;
|
||||
const provisions = await vfs.xml<{ root: ConsumablesCommon }>(path);
|
||||
|
||||
for (const key in provisions.root) {
|
||||
samples[key] = provisions.root[key].script;
|
||||
}
|
||||
}
|
||||
|
||||
return Response.json(Object.values(samples));
|
||||
|
||||
const definitions = await api.consumables();
|
||||
const bytes = ConsumableDefinitions.encode(definitions).finish();
|
||||
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
import { ProvisionDefinitions } from "@blitzkit/core";
|
||||
import { api } from "../../../blitzkit/api";
|
||||
import { vfs } from "../../../core/blitzkit/vfs";
|
||||
|
||||
export { getStaticPaths } from "../_index";
|
||||
|
||||
export async function GET() {
|
||||
const definitions = await api.provisions();
|
||||
|
||||
return Response.json(await vfs.yaml("Data/Strings/en.yaml"));
|
||||
|
||||
const bytes = ProvisionDefinitions.encode(definitions).finish();
|
||||
|
||||
return new Response(bytes);
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import { api } from "../../../blitzkit/api";
|
||||
|
||||
export { getStaticPaths } from "../_index";
|
||||
|
||||
export async function GET() {
|
||||
const definitions = await api.scripts();
|
||||
return Response.json(definitions);
|
||||
}
|
||||
Reference in new issue
Block a user