@sagl/server 0.0.0-stage → 0.1.0-next.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +61 -2
- package/dist/actions.d.ts +46 -0
- package/dist/actions.js +80 -0
- package/dist/actions.js.map +1 -0
- package/dist/animations.d.ts +32 -0
- package/dist/animations.js +95 -0
- package/dist/animations.js.map +1 -0
- package/dist/audio.d.ts +180 -0
- package/dist/audio.js +353 -0
- package/dist/audio.js.map +1 -0
- package/dist/audio_effects.d.ts +219 -0
- package/dist/audio_effects.js +84 -0
- package/dist/audio_effects.js.map +1 -0
- package/dist/camera.d.ts +188 -0
- package/dist/camera.js +247 -0
- package/dist/camera.js.map +1 -0
- package/dist/claims.d.ts +27 -0
- package/dist/claims.js +48 -0
- package/dist/claims.js.map +1 -0
- package/dist/commands.d.ts +135 -0
- package/dist/commands.js +373 -0
- package/dist/commands.js.map +1 -0
- package/dist/console.d.ts +21 -0
- package/dist/console.js +100 -0
- package/dist/console.js.map +1 -0
- package/dist/constants.d.ts +654 -0
- package/dist/constants.js +657 -0
- package/dist/constants.js.map +1 -0
- package/dist/cutscene.d.ts +47 -0
- package/dist/cutscene.js +190 -0
- package/dist/cutscene.js.map +1 -0
- package/dist/draw.d.ts +106 -0
- package/dist/draw.js +132 -0
- package/dist/draw.js.map +1 -0
- package/dist/effects.d.ts +91 -0
- package/dist/effects.js +116 -0
- package/dist/effects.js.map +1 -0
- package/dist/gangzones.d.ts +47 -0
- package/dist/gangzones.js +122 -0
- package/dist/gangzones.js.map +1 -0
- package/dist/geo.d.ts +11 -0
- package/dist/geo.js +25 -0
- package/dist/geo.js.map +1 -0
- package/dist/hud.d.ts +159 -0
- package/dist/hud.js +247 -0
- package/dist/hud.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction.d.ts +81 -0
- package/dist/interaction.js +143 -0
- package/dist/interaction.js.map +1 -0
- package/dist/junctions.d.ts +1 -0
- package/dist/junctions.js +330 -0
- package/dist/junctions.js.map +1 -0
- package/dist/map.d.ts +55 -0
- package/dist/map.js +71 -0
- package/dist/map.js.map +1 -0
- package/dist/menu.d.ts +96 -0
- package/dist/menu.js +129 -0
- package/dist/menu.js.map +1 -0
- package/dist/mission.d.ts +482 -0
- package/dist/mission.js +1258 -0
- package/dist/mission.js.map +1 -0
- package/dist/models.d.ts +56 -0
- package/dist/models.js +71 -0
- package/dist/models.js.map +1 -0
- package/dist/modshop.d.ts +229 -0
- package/dist/modshop.js +904 -0
- package/dist/modshop.js.map +1 -0
- package/dist/modshop_data.d.ts +44 -0
- package/dist/modshop_data.js +287 -0
- package/dist/modshop_data.js.map +1 -0
- package/dist/native.d.ts +809 -0
- package/dist/native.js +27 -0
- package/dist/native.js.map +1 -0
- package/dist/objects.d.ts +249 -0
- package/dist/objects.js +455 -0
- package/dist/objects.js.map +1 -0
- package/dist/paint.d.ts +124 -0
- package/dist/paint.js +84 -0
- package/dist/paint.js.map +1 -0
- package/dist/paynspray.d.ts +44 -0
- package/dist/paynspray.js +177 -0
- package/dist/paynspray.js.map +1 -0
- package/dist/ped.d.ts +335 -0
- package/dist/ped.js +536 -0
- package/dist/ped.js.map +1 -0
- package/dist/player.d.ts +685 -0
- package/dist/player.js +1163 -0
- package/dist/player.js.map +1 -0
- package/dist/screeneffects.d.ts +99 -0
- package/dist/screeneffects.js +257 -0
- package/dist/screeneffects.js.map +1 -0
- package/dist/scripts.d.ts +69 -0
- package/dist/scripts.js +125 -0
- package/dist/scripts.js.map +1 -0
- package/dist/server.d.ts +713 -0
- package/dist/server.js +1080 -0
- package/dist/server.js.map +1 -0
- package/dist/shopblips.d.ts +9 -0
- package/dist/shopblips.js +30 -0
- package/dist/shopblips.js.map +1 -0
- package/dist/special.d.ts +33 -0
- package/dist/special.js +26 -0
- package/dist/special.js.map +1 -0
- package/dist/splash.d.ts +42 -0
- package/dist/splash.js +55 -0
- package/dist/splash.js.map +1 -0
- package/dist/text.d.ts +19 -0
- package/dist/text.js +25 -0
- package/dist/text.js.map +1 -0
- package/dist/ui.d.ts +141 -0
- package/dist/ui.js +243 -0
- package/dist/ui.js.map +1 -0
- package/dist/vehicle.d.ts +306 -0
- package/dist/vehicle.js +612 -0
- package/dist/vehicle.js.map +1 -0
- package/dist/vehiclecolors.d.ts +26 -0
- package/dist/vehiclecolors.js +49 -0
- package/dist/vehiclecolors.js.map +1 -0
- package/dist/world.d.ts +222 -0
- package/dist/world.js +227 -0
- package/dist/world.js.map +1 -0
- package/dist/zone.d.ts +89 -0
- package/dist/zone.js +140 -0
- package/dist/zone.js.map +1 -0
- package/package.json +33 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player.js","sourceRoot":"","sources":["../src/player.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { NativeServer } from "./native.js";
|
|
2
|
+
import type { Player } from "./player.js";
|
|
3
|
+
/** A screen effect's parameters: each a number, or 2-4 numbers (a vector, a colour). */
|
|
4
|
+
export type ScreenEffectParams = Record<string, number | number[]>;
|
|
5
|
+
export interface ScreenEffectOptions {
|
|
6
|
+
/** Its parameters, by the names its shader uses (at most 8; the names and sizes are fixed once added). */
|
|
7
|
+
params?: ScreenEffectParams;
|
|
8
|
+
/** Drawn lowest first: each sees the frame as the ones before it left it. Default 0. */
|
|
9
|
+
order?: number;
|
|
10
|
+
/** Fades in over this long (ms). Default 0: at once. */
|
|
11
|
+
fadeMs?: number;
|
|
12
|
+
}
|
|
13
|
+
type Spec = {
|
|
14
|
+
file: string;
|
|
15
|
+
params: string;
|
|
16
|
+
values: number[];
|
|
17
|
+
order: number;
|
|
18
|
+
fadeMs: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The effects built into the game, by name, with their parameters' defaults
|
|
22
|
+
* (`screenEffects.add("nightvision")`). The client's shaders are in
|
|
23
|
+
* client/src/screen_effects.cpp, and client scripts' copy of this in
|
|
24
|
+
* client/src/script_things.cpp: add a new one to all three.
|
|
25
|
+
*/
|
|
26
|
+
export declare const BUILT_IN_SCREEN_EFFECTS: Readonly<Record<string, Readonly<ScreenEffectParams>>>;
|
|
27
|
+
/**
|
|
28
|
+
* A full-screen effect on one player's screen, or on everyone's
|
|
29
|
+
* (`player.screenEffects.add`, `server.screenEffects.add`): a pixel shader
|
|
30
|
+
* of yours over the finished world, under the HUD. See `ScreenEffects`.
|
|
31
|
+
*/
|
|
32
|
+
export declare class ScreenEffect {
|
|
33
|
+
#private;
|
|
34
|
+
/** What it was added as: a built-in's or a defined effect's name, or a client file. */
|
|
35
|
+
readonly file: string;
|
|
36
|
+
/** @internal */
|
|
37
|
+
constructor(file: string, shader: string, params: ScreenEffectParams, options: ScreenEffectOptions, send: (spec: Spec | null, fadeMs: number) => void);
|
|
38
|
+
/** Its parameters now. */
|
|
39
|
+
get params(): Readonly<ScreenEffectParams>;
|
|
40
|
+
/** Still on screen (not removed). */
|
|
41
|
+
get active(): boolean;
|
|
42
|
+
/** Changes parameters (only those given; the ones it was added with). */
|
|
43
|
+
set(params: ScreenEffectParams): this;
|
|
44
|
+
/** Takes it off, fading out over `fadeMs` (default 0: at once). */
|
|
45
|
+
remove(fadeMs?: number): void;
|
|
46
|
+
/** @internal */
|
|
47
|
+
spec(fadeMs: number): Spec;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Full-screen effects: pixel shaders drawn over the world under the HUD:
|
|
51
|
+
* colour grading, night vision, a drunk blur, a flashback. Built in (see
|
|
52
|
+
* `BUILT_IN_SCREEN_EFFECTS`), or your own in HLSL, as client files (see
|
|
53
|
+
* `clientFiles`), which players' games compile.
|
|
54
|
+
* `player.screenEffects` for one player, `server.screenEffects` for
|
|
55
|
+
* everyone (players joining later too).
|
|
56
|
+
*
|
|
57
|
+
* ```hlsl
|
|
58
|
+
* // client-files/shaders/greyscale.hlsl
|
|
59
|
+
* float4 main(float2 uv : TEXCOORD0) : COLOR {
|
|
60
|
+
* float4 c = tex2D(scene, uv);
|
|
61
|
+
* float g = dot(c.rgb, float3(0.299, 0.587, 0.114));
|
|
62
|
+
* return float4(lerp(c.rgb, g.xxx, strength), 1);
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* player.screenEffects.add("nightvision", { fadeMs: 500 });
|
|
68
|
+
* const grey = player.screenEffects.add("shaders/greyscale.hlsl", { params: { strength: 1 }, fadeMs: 1000 });
|
|
69
|
+
* grey.set({ strength: 0.5 });
|
|
70
|
+
* grey.remove(1000);
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare class ScreenEffects {
|
|
74
|
+
#private;
|
|
75
|
+
/** @internal player null: everyone's (ids apart from players' own). */
|
|
76
|
+
constructor(native: NativeServer, player: Player | null, players: () => Player[]);
|
|
77
|
+
/**
|
|
78
|
+
* Adds an effect: a built-in's name (`BUILT_IN_SCREEN_EFFECTS`), one you
|
|
79
|
+
* named with `define`, or a client file with the shader (HLSL). Named
|
|
80
|
+
* ones start from their defaults, and take only their own parameters.
|
|
81
|
+
*/
|
|
82
|
+
add(effect: string, options?: ScreenEffectOptions): ScreenEffect;
|
|
83
|
+
/**
|
|
84
|
+
* Names an effect of yours (a client file with its shader) with its
|
|
85
|
+
* parameters' defaults, to add by name like a built-in: on every screen,
|
|
86
|
+
* the server's and each player's. Throws if the name is a built-in's or
|
|
87
|
+
* taken.
|
|
88
|
+
*/
|
|
89
|
+
define(name: string, file: string, defaults?: ScreenEffectParams): void;
|
|
90
|
+
/** The effects you can add by name: the built-ins and those defined. */
|
|
91
|
+
get names(): string[];
|
|
92
|
+
/** The effects on now. */
|
|
93
|
+
get list(): ScreenEffect[];
|
|
94
|
+
/** Takes every one off, fading out over `fadeMs`. */
|
|
95
|
+
clear(fadeMs?: number): void;
|
|
96
|
+
/** @internal A player joined: everyone's on their screen too. */
|
|
97
|
+
joined(player: Player): void;
|
|
98
|
+
}
|
|
99
|
+
export {};
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
const NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
2
|
+
const frozen = (params) => Object.freeze({ ...params });
|
|
3
|
+
/**
|
|
4
|
+
* The effects built into the game, by name, with their parameters' defaults
|
|
5
|
+
* (`screenEffects.add("nightvision")`). The client's shaders are in
|
|
6
|
+
* client/src/screen_effects.cpp, and client scripts' copy of this in
|
|
7
|
+
* client/src/script_things.cpp: add a new one to all three.
|
|
8
|
+
*/
|
|
9
|
+
export const BUILT_IN_SCREEN_EFFECTS = Object.freeze({
|
|
10
|
+
greyscale: frozen({ strength: 1 }),
|
|
11
|
+
sepia: frozen({ strength: 1 }),
|
|
12
|
+
nightvision: frozen({ gain: 3, grain: 1 }),
|
|
13
|
+
thermal: frozen({
|
|
14
|
+
grain: 1, blur: 1.5, cooling: 60,
|
|
15
|
+
coldest: [0.01, 0, 0.08], cold: [0.3, 0, 0.55], warm: [0.85, 0.1, 0.25], hot: [1, 0.65, 0], hottest: [1, 1, 0.85],
|
|
16
|
+
}),
|
|
17
|
+
drunk: frozen({ amount: 1 }),
|
|
18
|
+
hurt: frozen({ amount: 1, color: [0.55, 0, 0] }),
|
|
19
|
+
grade: frozen({ saturation: 1, contrast: 1, brightness: 1, tint: [1, 1, 1] }),
|
|
20
|
+
blur: frozen({ amount: 4 }),
|
|
21
|
+
vignette: frozen({ amount: 0.5, color: [0, 0, 0] }),
|
|
22
|
+
fade: frozen({ amount: 1, color: [0, 0, 0] }),
|
|
23
|
+
dof: frozen({ focus: 0, range: 1, amount: 8 }),
|
|
24
|
+
tiltshift: frozen({ center: 0.55, width: 0.08, angle: 0, amount: 12, saturation: 1.4 }),
|
|
25
|
+
});
|
|
26
|
+
// Effects servers named (`define`), shared by the server's and its players' screens.
|
|
27
|
+
const defined = new WeakMap();
|
|
28
|
+
function definedOn(native) {
|
|
29
|
+
let map = defined.get(native);
|
|
30
|
+
if (!map)
|
|
31
|
+
defined.set(native, (map = new Map()));
|
|
32
|
+
return map;
|
|
33
|
+
}
|
|
34
|
+
const size = (v) => (Array.isArray(v) ? v.length : 1);
|
|
35
|
+
// A named effect's parameters: its defaults, with those given over them.
|
|
36
|
+
function withDefaults(name, defaults, given) {
|
|
37
|
+
for (const [n, v] of Object.entries(given)) {
|
|
38
|
+
const d = defaults[n];
|
|
39
|
+
if (d === undefined)
|
|
40
|
+
throw new RangeError(`${name} has no parameter ${n} (it has ${Object.keys(defaults).join(", ") || "none"})`);
|
|
41
|
+
if (size(v) !== size(d))
|
|
42
|
+
throw new RangeError(`parameter ${n}: ${size(d)} number(s)`);
|
|
43
|
+
}
|
|
44
|
+
const out = {};
|
|
45
|
+
for (const [n, d] of Object.entries(defaults)) {
|
|
46
|
+
const v = given[n] ?? d;
|
|
47
|
+
out[n] = Array.isArray(v) ? [...v] : v;
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
// The parameters as sent: "name:size,..." and 4 floats a parameter.
|
|
52
|
+
function encode(params, sizes) {
|
|
53
|
+
const out = sizes ?? new Map();
|
|
54
|
+
if (!sizes) {
|
|
55
|
+
const names = Object.keys(params);
|
|
56
|
+
if (names.length > 8)
|
|
57
|
+
throw new RangeError(`at most 8 screen effect parameters (${names.length})`);
|
|
58
|
+
for (const name of names) {
|
|
59
|
+
if (!NAME.test(name))
|
|
60
|
+
throw new RangeError(`not a parameter name: "${name}"`);
|
|
61
|
+
const v = params[name];
|
|
62
|
+
const size = Array.isArray(v) ? v.length : 1;
|
|
63
|
+
if (size < 1 || size > 4)
|
|
64
|
+
throw new RangeError(`parameter ${name}: 1 to 4 numbers (${size})`);
|
|
65
|
+
out.set(name, size);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const values = [];
|
|
69
|
+
for (const [name, size] of out) {
|
|
70
|
+
const v = params[name];
|
|
71
|
+
const nums = Array.isArray(v) ? v : [v];
|
|
72
|
+
for (let i = 0; i < 4; i++)
|
|
73
|
+
values.push(i < size ? Number(nums[i] ?? 0) : 0);
|
|
74
|
+
}
|
|
75
|
+
return { params: [...out].map(([n, s]) => `${n}:${s}`).join(","), values, sizes: out };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A full-screen effect on one player's screen, or on everyone's
|
|
79
|
+
* (`player.screenEffects.add`, `server.screenEffects.add`): a pixel shader
|
|
80
|
+
* of yours over the finished world, under the HUD. See `ScreenEffects`.
|
|
81
|
+
*/
|
|
82
|
+
export class ScreenEffect {
|
|
83
|
+
/** What it was added as: a built-in's or a defined effect's name, or a client file. */
|
|
84
|
+
file;
|
|
85
|
+
#shader;
|
|
86
|
+
#params;
|
|
87
|
+
#sizes;
|
|
88
|
+
#order;
|
|
89
|
+
#send;
|
|
90
|
+
#active = true;
|
|
91
|
+
/** @internal */
|
|
92
|
+
constructor(file, shader, params, options, send) {
|
|
93
|
+
this.file = file;
|
|
94
|
+
this.#shader = shader;
|
|
95
|
+
this.#params = params;
|
|
96
|
+
this.#sizes = encode(this.#params).sizes;
|
|
97
|
+
this.#order = options.order ?? 0;
|
|
98
|
+
this.#send = send;
|
|
99
|
+
this.#send(this.spec(options.fadeMs ?? 0), 0);
|
|
100
|
+
}
|
|
101
|
+
/** Its parameters now. */
|
|
102
|
+
get params() {
|
|
103
|
+
return this.#params;
|
|
104
|
+
}
|
|
105
|
+
/** Still on screen (not removed). */
|
|
106
|
+
get active() {
|
|
107
|
+
return this.#active;
|
|
108
|
+
}
|
|
109
|
+
/** Changes parameters (only those given; the ones it was added with). */
|
|
110
|
+
set(params) {
|
|
111
|
+
if (!this.#active)
|
|
112
|
+
return this;
|
|
113
|
+
for (const [name, v] of Object.entries(params)) {
|
|
114
|
+
const size = this.#sizes.get(name);
|
|
115
|
+
if (size === undefined)
|
|
116
|
+
throw new RangeError(`no parameter ${name} (it was added with ${[...this.#sizes.keys()].join(", ") || "none"})`);
|
|
117
|
+
if ((Array.isArray(v) ? v.length : 1) !== size)
|
|
118
|
+
throw new RangeError(`parameter ${name}: ${size} number(s)`);
|
|
119
|
+
this.#params[name] = v;
|
|
120
|
+
}
|
|
121
|
+
this.#send(this.spec(0), 0);
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
/** Takes it off, fading out over `fadeMs` (default 0: at once). */
|
|
125
|
+
remove(fadeMs = 0) {
|
|
126
|
+
if (!this.#active)
|
|
127
|
+
return;
|
|
128
|
+
this.#active = false;
|
|
129
|
+
this.#send(null, Math.max(0, Math.trunc(fadeMs)));
|
|
130
|
+
}
|
|
131
|
+
/** @internal */
|
|
132
|
+
spec(fadeMs) {
|
|
133
|
+
const e = encode(this.#params, this.#sizes);
|
|
134
|
+
return { file: this.#shader, params: e.params, values: e.values, order: this.#order, fadeMs };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Full-screen effects: pixel shaders drawn over the world under the HUD:
|
|
139
|
+
* colour grading, night vision, a drunk blur, a flashback. Built in (see
|
|
140
|
+
* `BUILT_IN_SCREEN_EFFECTS`), or your own in HLSL, as client files (see
|
|
141
|
+
* `clientFiles`), which players' games compile.
|
|
142
|
+
* `player.screenEffects` for one player, `server.screenEffects` for
|
|
143
|
+
* everyone (players joining later too).
|
|
144
|
+
*
|
|
145
|
+
* ```hlsl
|
|
146
|
+
* // client-files/shaders/greyscale.hlsl
|
|
147
|
+
* float4 main(float2 uv : TEXCOORD0) : COLOR {
|
|
148
|
+
* float4 c = tex2D(scene, uv);
|
|
149
|
+
* float g = dot(c.rgb, float3(0.299, 0.587, 0.114));
|
|
150
|
+
* return float4(lerp(c.rgb, g.xxx, strength), 1);
|
|
151
|
+
* }
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* ```ts
|
|
155
|
+
* player.screenEffects.add("nightvision", { fadeMs: 500 });
|
|
156
|
+
* const grey = player.screenEffects.add("shaders/greyscale.hlsl", { params: { strength: 1 }, fadeMs: 1000 });
|
|
157
|
+
* grey.set({ strength: 0.5 });
|
|
158
|
+
* grey.remove(1000);
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
export class ScreenEffects {
|
|
162
|
+
#native;
|
|
163
|
+
#players;
|
|
164
|
+
#player;
|
|
165
|
+
#effects = new Map();
|
|
166
|
+
#next;
|
|
167
|
+
/** @internal player null: everyone's (ids apart from players' own). */
|
|
168
|
+
constructor(native, player, players) {
|
|
169
|
+
this.#native = native;
|
|
170
|
+
this.#player = player;
|
|
171
|
+
this.#players = players;
|
|
172
|
+
this.#next = player ? 1 : 0x40000000;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Adds an effect: a built-in's name (`BUILT_IN_SCREEN_EFFECTS`), one you
|
|
176
|
+
* named with `define`, or a client file with the shader (HLSL). Named
|
|
177
|
+
* ones start from their defaults, and take only their own parameters.
|
|
178
|
+
*/
|
|
179
|
+
add(effect, options = {}) {
|
|
180
|
+
let shader = effect;
|
|
181
|
+
let params;
|
|
182
|
+
const named = Object.hasOwn(BUILT_IN_SCREEN_EFFECTS, effect)
|
|
183
|
+
? { file: `sagl:${effect}`, params: BUILT_IN_SCREEN_EFFECTS[effect] }
|
|
184
|
+
: definedOn(this.#native).get(effect);
|
|
185
|
+
if (named) {
|
|
186
|
+
shader = named.file;
|
|
187
|
+
params = withDefaults(effect, named.params, options.params ?? {});
|
|
188
|
+
}
|
|
189
|
+
else if (this.#hasFile(effect)) {
|
|
190
|
+
params = { ...(options.params ?? {}) };
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
throw new ReferenceError(`no screen effect or client file "${effect}"`);
|
|
194
|
+
}
|
|
195
|
+
const id = this.#next++;
|
|
196
|
+
const added = new ScreenEffect(effect, shader, params, options, (spec, fadeMs) => {
|
|
197
|
+
if (!spec)
|
|
198
|
+
this.#effects.delete(id);
|
|
199
|
+
for (const p of this.#targets())
|
|
200
|
+
this.#sendTo(p, id, spec, fadeMs);
|
|
201
|
+
});
|
|
202
|
+
this.#effects.set(id, added);
|
|
203
|
+
return added;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Names an effect of yours (a client file with its shader) with its
|
|
207
|
+
* parameters' defaults, to add by name like a built-in: on every screen,
|
|
208
|
+
* the server's and each player's. Throws if the name is a built-in's or
|
|
209
|
+
* taken.
|
|
210
|
+
*/
|
|
211
|
+
define(name, file, defaults = {}) {
|
|
212
|
+
if (!NAME.test(name))
|
|
213
|
+
throw new RangeError(`not an effect name: "${name}"`);
|
|
214
|
+
if (Object.hasOwn(BUILT_IN_SCREEN_EFFECTS, name))
|
|
215
|
+
throw new RangeError(`"${name}" is a built-in effect`);
|
|
216
|
+
const map = definedOn(this.#native);
|
|
217
|
+
if (map.has(name))
|
|
218
|
+
throw new RangeError(`"${name}" is already defined`);
|
|
219
|
+
if (!this.#hasFile(file))
|
|
220
|
+
throw new ReferenceError(`no client file "${file}"`);
|
|
221
|
+
encode(defaults);
|
|
222
|
+
map.set(name, { file, params: frozen(defaults) });
|
|
223
|
+
}
|
|
224
|
+
/** The effects you can add by name: the built-ins and those defined. */
|
|
225
|
+
get names() {
|
|
226
|
+
return [...Object.keys(BUILT_IN_SCREEN_EFFECTS), ...definedOn(this.#native).keys()];
|
|
227
|
+
}
|
|
228
|
+
/** The effects on now. */
|
|
229
|
+
get list() {
|
|
230
|
+
return [...this.#effects.values()];
|
|
231
|
+
}
|
|
232
|
+
/** Takes every one off, fading out over `fadeMs`. */
|
|
233
|
+
clear(fadeMs = 0) {
|
|
234
|
+
for (const e of this.list)
|
|
235
|
+
e.remove(fadeMs);
|
|
236
|
+
}
|
|
237
|
+
/** @internal A player joined: everyone's on their screen too. */
|
|
238
|
+
joined(player) {
|
|
239
|
+
for (const [id, e] of this.#effects)
|
|
240
|
+
this.#sendTo(player, id, e.spec(0), 0);
|
|
241
|
+
}
|
|
242
|
+
#hasFile(file) {
|
|
243
|
+
return this.#native.clientFiles().some((f) => f.path === file);
|
|
244
|
+
}
|
|
245
|
+
#targets() {
|
|
246
|
+
return this.#player ? [this.#player] : this.#players();
|
|
247
|
+
}
|
|
248
|
+
#sendTo(player, id, spec, fadeMs) {
|
|
249
|
+
if (!player.connected)
|
|
250
|
+
return;
|
|
251
|
+
if (spec)
|
|
252
|
+
this.#native.screenEffect(player.id, { id, ...spec });
|
|
253
|
+
else
|
|
254
|
+
this.#native.screenEffect(player.id, { id, remove: true, fadeMs });
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=screeneffects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screeneffects.js","sourceRoot":"","sources":["../src/screeneffects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { NativeServer } from "./native.js";
|
|
2
|
+
import type { Player } from "./player.js";
|
|
3
|
+
/**
|
|
4
|
+
* JavaScript the gamemode runs in its players' games, sandboxed: the
|
|
5
|
+
* language, timers and the `sagl` client API (channels to the gamemode, the
|
|
6
|
+
* local player), but no files, network or OS, with memory and CPU limits.
|
|
7
|
+
* Scripts run in the order they were first added; replacing or removing
|
|
8
|
+
* one runs them all again from scratch. Players joining later get them all.
|
|
9
|
+
*
|
|
10
|
+
* In a client script:
|
|
11
|
+
* ```js
|
|
12
|
+
* sagl.on("chat", (msg) => sagl.log(msg.from, msg.text));
|
|
13
|
+
* sagl.emit("hello", { at: sagl.player.position() });
|
|
14
|
+
* setInterval(() => sagl.emit("ping", Date.now()), 5000);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class ClientScripts {
|
|
18
|
+
#private;
|
|
19
|
+
/** @internal Created by Server. */
|
|
20
|
+
constructor(nativeServer: NativeServer);
|
|
21
|
+
/** Adds (or replaces) a script, for everyone now and as they join. */
|
|
22
|
+
set(name: string, code: string): this;
|
|
23
|
+
/** Adds (or replaces) a script from a file; named after the file unless given a name. */
|
|
24
|
+
setFile(path: string, name?: string): this;
|
|
25
|
+
/**
|
|
26
|
+
* Uses a client file (see `clientFiles`) as a script, named after its
|
|
27
|
+
* path: players already have it, so only its name is sent.
|
|
28
|
+
*/
|
|
29
|
+
useClientFile(path: string): this;
|
|
30
|
+
/** Removes a script from everyone's game. */
|
|
31
|
+
delete(name: string): boolean;
|
|
32
|
+
has(name: string): boolean;
|
|
33
|
+
/** The scripts' names, in the order they run. */
|
|
34
|
+
get names(): string[];
|
|
35
|
+
}
|
|
36
|
+
/** What a client script sent: its JSON, parsed (or the text, if it isn't JSON). */
|
|
37
|
+
export type ChannelData = unknown;
|
|
38
|
+
/**
|
|
39
|
+
* A named channel between the gamemode and its client scripts. Data is
|
|
40
|
+
* anything JSON can hold; it arrives parsed. Client scripts listen with
|
|
41
|
+
* `sagl.on(name, fn)` and send with `sagl.emit(name, data)`.
|
|
42
|
+
*/
|
|
43
|
+
export declare class Channel {
|
|
44
|
+
#private;
|
|
45
|
+
readonly name: string;
|
|
46
|
+
/** @internal Created by Server.channel(). */
|
|
47
|
+
constructor(nativeServer: NativeServer, name: string);
|
|
48
|
+
/** Handles what players' client scripts send on this channel. */
|
|
49
|
+
on(handler: (player: Player, data: ChannelData) => void): this;
|
|
50
|
+
off(handler: (player: Player, data: ChannelData) => void): this;
|
|
51
|
+
/** To one player's client scripts. */
|
|
52
|
+
send(player: Player, data?: unknown): void;
|
|
53
|
+
/** To every player's client scripts. */
|
|
54
|
+
broadcast(data?: unknown): void;
|
|
55
|
+
/** @internal */
|
|
56
|
+
dispatch(player: Player, data: ChannelData): void;
|
|
57
|
+
}
|
|
58
|
+
/** @internal JSON for the wire (undefined as null). */
|
|
59
|
+
export declare function encode(data: unknown): string;
|
|
60
|
+
/** @internal What came in: parsed JSON, else the text. */
|
|
61
|
+
export declare function decode(text: string): ChannelData;
|
|
62
|
+
/** A client script's uncaught error, as its game reported it. */
|
|
63
|
+
export interface ClientScriptError {
|
|
64
|
+
/** The script's name, or what was running ("timer", `on "channel"`). */
|
|
65
|
+
where: string;
|
|
66
|
+
message: string;
|
|
67
|
+
}
|
|
68
|
+
/** @internal Checks a channel name. */
|
|
69
|
+
export declare function checkChannel(name: string): void;
|
package/dist/scripts.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { basename } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* JavaScript the gamemode runs in its players' games, sandboxed: the
|
|
5
|
+
* language, timers and the `sagl` client API (channels to the gamemode, the
|
|
6
|
+
* local player), but no files, network or OS, with memory and CPU limits.
|
|
7
|
+
* Scripts run in the order they were first added; replacing or removing
|
|
8
|
+
* one runs them all again from scratch. Players joining later get them all.
|
|
9
|
+
*
|
|
10
|
+
* In a client script:
|
|
11
|
+
* ```js
|
|
12
|
+
* sagl.on("chat", (msg) => sagl.log(msg.from, msg.text));
|
|
13
|
+
* sagl.emit("hello", { at: sagl.player.position() });
|
|
14
|
+
* setInterval(() => sagl.emit("ping", Date.now()), 5000);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export class ClientScripts {
|
|
18
|
+
#native;
|
|
19
|
+
#scripts = new Map();
|
|
20
|
+
/** @internal Created by Server. */
|
|
21
|
+
constructor(nativeServer) {
|
|
22
|
+
this.#native = nativeServer;
|
|
23
|
+
}
|
|
24
|
+
/** Adds (or replaces) a script, for everyone now and as they join. */
|
|
25
|
+
set(name, code) {
|
|
26
|
+
if (!name || name.length > 64)
|
|
27
|
+
throw new RangeError(`client script name must be 1-64 characters`);
|
|
28
|
+
this.#scripts.set(name, code);
|
|
29
|
+
this.#native.setClientScript(name, code);
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
/** Adds (or replaces) a script from a file; named after the file unless given a name. */
|
|
33
|
+
setFile(path, name = basename(path)) {
|
|
34
|
+
return this.set(name, readFileSync(path, "utf8"));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Uses a client file (see `clientFiles`) as a script, named after its
|
|
38
|
+
* path: players already have it, so only its name is sent.
|
|
39
|
+
*/
|
|
40
|
+
useClientFile(path) {
|
|
41
|
+
if (!this.#native.setClientScriptFile(path))
|
|
42
|
+
throw new Error(`no client file "${path}"`);
|
|
43
|
+
this.#scripts.set(path, "");
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
/** Removes a script from everyone's game. */
|
|
47
|
+
delete(name) {
|
|
48
|
+
this.#scripts.delete(name);
|
|
49
|
+
return this.#native.removeClientScript(name);
|
|
50
|
+
}
|
|
51
|
+
has(name) {
|
|
52
|
+
return this.#scripts.has(name);
|
|
53
|
+
}
|
|
54
|
+
/** The scripts' names, in the order they run. */
|
|
55
|
+
get names() {
|
|
56
|
+
return [...this.#scripts.keys()];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A named channel between the gamemode and its client scripts. Data is
|
|
61
|
+
* anything JSON can hold; it arrives parsed. Client scripts listen with
|
|
62
|
+
* `sagl.on(name, fn)` and send with `sagl.emit(name, data)`.
|
|
63
|
+
*/
|
|
64
|
+
export class Channel {
|
|
65
|
+
name;
|
|
66
|
+
#native;
|
|
67
|
+
#handlers = [];
|
|
68
|
+
/** @internal Created by Server.channel(). */
|
|
69
|
+
constructor(nativeServer, name) {
|
|
70
|
+
this.#native = nativeServer;
|
|
71
|
+
this.name = name;
|
|
72
|
+
}
|
|
73
|
+
/** Handles what players' client scripts send on this channel. */
|
|
74
|
+
on(handler) {
|
|
75
|
+
this.#handlers.push(handler);
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
off(handler) {
|
|
79
|
+
this.#handlers = this.#handlers.filter((h) => h !== handler);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
/** To one player's client scripts. */
|
|
83
|
+
send(player, data) {
|
|
84
|
+
this.#native.sendScriptMessage(player.id, this.name, encode(data));
|
|
85
|
+
}
|
|
86
|
+
/** To every player's client scripts. */
|
|
87
|
+
broadcast(data) {
|
|
88
|
+
this.#native.broadcastScriptMessage(this.name, encode(data));
|
|
89
|
+
}
|
|
90
|
+
/** @internal */
|
|
91
|
+
dispatch(player, data) {
|
|
92
|
+
for (const h of this.#handlers) {
|
|
93
|
+
try {
|
|
94
|
+
h(player, data);
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
console.error(`channel "${this.name}" handler threw:`, e);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** @internal JSON for the wire (undefined as null). */
|
|
103
|
+
export function encode(data) {
|
|
104
|
+
const json = JSON.stringify(data ?? null);
|
|
105
|
+
if (json === undefined)
|
|
106
|
+
throw new TypeError("channel data must be JSON-serialisable");
|
|
107
|
+
return json;
|
|
108
|
+
}
|
|
109
|
+
/** @internal What came in: parsed JSON, else the text. */
|
|
110
|
+
export function decode(text) {
|
|
111
|
+
try {
|
|
112
|
+
return JSON.parse(text);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return text;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** @internal Checks a channel name. */
|
|
119
|
+
export function checkChannel(name) {
|
|
120
|
+
if (!name || name.length > 64)
|
|
121
|
+
throw new RangeError("channel names are 1-64 characters");
|
|
122
|
+
if (name.startsWith("sagl:"))
|
|
123
|
+
throw new RangeError('channel names starting "sagl:" are reserved');
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=scripts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../src/scripts.ts"],"names":[],"mappings":"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"}
|