@datamoc/mw_games 0.8.2 → 0.9.0
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/CHANGELOG.md +78 -0
- package/README.md +11 -4
- package/dist/core/ActionJournal.d.ts +2 -0
- package/dist/core/ActionJournal.d.ts.map +1 -1
- package/dist/core/ActionJournal.js +6 -0
- package/dist/core/ActionJournal.js.map +1 -1
- package/dist/core/Multiplayer.d.ts +21 -4
- package/dist/core/Multiplayer.d.ts.map +1 -1
- package/dist/core/Multiplayer.js +31 -4
- package/dist/core/Multiplayer.js.map +1 -1
- package/dist/core/State.d.ts +38 -0
- package/dist/core/State.d.ts.map +1 -1
- package/dist/core/State.js +76 -0
- package/dist/core/State.js.map +1 -1
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/mw_games.global.js +107 -91
- package/dist/mwl/catalog.d.ts +7 -0
- package/dist/mwl/catalog.d.ts.map +1 -1
- package/dist/mwl/catalog.js +0 -0
- package/dist/mwl/catalog.js.map +1 -1
- package/dist/mwl/compiler.d.ts +10 -7
- package/dist/mwl/compiler.d.ts.map +1 -1
- package/dist/mwl/compiler.js +17 -10
- package/dist/mwl/compiler.js.map +1 -1
- package/dist/mwl/content.d.ts +1 -1
- package/dist/mwl/content.js +1 -1
- package/dist/mwl/grammar.d.ts +25 -8
- package/dist/mwl/grammar.d.ts.map +1 -1
- package/dist/mwl/grammar.js +408 -105
- package/dist/mwl/grammar.js.map +1 -1
- package/dist/mwl/hooks.d.ts +35 -2
- package/dist/mwl/hooks.d.ts.map +1 -1
- package/dist/mwl/hooks.js +8 -6
- package/dist/mwl/hooks.js.map +1 -1
- package/dist/mwl/index.d.ts +6 -6
- package/dist/mwl/index.d.ts.map +1 -1
- package/dist/mwl/index.js +3 -3
- package/dist/mwl/index.js.map +1 -1
- package/dist/mwl/persistence.d.ts +18 -1
- package/dist/mwl/persistence.d.ts.map +1 -1
- package/dist/mwl/persistence.js +59 -3
- package/dist/mwl/persistence.js.map +1 -1
- package/dist/mwl/readers.d.ts +39 -2
- package/dist/mwl/readers.d.ts.map +1 -1
- package/dist/mwl/readers.js +71 -2
- package/dist/mwl/readers.js.map +1 -1
- package/dist/mwl/report.d.ts +2 -2
- package/dist/mwl/report.js +2 -2
- package/dist/mwl/runtime.d.ts +46 -2
- package/dist/mwl/runtime.d.ts.map +1 -1
- package/dist/mwl/runtime.js +73 -9
- package/dist/mwl/runtime.js.map +1 -1
- package/dist/mwl/schema.d.ts +32 -1
- package/dist/mwl/schema.d.ts.map +1 -1
- package/dist/mwl/schema.js +58 -3
- package/dist/mwl/schema.js.map +1 -1
- package/dist/simulation/Runtime.d.ts +66 -1
- package/dist/simulation/Runtime.d.ts.map +1 -1
- package/dist/simulation/Runtime.js +131 -3
- package/dist/simulation/Runtime.js.map +1 -1
- package/dist/simulation/index.d.ts +2 -2
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +1 -1
- package/dist/simulation/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
- package/tools/mwl.mjs +85 -4
package/dist/mwl/readers.js
CHANGED
|
@@ -6,7 +6,7 @@ import { isMwlId } from './schema.js';
|
|
|
6
6
|
* ```ts
|
|
7
7
|
* import { compile, readAttributes } from '@datamoc/mw_games/mwl';
|
|
8
8
|
*
|
|
9
|
-
* const game = compile('
|
|
9
|
+
* const game = compile("[{ tag: 'game', schema: 0.1 }]");
|
|
10
10
|
* const { value } = readAttributes(game.roots[0]!, { schema: { type: 'string' } });
|
|
11
11
|
* console.log(value.schema); // '0.1'
|
|
12
12
|
* ```
|
|
@@ -39,7 +39,7 @@ export function readAttributes(node, fields) {
|
|
|
39
39
|
* ```ts
|
|
40
40
|
* import { compile, readAttributes, readChildren } from '@datamoc/mw_games/mwl';
|
|
41
41
|
*
|
|
42
|
-
* const game = compile('
|
|
42
|
+
* const game = compile("[{ tag: 'game', schema: 0.1, children: [{ tag: 'side', id: 1 }] }]");
|
|
43
43
|
* const sides = readChildren(game.roots[0]!, 'side', (child) => readAttributes(child, { id: { type: 'id' } }));
|
|
44
44
|
* console.log(sides.value.length); // 1
|
|
45
45
|
* ```
|
|
@@ -56,6 +56,75 @@ export function readChildren(node, tag, read) {
|
|
|
56
56
|
}
|
|
57
57
|
return { value: values, diagnostics };
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Projects rows into a typed map. An array of column names is a native composite key and is
|
|
61
|
+
* encoded without collisions between strings, numbers, booleans, and null.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* import { readTableMap, tableKey } from '@datamoc/mw_games/mwl';
|
|
66
|
+
* const effects = [{ item: 'potion', effect: 'heal', amount: 5 }];
|
|
67
|
+
* const byEffect = readTableMap(effects, { key: ['item', 'effect'], value: (row) => row.amount });
|
|
68
|
+
* console.log(byEffect.get(tableKey('potion', 'heal'))); // 5
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export function readTableMap(rows, options) {
|
|
72
|
+
const result = new Map();
|
|
73
|
+
for (const row of rows) {
|
|
74
|
+
const key = tableKey(...resolveKey(row, options.key));
|
|
75
|
+
if (result.has(key) && options.duplicate !== 'last')
|
|
76
|
+
throw new Error(`duplicate table key: ${key}`);
|
|
77
|
+
result.set(key, options.value ? options.value(row) : row);
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Builds an inverse index, retaining every row that shares a projected key.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* import { readTableIndex, tableKey } from '@datamoc/mw_games/mwl';
|
|
87
|
+
* const rows = [{ item: 'potion', effect: 'heal' }, { item: 'herb', effect: 'heal' }];
|
|
88
|
+
* const byEffect = readTableIndex(rows, { key: 'effect' });
|
|
89
|
+
* console.log(byEffect.get(tableKey('heal'))?.length); // 2
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export function readTableIndex(rows, options) {
|
|
93
|
+
const result = new Map();
|
|
94
|
+
for (const row of rows) {
|
|
95
|
+
const key = tableKey(...resolveKey(row, options.key));
|
|
96
|
+
const bucket = result.get(key);
|
|
97
|
+
if (bucket)
|
|
98
|
+
bucket.push(row);
|
|
99
|
+
else
|
|
100
|
+
result.set(key, [row]);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
/** Returns the stable, collision-free representation used by table maps and indexes. */
|
|
105
|
+
export function tableKey(...parts) {
|
|
106
|
+
return JSON.stringify(parts);
|
|
107
|
+
}
|
|
108
|
+
function resolveKey(row, key) {
|
|
109
|
+
if (typeof key === 'function') {
|
|
110
|
+
const value = key(row);
|
|
111
|
+
return isTableKeyParts(value) ? [...value] : [value];
|
|
112
|
+
}
|
|
113
|
+
if (isKeyColumns(key))
|
|
114
|
+
return key.map((column) => tablePart(row[column], String(column)));
|
|
115
|
+
return [tablePart(row[key], String(key))];
|
|
116
|
+
}
|
|
117
|
+
function isTableKeyParts(value) {
|
|
118
|
+
return Array.isArray(value);
|
|
119
|
+
}
|
|
120
|
+
function isKeyColumns(key) {
|
|
121
|
+
return Array.isArray(key);
|
|
122
|
+
}
|
|
123
|
+
function tablePart(value, column) {
|
|
124
|
+
if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')
|
|
125
|
+
return value;
|
|
126
|
+
throw new TypeError(`table key column "${column}" must be a string, number, boolean, or null`);
|
|
127
|
+
}
|
|
59
128
|
function coerce(raw, type) {
|
|
60
129
|
if (type === 'string')
|
|
61
130
|
return raw;
|
package/dist/mwl/readers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readers.js","sourceRoot":"","sources":["../../src/mwl/readers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"readers.js","sourceRoot":"","sources":["../../src/mwl/readers.ts"],"names":[],"mappings":"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"}
|
package/dist/mwl/report.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export interface MwlContentLoadReport {
|
|
|
25
25
|
* ```ts
|
|
26
26
|
* import { loadContent } from '@datamoc/mw_games/mwl';
|
|
27
27
|
*
|
|
28
|
-
* const report = loadContent([{ file: 'a.mwl', source: '
|
|
28
|
+
* const report = loadContent([{ file: 'a.mwl', source: "[{ tag: 'game', schema: 0.1 }]" }]);
|
|
29
29
|
* console.log(report.game?.schema); // '0.1'
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
@@ -37,7 +37,7 @@ export declare function loadContent(files: readonly MwlSourceFile[], options?: M
|
|
|
37
37
|
* ```ts
|
|
38
38
|
* import { compile, contentReport } from '@datamoc/mw_games/mwl';
|
|
39
39
|
*
|
|
40
|
-
* console.log(contentReport(compile('
|
|
40
|
+
* console.log(contentReport(compile("[{ tag: 'game', schema: 0.1 }]")).tags);
|
|
41
41
|
* ```
|
|
42
42
|
*/
|
|
43
43
|
export declare function contentReport(game: MwlCompiledGame): MwlContentReport;
|
package/dist/mwl/report.js
CHANGED
|
@@ -8,7 +8,7 @@ import { flattenNodes } from './utils.js';
|
|
|
8
8
|
* ```ts
|
|
9
9
|
* import { loadContent } from '@datamoc/mw_games/mwl';
|
|
10
10
|
*
|
|
11
|
-
* const report = loadContent([{ file: 'a.mwl', source: '
|
|
11
|
+
* const report = loadContent([{ file: 'a.mwl', source: "[{ tag: 'game', schema: 0.1 }]" }]);
|
|
12
12
|
* console.log(report.game?.schema); // '0.1'
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
@@ -49,7 +49,7 @@ export function loadContent(files, options = {}) {
|
|
|
49
49
|
* ```ts
|
|
50
50
|
* import { compile, contentReport } from '@datamoc/mw_games/mwl';
|
|
51
51
|
*
|
|
52
|
-
* console.log(contentReport(compile('
|
|
52
|
+
* console.log(contentReport(compile("[{ tag: 'game', schema: 0.1 }]")).tags);
|
|
53
53
|
* ```
|
|
54
54
|
*/
|
|
55
55
|
export function contentReport(game) {
|
package/dist/mwl/runtime.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { MwlCompiledGame, MwlCompiledNode } from './compiler.ts';
|
|
2
|
-
import
|
|
2
|
+
import { ActionJournal } from '../core/ActionJournal.ts';
|
|
3
|
+
import { Generator } from '../core/Random.ts';
|
|
4
|
+
import type { AiHook, CommandHook, GeneratorHook, MigrationHook, ModifierHook, PredicateHook, MwlSaveableHookState } from './hooks.ts';
|
|
3
5
|
import { type MwlPersistenceOptions } from './persistence.ts';
|
|
4
6
|
import type { MwlCarryover, MwlSideRef } from './carryover.ts';
|
|
5
7
|
export interface MwlMapStart {
|
|
@@ -116,6 +118,12 @@ export interface MwlWorld {
|
|
|
116
118
|
image?: string;
|
|
117
119
|
music?: string;
|
|
118
120
|
}>;
|
|
121
|
+
/**
|
|
122
|
+
* State of the hook-facing random stream (`core.Generator`), present once any hook has drawn
|
|
123
|
+
* from `HookWorld.random`. Carried in `world` rather than as a separate save concern so a
|
|
124
|
+
* restored runtime resumes exactly the same stream instead of reseeding it.
|
|
125
|
+
*/
|
|
126
|
+
random?: readonly [number, number, number, number];
|
|
119
127
|
}
|
|
120
128
|
/** One `[message]`: the text plus whatever a game needs to show it. */
|
|
121
129
|
export interface MwlMessage {
|
|
@@ -143,6 +151,8 @@ export interface MwlHookRegistry {
|
|
|
143
151
|
readonly command?: Readonly<Record<string, CommandHook>>;
|
|
144
152
|
readonly ai?: Readonly<Record<string, AiHook>>;
|
|
145
153
|
readonly migration?: Readonly<Record<string, MigrationHook>>;
|
|
154
|
+
/** Explicitly opted-in game-owned state included in MWL saves. */
|
|
155
|
+
readonly saveable?: Readonly<Record<string, MwlSaveableHookState>>;
|
|
146
156
|
}
|
|
147
157
|
export type MwlTraceEvent = {
|
|
148
158
|
readonly type: 'event';
|
|
@@ -159,6 +169,21 @@ export type MwlTraceEvent = {
|
|
|
159
169
|
readonly message: string;
|
|
160
170
|
readonly event?: string;
|
|
161
171
|
};
|
|
172
|
+
/** One public MWL runtime operation, retained for deterministic replay and diagnostics. */
|
|
173
|
+
export type MwlRuntimeAction = {
|
|
174
|
+
readonly type: 'run';
|
|
175
|
+
readonly trigger: string;
|
|
176
|
+
} | {
|
|
177
|
+
readonly type: 'fire_event';
|
|
178
|
+
readonly id: string;
|
|
179
|
+
} | {
|
|
180
|
+
readonly type: 'fire_moveto';
|
|
181
|
+
readonly unit: string;
|
|
182
|
+
} | {
|
|
183
|
+
readonly type: 'answer_dialogue';
|
|
184
|
+
readonly dialogueId: string;
|
|
185
|
+
readonly choiceIndex: number;
|
|
186
|
+
};
|
|
162
187
|
export interface MwlRuntimeOptions {
|
|
163
188
|
readonly world?: MwlWorld;
|
|
164
189
|
/** called for every `[message]` command, with its speaker and portrait */
|
|
@@ -170,6 +195,13 @@ export interface MwlRuntimeOptions {
|
|
|
170
195
|
readonly onTrace?: (event: MwlTraceEvent) => void;
|
|
171
196
|
/** schema version and migrations used by save/restore; defaults to version 1 */
|
|
172
197
|
readonly persistence?: MwlPersistenceOptions;
|
|
198
|
+
/**
|
|
199
|
+
* Seeds the stream `HookWorld.random` draws from. Defaults to resuming `world.random`'s saved
|
|
200
|
+
* state when the given (or restored) world already carries one, otherwise a fresh ambient
|
|
201
|
+
* generator. Inject your own for a reproducible run independent of what `world` carries, for
|
|
202
|
+
* example a network match seeded from `LockstepWelcome.seed`.
|
|
203
|
+
*/
|
|
204
|
+
readonly random?: Generator;
|
|
173
205
|
}
|
|
174
206
|
export type MwlCommand = {
|
|
175
207
|
readonly name: 'set_variable';
|
|
@@ -265,7 +297,7 @@ export declare function parseTerrain(text: string): {
|
|
|
265
297
|
* ```ts
|
|
266
298
|
* import { compile, MwlRuntime } from '@datamoc/mw_games/mwl';
|
|
267
299
|
*
|
|
268
|
-
* const runtime = new MwlRuntime(compile('
|
|
300
|
+
* const runtime = new MwlRuntime(compile("[{ tag: 'game', schema: 0.1 }]"), {
|
|
269
301
|
* resolveMap: () => 'Gg,Gg\nGg,Gg',
|
|
270
302
|
* });
|
|
271
303
|
* console.log(runtime.world.turn); // 1
|
|
@@ -274,19 +306,24 @@ export declare function parseTerrain(text: string): {
|
|
|
274
306
|
export declare class MwlRuntime {
|
|
275
307
|
readonly game: MwlCompiledGame;
|
|
276
308
|
readonly world: MwlWorld;
|
|
309
|
+
readonly journal: ActionJournal<MwlRuntimeAction, MwlTraceEvent>;
|
|
277
310
|
private readonly onMessage?;
|
|
278
311
|
private readonly resolveMap?;
|
|
279
312
|
private readonly hooks?;
|
|
280
313
|
private readonly onTrace?;
|
|
281
314
|
private readonly persistence;
|
|
315
|
+
private readonly random;
|
|
282
316
|
private readonly unitTypes;
|
|
283
317
|
private schedule;
|
|
284
318
|
private pendingDialogue;
|
|
285
319
|
private dialogueCounter;
|
|
320
|
+
private traceBatch;
|
|
286
321
|
constructor(game: MwlCompiledGame, options?: MwlRuntimeOptions);
|
|
287
322
|
run(trigger: string): void;
|
|
323
|
+
private runInternal;
|
|
288
324
|
/** Fire one named event through the same filter, claim, and execution path as a trigger. */
|
|
289
325
|
fireEvent(id: string): boolean;
|
|
326
|
+
private fireEventInternal;
|
|
290
327
|
/**
|
|
291
328
|
* Fire the `on=moveto` events for a unit that has just arrived somewhere.
|
|
292
329
|
* The runtime's own `[move]` command calls this, and so does a game whose
|
|
@@ -298,6 +335,7 @@ export declare class MwlRuntime {
|
|
|
298
335
|
* default; pass `once=false` on the event to let it fire every time.
|
|
299
336
|
*/
|
|
300
337
|
fireMoveto(id: string): void;
|
|
338
|
+
private fireMovetoInternal;
|
|
301
339
|
/** A `moveto` event is a story beat: it fires once unless told otherwise. */
|
|
302
340
|
private claimEvent;
|
|
303
341
|
private eventFiltersMatch;
|
|
@@ -332,6 +370,7 @@ export declare class MwlRuntime {
|
|
|
332
370
|
* choice; throws when the referenced event does not exist (content error).
|
|
333
371
|
*/
|
|
334
372
|
answerDialogue(dialogueId: string, choiceIndex: number): boolean;
|
|
373
|
+
private answerDialogueInternal;
|
|
335
374
|
/**
|
|
336
375
|
* Evaluate `[objectives]` now and return the resulting status. A game whose
|
|
337
376
|
* own engine resolved the actions (real movement, combat) calls this after
|
|
@@ -341,6 +380,8 @@ export declare class MwlRuntime {
|
|
|
341
380
|
save(): string;
|
|
342
381
|
snapshot(): string;
|
|
343
382
|
restore(snapshot: string): void;
|
|
383
|
+
private recordAction;
|
|
384
|
+
private trace;
|
|
344
385
|
private loadUnitTypes;
|
|
345
386
|
private loadSchedule;
|
|
346
387
|
private loadInitialContent;
|
|
@@ -479,6 +520,9 @@ export declare class MwlRuntime {
|
|
|
479
520
|
/** Records one side's own result; the scenario status is set by whichever side fired first. */
|
|
480
521
|
private markSideResult;
|
|
481
522
|
private worldView;
|
|
523
|
+
/** Draws from the hook-facing stream and immediately persists its new position onto
|
|
524
|
+
* `world`, so a snapshot taken at any point after a draw resumes the same stream. */
|
|
525
|
+
private drawRandom;
|
|
482
526
|
private emit;
|
|
483
527
|
private attack;
|
|
484
528
|
private nodes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/mwl/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/mwl/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/mwl/runtime.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ActionJournal } from '../core/ActionJournal.js';
|
|
2
|
+
import { Generator } from '../core/Random.js';
|
|
3
|
+
import { decodeSaveEnvelope, encodeSave } from './persistence.js';
|
|
2
4
|
import { evaluateCondition } from './conditions.js';
|
|
3
5
|
import { evaluateExpression } from './expression.js';
|
|
4
6
|
import { booleanAttribute, booleanValue, integerAttribute, numberAttribute, requiredAttribute } from './utils.js';
|
|
@@ -84,7 +86,7 @@ const variableReference = /\$([A-Za-z_][A-Za-z0-9_.]*)/g;
|
|
|
84
86
|
* ```ts
|
|
85
87
|
* import { compile, MwlRuntime } from '@datamoc/mw_games/mwl';
|
|
86
88
|
*
|
|
87
|
-
* const runtime = new MwlRuntime(compile('
|
|
89
|
+
* const runtime = new MwlRuntime(compile("[{ tag: 'game', schema: 0.1 }]"), {
|
|
88
90
|
* resolveMap: () => 'Gg,Gg\nGg,Gg',
|
|
89
91
|
* });
|
|
90
92
|
* console.log(runtime.world.turn); // 1
|
|
@@ -92,10 +94,12 @@ const variableReference = /\$([A-Za-z_][A-Za-z0-9_.]*)/g;
|
|
|
92
94
|
*/
|
|
93
95
|
export class MwlRuntime {
|
|
94
96
|
constructor(game, options = {}) {
|
|
97
|
+
this.journal = new ActionJournal();
|
|
95
98
|
this.unitTypes = new Map();
|
|
96
99
|
this.schedule = [];
|
|
97
100
|
this.pendingDialogue = null;
|
|
98
101
|
this.dialogueCounter = 0;
|
|
102
|
+
this.traceBatch = null;
|
|
99
103
|
this.game = game;
|
|
100
104
|
this.world = options.world ?? createWorld();
|
|
101
105
|
this.onMessage = options.onMessage;
|
|
@@ -103,6 +107,9 @@ export class MwlRuntime {
|
|
|
103
107
|
this.hooks = options.hooks;
|
|
104
108
|
this.onTrace = options.onTrace;
|
|
105
109
|
this.persistence = options.persistence ?? { version: 1 };
|
|
110
|
+
this.random = options.random ?? new Generator();
|
|
111
|
+
if (!options.random && this.world.random)
|
|
112
|
+
this.random.setState(this.world.random);
|
|
106
113
|
this.loadUnitTypes();
|
|
107
114
|
this.loadSchedule();
|
|
108
115
|
this.loadInitialContent();
|
|
@@ -112,6 +119,9 @@ export class MwlRuntime {
|
|
|
112
119
|
this.loadScenarioExtras();
|
|
113
120
|
}
|
|
114
121
|
run(trigger) {
|
|
122
|
+
this.recordAction({ type: 'run', trigger }, () => this.runInternal(trigger));
|
|
123
|
+
}
|
|
124
|
+
runInternal(trigger) {
|
|
115
125
|
for (const event of this.nodes('event')) {
|
|
116
126
|
if ((event.attributes.on ?? event.attributes.trigger) !== trigger)
|
|
117
127
|
continue;
|
|
@@ -125,6 +135,9 @@ export class MwlRuntime {
|
|
|
125
135
|
}
|
|
126
136
|
/** Fire one named event through the same filter, claim, and execution path as a trigger. */
|
|
127
137
|
fireEvent(id) {
|
|
138
|
+
return this.recordAction({ type: 'fire_event', id }, () => this.fireEventInternal(id));
|
|
139
|
+
}
|
|
140
|
+
fireEventInternal(id) {
|
|
128
141
|
const event = this.nodes('event').find((candidate) => candidate.attributes.id === id);
|
|
129
142
|
if (!event || !this.eventFiltersMatch(event) || !this.claimEvent(event))
|
|
130
143
|
return false;
|
|
@@ -143,6 +156,9 @@ export class MwlRuntime {
|
|
|
143
156
|
* default; pass `once=false` on the event to let it fire every time.
|
|
144
157
|
*/
|
|
145
158
|
fireMoveto(id) {
|
|
159
|
+
this.recordAction({ type: 'fire_moveto', unit: id }, () => this.fireMovetoInternal(id));
|
|
160
|
+
}
|
|
161
|
+
fireMovetoInternal(id) {
|
|
146
162
|
const unit = this.world.units[id];
|
|
147
163
|
if (!unit || !unit.alive)
|
|
148
164
|
return;
|
|
@@ -223,13 +239,13 @@ export class MwlRuntime {
|
|
|
223
239
|
executeTracedEvent(event, trigger) {
|
|
224
240
|
const id = event.attributes.id ??
|
|
225
241
|
`${event.attributes.on ?? event.attributes.trigger ?? 'event'}@${event.location?.line ?? 0}`;
|
|
226
|
-
this.
|
|
242
|
+
this.trace({ type: 'event', phase: 'claimed', id, trigger });
|
|
227
243
|
try {
|
|
228
244
|
this.executeEvent(event);
|
|
229
|
-
this.
|
|
245
|
+
this.trace({ type: 'event', phase: 'completed', id, trigger });
|
|
230
246
|
}
|
|
231
247
|
catch (error) {
|
|
232
|
-
this.
|
|
248
|
+
this.trace({ type: 'error', message: String(error), event: id });
|
|
233
249
|
throw error;
|
|
234
250
|
}
|
|
235
251
|
}
|
|
@@ -306,6 +322,9 @@ export class MwlRuntime {
|
|
|
306
322
|
* choice; throws when the referenced event does not exist (content error).
|
|
307
323
|
*/
|
|
308
324
|
answerDialogue(dialogueId, choiceIndex) {
|
|
325
|
+
return this.recordAction({ type: 'answer_dialogue', dialogueId, choiceIndex }, () => this.answerDialogueInternal(dialogueId, choiceIndex));
|
|
326
|
+
}
|
|
327
|
+
answerDialogueInternal(dialogueId, choiceIndex) {
|
|
309
328
|
const pending = this.pendingDialogue;
|
|
310
329
|
if (!pending || pending.id !== dialogueId)
|
|
311
330
|
return false;
|
|
@@ -338,13 +357,18 @@ export class MwlRuntime {
|
|
|
338
357
|
return this.world.status;
|
|
339
358
|
}
|
|
340
359
|
save() {
|
|
341
|
-
|
|
360
|
+
const state = this.hooks?.saveable;
|
|
361
|
+
const hookState = state
|
|
362
|
+
? Object.fromEntries(Object.entries(state).map(([id, hook]) => [id, hook.save()]))
|
|
363
|
+
: undefined;
|
|
364
|
+
return encodeSave(this.world, this.persistence, hookState, this.journal.toJSON());
|
|
342
365
|
}
|
|
343
366
|
snapshot() {
|
|
344
367
|
return JSON.stringify(this.world);
|
|
345
368
|
}
|
|
346
369
|
restore(snapshot) {
|
|
347
|
-
const
|
|
370
|
+
const envelope = decodeSaveEnvelope(snapshot, this.persistence);
|
|
371
|
+
const restored = envelope.world;
|
|
348
372
|
Object.assign(this.world.variables, restored.variables);
|
|
349
373
|
Object.assign(this.world.units, restored.units);
|
|
350
374
|
Object.assign(this.world.sides, restored.sides ?? {});
|
|
@@ -356,6 +380,11 @@ export class MwlRuntime {
|
|
|
356
380
|
this.world.map = restored.map ?? null;
|
|
357
381
|
this.world.timeOfDay = restored.timeOfDay ?? this.schedule[0] ?? '';
|
|
358
382
|
this.world.scheduleIndex = restored.scheduleIndex ?? 0;
|
|
383
|
+
// A save predating this field, or one from a game that never drew hook randomness, has
|
|
384
|
+
// nothing to resume: reseed fresh rather than let a hook's first post-restore draw depend
|
|
385
|
+
// on wherever this runtime's own generator happened to be before the load.
|
|
386
|
+
this.world.random = restored.random;
|
|
387
|
+
this.random.setState(restored.random ?? new Generator().getState());
|
|
359
388
|
// One-shot events stay spent across a load.
|
|
360
389
|
this.world.firedEvents = [...(restored.firedEvents ?? [])];
|
|
361
390
|
// Scenario data a command may have changed, restored wholesale rather than merged: a load
|
|
@@ -372,6 +401,28 @@ export class MwlRuntime {
|
|
|
372
401
|
const dialogueNumber = restored.pendingDialogue?.id.match(/^dialogue-(\d+)$/);
|
|
373
402
|
if (dialogueNumber)
|
|
374
403
|
this.dialogueCounter = Math.max(this.dialogueCounter, Number(dialogueNumber[1]));
|
|
404
|
+
for (const [id, state] of Object.entries(envelope.hookState ?? {}))
|
|
405
|
+
this.hooks?.saveable?.[id]?.restore(state);
|
|
406
|
+
this.journal.replace((envelope.journal ?? []));
|
|
407
|
+
}
|
|
408
|
+
recordAction(action, body) {
|
|
409
|
+
const outer = this.traceBatch === null;
|
|
410
|
+
if (outer)
|
|
411
|
+
this.traceBatch = [];
|
|
412
|
+
try {
|
|
413
|
+
const result = body();
|
|
414
|
+
if (outer)
|
|
415
|
+
this.journal.append(action, this.traceBatch ?? []);
|
|
416
|
+
return result;
|
|
417
|
+
}
|
|
418
|
+
finally {
|
|
419
|
+
if (outer)
|
|
420
|
+
this.traceBatch = null;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
trace(event) {
|
|
424
|
+
this.traceBatch?.push(event);
|
|
425
|
+
this.onTrace?.(event);
|
|
375
426
|
}
|
|
376
427
|
loadUnitTypes() {
|
|
377
428
|
for (const node of this.nodes('unit_type')) {
|
|
@@ -739,7 +790,9 @@ export class MwlRuntime {
|
|
|
739
790
|
}
|
|
740
791
|
cmdSwitch(node) {
|
|
741
792
|
const value = this.variableAt(required(node, 'variable'));
|
|
742
|
-
const selected = node.children.find((child) => child.tag === 'case' &&
|
|
793
|
+
const selected = node.children.find((child) => child.tag === 'case' &&
|
|
794
|
+
child.attributes.equals !== undefined &&
|
|
795
|
+
sameValue(value, child.attributes.equals));
|
|
743
796
|
const fallback = node.children.find((child) => child.tag === 'default');
|
|
744
797
|
this.runBlock((selected ?? fallback)?.children ?? []);
|
|
745
798
|
}
|
|
@@ -908,7 +961,7 @@ export class MwlRuntime {
|
|
|
908
961
|
setVariableAt(path, value) {
|
|
909
962
|
const previous = this.variableAt(path);
|
|
910
963
|
setVariableAtPath(this.world.variables, path, value);
|
|
911
|
-
this.
|
|
964
|
+
this.trace({ type: 'variable', name: path, ...(previous === undefined ? {} : { previous }), value });
|
|
912
965
|
}
|
|
913
966
|
spawnUnit(type, side, x, y, id, hp) {
|
|
914
967
|
const stats = type ? this.unitTypes.get(type) : undefined;
|
|
@@ -1205,8 +1258,19 @@ export class MwlRuntime {
|
|
|
1205
1258
|
units: this.world.units,
|
|
1206
1259
|
sides: this.world.sides,
|
|
1207
1260
|
turn: this.world.turn,
|
|
1261
|
+
random: {
|
|
1262
|
+
float: () => this.drawRandom((random) => random.float()),
|
|
1263
|
+
int: (bound) => this.drawRandom((random) => random.int(bound)),
|
|
1264
|
+
},
|
|
1208
1265
|
};
|
|
1209
1266
|
}
|
|
1267
|
+
/** Draws from the hook-facing stream and immediately persists its new position onto
|
|
1268
|
+
* `world`, so a snapshot taken at any point after a draw resumes the same stream. */
|
|
1269
|
+
drawRandom(draw) {
|
|
1270
|
+
const value = draw(this.random);
|
|
1271
|
+
this.world.random = this.random.getState();
|
|
1272
|
+
return value;
|
|
1273
|
+
}
|
|
1210
1274
|
emit() {
|
|
1211
1275
|
return {
|
|
1212
1276
|
move: (unit, x, y) => this.applyMove(unit, x, y),
|