mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 20:19:49 +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,
|
TankDefinitions,
|
||||||
} from "@blitzkit/protos";
|
} from "@blitzkit/protos";
|
||||||
import { fetchPB } from "../../protobuf";
|
import { fetchPB } from "../../protobuf";
|
||||||
|
import { BlitzScripts } from "../../types/blitzScripts";
|
||||||
import { BlitzKitAPI } from "./base";
|
import { BlitzKitAPI } from "./base";
|
||||||
|
|
||||||
export class ClientBlitzKitAPI extends BlitzKitAPI {
|
export class ClientBlitzKitAPI extends BlitzKitAPI {
|
||||||
@@ -66,4 +67,10 @@ export class ClientBlitzKitAPI extends BlitzKitAPI {
|
|||||||
maps() {
|
maps() {
|
||||||
return fetchPB(alias("api", "/definitions/maps.pb"), MapDefinitions);
|
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;
|
"#text": string;
|
||||||
attribute?: string;
|
attribute?: string;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ProvisionConsumableScript } from "@blitzkit/core/src/types/provisionConsumableScript";
|
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||||
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
|
import { ConsumablesVehicleFilter } from "./consumablesVehicleFilter";
|
||||||
|
|
||||||
export interface ConsumablesCommon {
|
export interface ConsumablesCommon {
|
||||||
@@ -13,6 +13,6 @@ export interface ConsumablesCommon {
|
|||||||
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
include: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||||
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
exclude?: { vehicle: ConsumablesVehicleFilter; nations?: string };
|
||||||
};
|
};
|
||||||
script: ProvisionConsumableScript;
|
script: BlitzEffectScript;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
|
import { BlitzEffectScript } from "./blitzEffectScript";
|
||||||
|
|
||||||
export interface OptionalDevices {
|
export interface OptionalDevices {
|
||||||
[key: string]: {
|
[key: string]: {
|
||||||
id: number;
|
id: number;
|
||||||
userString: string;
|
userString: string;
|
||||||
description: string;
|
description: string;
|
||||||
icon: string;
|
icon: string;
|
||||||
script: unknown;
|
script: BlitzEffectScript;
|
||||||
display_params: unknown;
|
display_params: unknown;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,54 +1,9 @@
|
|||||||
import {
|
import { ConsumableDefinitions } from "@blitzkit/core";
|
||||||
ConsumableDefinitions,
|
|
||||||
type ConsumablesCommon,
|
|
||||||
type OptionalDevices,
|
|
||||||
} from "@blitzkit/core";
|
|
||||||
import { api } from "../../../blitzkit/api";
|
import { api } from "../../../blitzkit/api";
|
||||||
import { vfs } from "../../../core/blitzkit/vfs";
|
|
||||||
|
|
||||||
export { getStaticPaths } from "../_index";
|
export { getStaticPaths } from "../_index";
|
||||||
|
|
||||||
export async function GET() {
|
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 definitions = await api.consumables();
|
||||||
const bytes = ConsumableDefinitions.encode(definitions).finish();
|
const bytes = ConsumableDefinitions.encode(definitions).finish();
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
import { ProvisionDefinitions } from "@blitzkit/core";
|
import { ProvisionDefinitions } from "@blitzkit/core";
|
||||||
import { api } from "../../../blitzkit/api";
|
import { api } from "../../../blitzkit/api";
|
||||||
import { vfs } from "../../../core/blitzkit/vfs";
|
|
||||||
|
|
||||||
export { getStaticPaths } from "../_index";
|
export { getStaticPaths } from "../_index";
|
||||||
|
|
||||||
export async function GET() {
|
export async function GET() {
|
||||||
const definitions = await api.provisions();
|
const definitions = await api.provisions();
|
||||||
|
|
||||||
return Response.json(await vfs.yaml("Data/Strings/en.yaml"));
|
|
||||||
|
|
||||||
const bytes = ProvisionDefinitions.encode(definitions).finish();
|
const bytes = ProvisionDefinitions.encode(definitions).finish();
|
||||||
|
|
||||||
return new Response(bytes);
|
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