@debuffjp/core 0.13.2 → 0.14.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/dist/game.d.ts CHANGED
@@ -98,6 +98,7 @@ export declare class Game {
98
98
  private readonly onMotionChange;
99
99
  private lastAlpha;
100
100
  private readonly pluginRegistry;
101
+ private pendingEvents;
101
102
  private readonly scenes;
102
103
  private active;
103
104
  private frameHandle;
@@ -1 +1 @@
1
- {"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../src/game.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../src/game.ts"],"names":[],"mappings":"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"}
package/dist/game.js CHANGED
@@ -65,6 +65,7 @@ export class Game {
65
65
  };
66
66
  lastAlpha = 0;
67
67
  pluginRegistry = new PluginRegistry();
68
+ pendingEvents;
68
69
  scenes = new Map();
69
70
  active;
70
71
  frameHandle = 0;
@@ -254,7 +255,21 @@ export class Game {
254
255
  * Costs one call per listener; nothing listens in production unless you do.
255
256
  */
256
257
  emit(name, detail) {
257
- this.hooks.emit("gameEvent", name, detail);
258
+ // An event emitted from a listener waits until the current one has reached every listener, so all
259
+ // listeners see events in the same order (an "achievement" never lands before the "coin" that caused it).
260
+ if (this.pendingEvents) {
261
+ this.pendingEvents.push([name, detail]);
262
+ return;
263
+ }
264
+ const pending = [[name, detail]];
265
+ this.pendingEvents = pending;
266
+ try {
267
+ for (let i = 0; i < pending.length; i++)
268
+ this.hooks.emit("gameEvent", ...pending[i]);
269
+ }
270
+ finally {
271
+ this.pendingEvents = undefined;
272
+ }
258
273
  }
259
274
  /** Hit-stop: pause simulation for `seconds` (rendering continues). */
260
275
  freeze(seconds) {
@@ -386,10 +401,18 @@ export class Game {
386
401
  const { draw } = this;
387
402
  this.camera.renderAlpha = alpha;
388
403
  draw.begin(this.background, this.width, this.height, this.renderScale);
389
- this.phase = "beforeRender";
390
- this.hooks.emit("beforeRender", draw, alpha);
391
- this.phase = "render";
392
- this.active?.render?.(draw, alpha, this);
404
+ let render = () => {
405
+ this.phase = "beforeRender";
406
+ this.hooks.emit("beforeRender", draw, alpha);
407
+ this.phase = "render";
408
+ this.active?.render?.(draw, alpha, this);
409
+ };
410
+ for (const wrap of this.hooks.list("renderScene")) {
411
+ const inner = render;
412
+ render = () => wrap(draw, inner);
413
+ }
414
+ this.phase = "renderScene";
415
+ render();
393
416
  // afterRender always starts from a clean transform, whatever the scene left behind.
394
417
  draw.reset();
395
418
  this.phase = "afterRender";
package/dist/game.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"game.js","sourceRoot":"","sources":["../src/game.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"game.js","sourceRoot":"","sources":["../src/game.ts"],"names":[],"mappings":"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"}
package/dist/hooks.d.ts CHANGED
@@ -7,6 +7,8 @@ export interface HookArgs {
7
7
  afterUpdate: [dt: number];
8
8
  beforeRender: [draw: Draw, alpha: number];
9
9
  afterRender: [draw: Draw, alpha: number];
10
+ /** Wraps `beforeRender` and the scene's render. The listener must call `render()` exactly once. */
11
+ renderScene: [draw: Draw, render: () => void];
10
12
  sceneChange: [next: Scene, previous: Scene | undefined];
11
13
  /** The loop stopped because game code threw. The error is also rethrown so the console still shows it. */
12
14
  error: [error: unknown, context: GameErrorContext];
@@ -27,7 +29,7 @@ export type HookName = keyof HookArgs;
27
29
  * Typed lifecycle hooks on `game.hooks`. Each method registers a listener and returns an unsubscribe function.
28
30
  *
29
31
  * Order within a step: `beforeUpdate` → camera → `scene.update` → `afterUpdate`.
30
- * Order within a frame: clear → `beforeRender` → `scene.render` → `afterRender`.
32
+ * Order within a frame: clear → `renderScene` wrappers around (`beforeRender` → `scene.render`) → `afterRender`.
31
33
  * `beforeRender`/`afterRender` draw in logical units; `afterRender` starts from a clean transform.
32
34
  * Steps skipped by `freeze()` fire no update hooks.
33
35
  */
@@ -37,6 +39,12 @@ export declare class Hooks {
37
39
  afterUpdate(fn: (dt: number) => void): Unsubscribe;
38
40
  beforeRender(fn: (draw: Draw, alpha: number) => void): Unsubscribe;
39
41
  afterRender(fn: (draw: Draw, alpha: number) => void): Unsubscribe;
42
+ /**
43
+ * Draw the world through something: a render target, `filter()`, a shader. Call `render()` once inside, e.g.
44
+ * `game.hooks.renderScene((draw, render) => filter(draw, [crt], render))`. Later registrations wrap earlier
45
+ * ones. `afterRender` (HUD overlays, dev tools) stays outside, so it isn't post-processed.
46
+ */
47
+ renderScene(fn: (draw: Draw, render: () => void) => void): Unsubscribe;
40
48
  sceneChange(fn: (next: Scene, previous: Scene | undefined) => void): Unsubscribe;
41
49
  /** The game loop stopped on an error (see `game.lastError`). */
42
50
  error(fn: (error: unknown, context: GameErrorContext) => void): Unsubscribe;
@@ -46,6 +54,8 @@ export declare class Hooks {
46
54
  resize(fn: (width: number, height: number) => void): Unsubscribe;
47
55
  /** Number of listeners per hook, for inspection. */
48
56
  counts(): Record<HookName, number>;
57
+ /** @internal Listeners in registration order, for hooks `Game` composes instead of emitting. */
58
+ list<K extends HookName>(name: K): ((...args: HookArgs[K]) => void)[];
49
59
  /** @internal Called by `Game`. */
50
60
  emit<K extends HookName>(name: K, ...args: HookArgs[K]): void;
51
61
  private on;
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,wCAAwC;AACxC,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;IACxD,0GAA0G;IAC1G,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACnD,+DAA+D;IAC/D,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,4DAA4D;IAC5D,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,mGAAmG;IACnG,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;AAEtC;;;;;;;GAOG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS,CASxB;IAEF,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAElD;IAED,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAEjD;IAED,YAAY,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAEjE;IAED,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAEhE;IAED,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,GAAG,WAAW,CAE/E;IAED,gEAAgE;IAChE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,WAAW,CAE1E;IAED,iDAAiD;IACjD,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,WAAW,CAElE;IAED,+GAA+G;IAC/G,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,CAE/D;IAED,oDAAoD;IACpD,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAIjC;IAED,kCAAkC;IAClC,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAE5D;IAED,OAAO,CAAC,EAAE;CAOX"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
package/dist/hooks.js CHANGED
@@ -2,7 +2,7 @@
2
2
  * Typed lifecycle hooks on `game.hooks`. Each method registers a listener and returns an unsubscribe function.
3
3
  *
4
4
  * Order within a step: `beforeUpdate` → camera → `scene.update` → `afterUpdate`.
5
- * Order within a frame: clear → `beforeRender` → `scene.render` → `afterRender`.
5
+ * Order within a frame: clear → `renderScene` wrappers around (`beforeRender` → `scene.render`) → `afterRender`.
6
6
  * `beforeRender`/`afterRender` draw in logical units; `afterRender` starts from a clean transform.
7
7
  * Steps skipped by `freeze()` fire no update hooks.
8
8
  */
@@ -12,6 +12,7 @@ export class Hooks {
12
12
  afterUpdate: new Set(),
13
13
  beforeRender: new Set(),
14
14
  afterRender: new Set(),
15
+ renderScene: new Set(),
15
16
  sceneChange: new Set(),
16
17
  error: new Set(),
17
18
  gameEvent: new Set(),
@@ -29,6 +30,14 @@ export class Hooks {
29
30
  afterRender(fn) {
30
31
  return this.on("afterRender", fn);
31
32
  }
33
+ /**
34
+ * Draw the world through something: a render target, `filter()`, a shader. Call `render()` once inside, e.g.
35
+ * `game.hooks.renderScene((draw, render) => filter(draw, [crt], render))`. Later registrations wrap earlier
36
+ * ones. `afterRender` (HUD overlays, dev tools) stays outside, so it isn't post-processed.
37
+ */
38
+ renderScene(fn) {
39
+ return this.on("renderScene", fn);
40
+ }
32
41
  sceneChange(fn) {
33
42
  return this.on("sceneChange", fn);
34
43
  }
@@ -51,6 +60,10 @@ export class Hooks {
51
60
  out[name] = this.listeners[name].size;
52
61
  return out;
53
62
  }
63
+ /** @internal Listeners in registration order, for hooks `Game` composes instead of emitting. */
64
+ list(name) {
65
+ return [...this.listeners[name]];
66
+ }
54
67
  /** @internal Called by `Game`. */
55
68
  emit(name, ...args) {
56
69
  for (const fn of this.listeners[name])
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AA8BA;;;;;;;GAOG;AACH,MAAM,OAAO,KAAK;IACC,SAAS,GAA6D;QACrF,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,MAAM,EAAE,IAAI,GAAG,EAAE;KAClB,CAAC;IAEF,YAAY,CAAC,EAAwB;QACnC,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,EAAwB;QAClC,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,EAAuC;QAClD,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,EAAuC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,EAAsD;QAChE,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,EAAuD;QAC3D,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,iDAAiD;IACjD,SAAS,CAAC,EAA2C;QACnD,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,+GAA+G;IAC/G,MAAM,CAAC,EAA2C;QAChD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,oDAAoD;IACpD,MAAM;QACJ,MAAM,GAAG,GAAG,EAA8B,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAe;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACpG,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAqB,IAAO,EAAE,GAAG,IAAiB;QACpD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;IAEO,EAAE,CAAqB,IAAO,EAAE,EAAkC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAgCA;;;;;;;GAOG;AACH,MAAM,OAAO,KAAK;IACC,SAAS,GAA6D;QACrF,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,YAAY,EAAE,IAAI,GAAG,EAAE;QACvB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,SAAS,EAAE,IAAI,GAAG,EAAE;QACpB,MAAM,EAAE,IAAI,GAAG,EAAE;KAClB,CAAC;IAEF,YAAY,CAAC,EAAwB;QACnC,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,EAAwB;QAClC,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,EAAuC;QAClD,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,EAAuC;QACjD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,EAA4C;QACtD,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,WAAW,CAAC,EAAsD;QAChE,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,EAAuD;QAC3D,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,iDAAiD;IACjD,SAAS,CAAC,EAA2C;QACnD,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,+GAA+G;IAC/G,MAAM,CAAC,EAA2C;QAChD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,oDAAoD;IACpD,MAAM;QACJ,MAAM,GAAG,GAAG,EAA8B,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAe;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACpG,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gGAAgG;IAChG,IAAI,CAAqB,IAAO;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAqB,IAAO,EAAE,GAAG,IAAiB;QACpD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;IAEO,EAAE,CAAqB,IAAO,EAAE,EAAkC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { Game, type GameOptions } from "./game.js";
2
+ /**
3
+ * A `Game` for unit tests under happy-dom or jsdom, which have no WebGL2 or 2D canvas. Drawing goes to a
4
+ * no-op Canvas 2D context, so hooks, scenes, params, inspect and plugins all run; nothing is rendered.
5
+ * Time only moves when you call `game.step()`.
6
+ *
7
+ * ```ts
8
+ * import { createTestGame } from "@debuffjp/core/testing";
9
+ * const game = createTestGame();
10
+ * game.use(myPlugin());
11
+ * game.emit("coin");
12
+ * expect(game.inspect.snapshot()["my-plugin"]).toEqual({ coins: 1 });
13
+ * ```
14
+ */
15
+ export declare function createTestGame(options?: Partial<GameOptions>): Game;
16
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,IAAI,CAYvE"}
@@ -0,0 +1,26 @@
1
+ import { Game } from "./game.js";
2
+ /**
3
+ * A `Game` for unit tests under happy-dom or jsdom, which have no WebGL2 or 2D canvas. Drawing goes to a
4
+ * no-op Canvas 2D context, so hooks, scenes, params, inspect and plugins all run; nothing is rendered.
5
+ * Time only moves when you call `game.step()`.
6
+ *
7
+ * ```ts
8
+ * import { createTestGame } from "@debuffjp/core/testing";
9
+ * const game = createTestGame();
10
+ * game.use(myPlugin());
11
+ * game.emit("coin");
12
+ * expect(game.inspect.snapshot()["my-plugin"]).toEqual({ coins: 1 });
13
+ * ```
14
+ */
15
+ export function createTestGame(options = {}) {
16
+ const canvas = options.canvas ?? document.createElement("canvas");
17
+ if (!canvas.isConnected)
18
+ document.body.append(canvas);
19
+ const noop = () => { };
20
+ const ctx = new Proxy({ canvas, fillStyle: "", globalAlpha: 1, globalCompositeOperation: "source-over" }, {
21
+ get: (target, key) => (key in target ? target[key] : noop),
22
+ });
23
+ canvas.getContext = ((type) => (type === "2d" ? ctx : null));
24
+ return new Game({ width: 100, height: 100, scale: "none", ...options, canvas });
25
+ }
26
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAoB,MAAM,WAAW,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,OAAO,GAAyB,EAAE;IAC/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM,CAAC,WAAW;QAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,KAAK,CACnB,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,wBAAwB,EAAE,aAAa,EAAkC,EAClH;QACE,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KAC3D,CACF,CAAC;IACF,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAA6B,CAAC;IACjG,OAAO,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAClF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@debuffjp/core",
3
- "version": "0.13.2",
3
+ "version": "0.14.0",
4
4
  "description": "Game loop, fixed-step clock, scenes, camera, sprites and typed creative parameters for debuff",
5
5
  "keywords": [
6
6
  "game",
@@ -33,6 +33,10 @@
33
33
  ".": {
34
34
  "types": "./dist/index.d.ts",
35
35
  "default": "./dist/index.js"
36
+ },
37
+ "./testing": {
38
+ "types": "./dist/testing.d.ts",
39
+ "default": "./dist/testing.js"
36
40
  }
37
41
  },
38
42
  "files": [
@@ -46,6 +50,6 @@
46
50
  "access": "public"
47
51
  },
48
52
  "dependencies": {
49
- "spryte": "0.4.1"
53
+ "spryte": "0.4.3"
50
54
  }
51
55
  }
@@ -1,48 +0,0 @@
1
- /** 2D affine matrix `[a, b, c, d, e, f]`: x' = a·x + c·y + e, y' = b·x + d·y + f (Canvas order). */
2
- export type Matrix = [number, number, number, number, number, number];
3
- export type BlendMode = "normal" | "add";
4
- export interface ClipRect {
5
- x: number;
6
- y: number;
7
- w: number;
8
- h: number;
9
- }
10
- /** Raw access for advanced users. The backends are not interchangeable at this level. */
11
- export type RawContext = {
12
- kind: "webgl2";
13
- gl: WebGL2RenderingContext;
14
- } | {
15
- kind: "2d";
16
- ctx: CanvasRenderingContext2D;
17
- };
18
- /** Image sources the renderer can draw. Textures are cached per source object. */
19
- export type TextureSource = HTMLImageElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap;
20
- /**
21
- * What a rendering backend implements. Everything is expressed as quads: a transform that maps the
22
- * unit square onto logical space, an optional source rectangle, and an RGBA colour (tint).
23
- * @internal
24
- */
25
- export interface Backend {
26
- readonly kind: "webgl2" | "2d";
27
- readonly raw: RawContext;
28
- /** GPU draw calls submitted so far this frame, where the backend batches (WebGL2). */
29
- readonly drawCalls?: number;
30
- /** Begin a frame: clear to `clear` (0xRRGGBBAA) at the given logical size and backing scale. */
31
- begin(clear: number, width: number, height: number, scale: number): void;
32
- /**
33
- * Draw the unit square transformed by `m`. `src` null draws solid `color`.
34
- * `sx, sy, sw, sh` is the source rect in source pixels (ignored when `src` is null). `flash` (0..1) mixes the texture toward white.
35
- * `smooth` selects linear filtering for this source.
36
- */
37
- quad(m: Matrix, src: TextureSource | null, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean): void;
38
- setBlend(mode: BlendMode): void;
39
- /** Restrict drawing to a rectangle in backing-store pixels (top-left origin), or remove the clip. */
40
- setClip(rect: ClipRect | null): void;
41
- /** Submit everything queued this frame. */
42
- end(): void;
43
- resize(backingWidth: number, backingHeight: number): void;
44
- /** Drop cached GPU data for a source whose pixels changed. */
45
- invalidate(src: TextureSource): void;
46
- dispose(): void;
47
- }
48
- //# sourceMappingURL=backend.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/render/backend.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEzC,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,sBAAsB,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAExH,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,GAAG,WAAW,CAAC;AAEjG;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,sFAAsF;IACtF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,gGAAgG;IAChG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzE;;;;OAIG;IACH,IAAI,CACF,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,GAAG,IAAI,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,GACd,IAAI,CAAC;IACR,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,qGAAqG;IACrG,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,2CAA2C;IAC3C,GAAG,IAAI,IAAI,CAAC;IACZ,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,8DAA8D;IAC9D,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/render/backend.ts"],"names":[],"mappings":""}
@@ -1,55 +0,0 @@
1
- import type { Frame } from "./draw.js";
2
- export interface BitmapFontOptions {
3
- /** One frame per glyph, in the order of `chars`: usually `assets.frames("font")` from a `font@WxH.png` grid. */
4
- frames: readonly Frame[];
5
- /** The characters the frames hold, in order. */
6
- chars: string;
7
- /**
8
- * Advance per glyph in pixels. Default: measured from each glyph's rightmost opaque column, so a
9
- * grid drawn in Aseprite becomes a proportional font. Pass a number for a monospaced font.
10
- */
11
- widths?: readonly number[] | number;
12
- /** Pixels between glyphs. Default 1. */
13
- spacing?: number;
14
- /** Advance for a space (and any glyph that measures empty). Default a third of the cell height, rounded. */
15
- spaceWidth?: number;
16
- /** Pixels from one line's top to the next. Default the cell height + 1. */
17
- lineHeight?: number;
18
- /** Drawn for characters the font lacks. Default "?" if present, else nothing. */
19
- fallback?: string;
20
- }
21
- export interface Glyph {
22
- frame: Frame;
23
- /** Pixels to advance after drawing, before spacing. */
24
- advance: number;
25
- }
26
- /**
27
- * A pixel font from a sprite sheet. Pass it as `font` to `draw.text` and `draw.measure`: glyphs land
28
- * on whole pixels, so it stays crisp at any integer scale.
29
- *
30
- * ```ts
31
- * // assets/font@6x9.png: glyphs on a 6×9 grid, exported from Aseprite
32
- * const font = new BitmapFont({ frames: assets.frames("font"), chars: BitmapFont.ASCII });
33
- * draw.text("coins 3", 4, 4, { font, color: "#fbbf24" });
34
- * ```
35
- */
36
- export declare class BitmapFont {
37
- /** Printable ASCII from space to "~", the order most font sheets use. */
38
- static readonly ASCII: string;
39
- /** Cell height in pixels. */
40
- readonly height: number;
41
- readonly lineHeight: number;
42
- readonly spacing: number;
43
- private readonly glyphs;
44
- private readonly fallback;
45
- constructor(o: BitmapFontOptions);
46
- glyph(ch: string): Glyph | undefined;
47
- /** Size of `text` in pixels. Lines split on "\n". */
48
- measure(text: string): {
49
- w: number;
50
- h: number;
51
- };
52
- /** Width of one line, without trailing spacing. */
53
- lineWidth(line: string): number;
54
- }
55
- //# sourceMappingURL=bitmap-font.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitmap-font.d.ts","sourceRoot":"","sources":["../../src/render/bitmap-font.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,gHAAgH;IAChH,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAAC;IACpC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4GAA4G;IAC5G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,qBAAa,UAAU;IACrB,yEAAyE;IACzE,MAAM,CAAC,QAAQ,CAAC,KAAK,SAA8E;IAEnG,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,YAAY,CAAC,EAAE,iBAAiB,EAiB/B;IAED,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEnC;IAED,qDAAqD;IACrD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAM9C;IAED,mDAAmD;IACnD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU9B;CACF"}
@@ -1,103 +0,0 @@
1
- /**
2
- * A pixel font from a sprite sheet. Pass it as `font` to `draw.text` and `draw.measure`: glyphs land
3
- * on whole pixels, so it stays crisp at any integer scale.
4
- *
5
- * ```ts
6
- * // assets/font@6x9.png: glyphs on a 6×9 grid, exported from Aseprite
7
- * const font = new BitmapFont({ frames: assets.frames("font"), chars: BitmapFont.ASCII });
8
- * draw.text("coins 3", 4, 4, { font, color: "#fbbf24" });
9
- * ```
10
- */
11
- export class BitmapFont {
12
- /** Printable ASCII from space to "~", the order most font sheets use. */
13
- static ASCII = Array.from({ length: 95 }, (_, i) => String.fromCharCode(32 + i)).join("");
14
- /** Cell height in pixels. */
15
- height;
16
- lineHeight;
17
- spacing;
18
- glyphs = new Map();
19
- fallback;
20
- constructor(o) {
21
- const first = o.frames[0];
22
- if (!first)
23
- throw new Error("BitmapFont needs at least one frame");
24
- const chars = [...o.chars];
25
- if (chars.length > o.frames.length)
26
- throw new Error(`BitmapFont has ${chars.length} chars but only ${o.frames.length} frames; check the grid size in the file name`);
27
- this.height = first.h;
28
- this.lineHeight = o.lineHeight ?? first.h + 1;
29
- this.spacing = o.spacing ?? 1;
30
- const space = o.spaceWidth ?? Math.max(1, Math.round(first.h / 3));
31
- const measured = o.widths === undefined ? measureWidths(o.frames.slice(0, chars.length)) : undefined;
32
- chars.forEach((ch, i) => {
33
- const frame = o.frames[i];
34
- const w = typeof o.widths === "number" ? o.widths : (o.widths?.[i] ?? measured?.[i] ?? frame.w);
35
- this.glyphs.set(ch, { frame, advance: w > 0 ? w : space });
36
- });
37
- this.fallback = this.glyphs.get(o.fallback ?? "?");
38
- }
39
- glyph(ch) {
40
- return this.glyphs.get(ch) ?? this.fallback;
41
- }
42
- /** Size of `text` in pixels. Lines split on "\n". */
43
- measure(text) {
44
- if (!text)
45
- return { w: 0, h: 0 };
46
- const lines = text.split("\n");
47
- let w = 0;
48
- for (const line of lines)
49
- w = Math.max(w, this.lineWidth(line));
50
- return { w, h: (lines.length - 1) * this.lineHeight + this.height };
51
- }
52
- /** Width of one line, without trailing spacing. */
53
- lineWidth(line) {
54
- let w = 0;
55
- let n = 0;
56
- for (const ch of line) {
57
- const g = this.glyph(ch);
58
- if (!g)
59
- continue;
60
- w += g.advance;
61
- n++;
62
- }
63
- return n ? w + (n - 1) * this.spacing : 0;
64
- }
65
- }
66
- /** Rightmost opaque column + 1 for each frame; 0 for empty ones. Falls back to the frame width without a 2D canvas. */
67
- function measureWidths(frames) {
68
- const cache = new Map();
69
- return frames.map((f) => {
70
- let img = cache.get(f.image);
71
- if (img === undefined) {
72
- img = readPixels(f.image);
73
- cache.set(f.image, img);
74
- }
75
- if (!img)
76
- return f.w;
77
- for (let x = f.w - 1; x >= 0; x--)
78
- for (let y = 0; y < f.h; y++)
79
- if ((img.data[((f.y + y) * img.width + f.x + x) * 4 + 3] ?? 0) > 0)
80
- return x + 1;
81
- return 0;
82
- });
83
- }
84
- function readPixels(src) {
85
- const w = "naturalWidth" in src ? src.naturalWidth : src.width;
86
- const h = "naturalHeight" in src ? src.naturalHeight : src.height;
87
- if (!w || !h)
88
- return null;
89
- try {
90
- const canvas = typeof OffscreenCanvas !== "undefined" ? new OffscreenCanvas(w, h) : document.createElement("canvas");
91
- canvas.width = w;
92
- canvas.height = h;
93
- const ctx = canvas.getContext("2d");
94
- if (!ctx)
95
- return null;
96
- ctx.drawImage(src, 0, 0);
97
- return { data: ctx.getImageData(0, 0, w, h).data, width: w };
98
- }
99
- catch {
100
- return null;
101
- }
102
- }
103
- //# sourceMappingURL=bitmap-font.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitmap-font.js","sourceRoot":"","sources":["../../src/render/bitmap-font.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import type { Backend, BlendMode, ClipRect, Matrix, RawContext, TextureSource } from "./backend.js";
2
- /**
3
- * Canvas 2D fallback for the `draw` API. Same output for solid shapes, sprites, text and alpha.
4
- * Canvas 2D has no per-draw tint, so tinted textures (text, bitmap fonts, `tint`) go through a scratch
5
- * canvas: slower than WebGL2, but only when a tint other than white is asked for.
6
- */
7
- export declare class Canvas2DBackend implements Backend {
8
- readonly kind: "2d";
9
- readonly raw: RawContext;
10
- private readonly ctx;
11
- private scale;
12
- private smoothing;
13
- private scratch;
14
- private clipped;
15
- private blendMode;
16
- constructor(ctx: CanvasRenderingContext2D);
17
- begin(clear: number, width: number, height: number, scale: number): void;
18
- quad(m: Matrix, src: TextureSource | null, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean): void;
19
- setBlend(mode: BlendMode): void;
20
- setClip(rect: ClipRect | null): void;
21
- end(): void;
22
- resize(): void;
23
- invalidate(): void;
24
- dispose(): void;
25
- /** The source region multiplied by `color`'s RGB, keeping the source's alpha. */
26
- private tinted;
27
- private scratchCanvas;
28
- private whiteSilhouette;
29
- }
30
- //# sourceMappingURL=canvas2d.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canvas2d.d.ts","sourceRoot":"","sources":["../../src/render/canvas2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGpG;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;IAC9B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA2B;IAC/C,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAkD;IACjE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAuB;IAExC,YAAY,GAAG,EAAE,wBAAwB,EAGxC;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQvE;IAED,IAAI,CACF,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,GAAG,IAAI,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,GACd,IAAI,CAqBN;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAG9B;IAED,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAenC;IAED,GAAG,IAAI,IAAI,CAIV;IAED,MAAM,IAAI,IAAI,CAGb;IAED,UAAU,IAAI,IAAI,CAEjB;IAED,OAAO,IAAI,IAAI,CAAG;IAElB,iFAAiF;IACjF,OAAO,CAAC,MAAM;IAiBd,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,eAAe;CAYxB"}