@debuffjp/core 0.9.5 → 0.12.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/camera.d.ts CHANGED
@@ -41,8 +41,9 @@ export declare class Camera {
41
41
  private offsetX;
42
42
  private offsetY;
43
43
  private target;
44
- readonly width: number;
45
- readonly height: number;
44
+ /** The view size in logical units. The game keeps it equal to its own size (it changes in `scale: "expand"`). */
45
+ width: number;
46
+ height: number;
46
47
  bounds: CameraOptions["bounds"];
47
48
  constructor(options: CameraOptions);
48
49
  follow(target: {
@@ -1 +1 @@
1
- {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED;yDACyD;AACzD,qBAAa,MAAM;IACjB,CAAC,SAAK;IACN,CAAC,SAAK;IACN,IAAI,SAAK;IACT,+EAA+E;IAC/E,IAAI,SAAK;IACT,gFAAgF;IAChF,QAAQ;QAAK,CAAC;QAAK,CAAC;MAAM;IAC1B,8CAA8C;IAC9C,cAAc,SAAK;IACnB,8BAA8B;IAC9B,UAAU,SAAO;IACjB,oFAAoF;IACpF,WAAW,SAAK;IAEhB;;;OAGG;IACH,WAAW,SAAK;IAEhB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAuC;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEhC,YAAY,OAAO,EAAE,aAAa,EAIjC;IAED,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAAE,IAAI,UAAO,GAAG,IAAI,CAStE;IAED,uEAAuE;IACvE,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1B;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBvC;IAED;;;2GAGuG;IACvG,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAOvD;IAED,oEAAoE;IACpE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAKxD;IAED,uEAAuE;IACvE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIxD;IAED,OAAO,CAAC,KAAK;CAQd"}
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClE;AAED;yDACyD;AACzD,qBAAa,MAAM;IACjB,CAAC,SAAK;IACN,CAAC,SAAK;IACN,IAAI,SAAK;IACT,+EAA+E;IAC/E,IAAI,SAAK;IACT,gFAAgF;IAChF,QAAQ;QAAK,CAAC;QAAK,CAAC;MAAM;IAC1B,8CAA8C;IAC9C,cAAc,SAAK;IACnB,8BAA8B;IAC9B,UAAU,SAAO;IACjB,oFAAoF;IACpF,WAAW,SAAK;IAEhB;;;OAGG;IACH,WAAW,SAAK;IAEhB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAuC;IACrD,iHAAiH;IACjH,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IAEhC,YAAY,OAAO,EAAE,aAAa,EAIjC;IAED,MAAM,CAAC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,EAAE,IAAI,UAAO,GAAG,IAAI,CAStE;IAED,uEAAuE;IACvE,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1B;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAiBvC;IAED;;;2GAGuG;IACvG,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAOvD;IAED,oEAAoE;IACpE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAKxD;IAED,uEAAuE;IACvE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAIxD;IAED,OAAO,CAAC,KAAK;CAQd"}
package/dist/camera.js CHANGED
@@ -25,6 +25,7 @@ export class Camera {
25
25
  offsetX = 0;
26
26
  offsetY = 0;
27
27
  target;
28
+ /** The view size in logical units. The game keeps it equal to its own size (it changes in `scale: "expand"`). */
28
29
  width;
29
30
  height;
30
31
  bounds;
@@ -1 +1 @@
1
- {"version":3,"file":"camera.js","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../src/camera.ts"],"names":[],"mappings":"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"}
package/dist/game.d.ts CHANGED
@@ -13,12 +13,15 @@ import { FrameStats } from "./stats.js";
13
13
  * How the logical resolution maps onto the page:
14
14
  * - `fit`: scale to fill the container, preserving aspect ratio (letterboxed).
15
15
  * - `integer`: like `fit` but only whole-number scales, for crisp pixel art.
16
+ * - `expand`: like `fit`, but instead of letterboxing, the logical size grows along the spare axis to fill the
17
+ * container. `width`/`height` are the minimum; `game.width`/`game.height` change on resize (see `hooks.resize`),
18
+ * so lay out from them each frame. For responsive games: portrait on phones, landscape on desktop.
16
19
  * - `none`: canvas stays at its logical size in CSS pixels.
17
20
  */
18
- export type ScaleMode = "fit" | "integer" | "none";
21
+ export type ScaleMode = "fit" | "integer" | "expand" | "none";
19
22
  export interface GameOptions {
20
23
  canvas: HTMLCanvasElement;
21
- /** Logical resolution. Game code always works in these units. */
24
+ /** Logical resolution. Game code always works in these units. With `scale: "expand"` it's the minimum size. */
22
25
  width: number;
23
26
  height: number;
24
27
  /** Default "fit". */
@@ -57,8 +60,10 @@ export declare class Game {
57
60
  readonly canvas: HTMLCanvasElement;
58
61
  /** Immediate-mode drawing API, passed to `Scene.render` and render hooks. */
59
62
  readonly draw: Draw;
60
- readonly width: number;
61
- readonly height: number;
63
+ /** Logical width. Fixed, except in `scale: "expand"`, where it grows to fill the container (never below the minimum). */
64
+ get width(): number;
65
+ /** Logical height. Fixed, except in `scale: "expand"` (see `width`). */
66
+ get height(): number;
62
67
  readonly clock: FixedClock;
63
68
  readonly random: Random;
64
69
  readonly params: ParamRegistry;
@@ -83,6 +88,10 @@ export declare class Game {
83
88
  pauseWhenHidden: boolean;
84
89
  /** Current backing-store pixels per logical unit (CSS scale × devicePixelRatio). */
85
90
  renderScale: number;
91
+ private logicalW;
92
+ private logicalH;
93
+ private readonly minW;
94
+ private readonly minH;
86
95
  private freezeTime;
87
96
  private motionReduced;
88
97
  private motionQuery;
@@ -121,6 +130,7 @@ export declare class Game {
121
130
  get scene(): Scene | undefined;
122
131
  get isRunning(): boolean;
123
132
  add(scene: Scene): this;
133
+ private sceneList;
124
134
  go(id: string): void;
125
135
  start(): void;
126
136
  stop(): void;
@@ -146,6 +156,8 @@ export declare class Game {
146
156
  /** Recompute CSS size and backing-store resolution. Called automatically on container
147
157
  * resize and devicePixelRatio changes. */
148
158
  resize(): void;
159
+ /** Change the logical size (expand mode): the camera follows, staying centred if it was. */
160
+ private setLogical;
149
161
  /** Convert client (event) coordinates to logical game coordinates. Bound, so it can be passed around (e.g. to `Input`). */
150
162
  readonly toLogical: (clientX: number, clientY: number) => {
151
163
  x: number;
@@ -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
@@ -16,8 +16,14 @@ export class Game {
16
16
  canvas;
17
17
  /** Immediate-mode drawing API, passed to `Scene.render` and render hooks. */
18
18
  draw;
19
- width;
20
- height;
19
+ /** Logical width. Fixed, except in `scale: "expand"`, where it grows to fill the container (never below the minimum). */
20
+ get width() {
21
+ return this.logicalW;
22
+ }
23
+ /** Logical height. Fixed, except in `scale: "expand"` (see `width`). */
24
+ get height() {
25
+ return this.logicalH;
26
+ }
21
27
  clock;
22
28
  random;
23
29
  params = new ParamRegistry();
@@ -47,6 +53,10 @@ export class Game {
47
53
  pauseWhenHidden = true;
48
54
  /** Current backing-store pixels per logical unit (CSS scale × devicePixelRatio). */
49
55
  renderScale = 1;
56
+ logicalW;
57
+ logicalH;
58
+ minW;
59
+ minH;
50
60
  freezeTime = 0;
51
61
  motionReduced = false;
52
62
  motionQuery;
@@ -80,8 +90,8 @@ export class Game {
80
90
  };
81
91
  constructor(options) {
82
92
  this.canvas = options.canvas;
83
- this.width = options.width;
84
- this.height = options.height;
93
+ this.minW = this.logicalW = options.width;
94
+ this.minH = this.logicalH = options.height;
85
95
  this.scaleMode = options.scale ?? "fit";
86
96
  this.pixelArt = options.pixelArt ?? false;
87
97
  this.clock = new FixedClock(options.clock);
@@ -116,7 +126,7 @@ export class Game {
116
126
  if (typeof document !== "undefined")
117
127
  document.addEventListener("visibilitychange", this.onVisibility);
118
128
  const splash = options.splash ?? true;
119
- if (splash && !isDev() && typeof addEventListener !== "undefined") {
129
+ if (splash && !(typeof import.meta.env !== "undefined" && import.meta.env.DEV === true) && typeof addEventListener !== "undefined") {
120
130
  this.splashTotal = this.splashLeft = (splash === true ? undefined : splash.duration) ?? 1.6;
121
131
  addEventListener("keydown", this.onSplashSkip);
122
132
  // A click or tap only skips: no links out, so games are safe on portals (Poki, CrazyGames) that forbid them.
@@ -167,12 +177,27 @@ export class Game {
167
177
  if (this.scenes.has(scene.id))
168
178
  throw new Error(`Scene "${scene.id}" already added`);
169
179
  this.scenes.set(scene.id, scene);
180
+ // A game with scenes that never starts draws nothing and reports nothing; say so in dev.
181
+ // Dev checks are written inline (not via a helper) so bundlers fold them to false and drop the code.
182
+ if (typeof import.meta.env !== "undefined" &&
183
+ import.meta.env.DEV === true &&
184
+ this.scenes.size === 1 &&
185
+ typeof setTimeout !== "undefined") {
186
+ setTimeout(() => {
187
+ // Tools that drive the game with step() never start it, but they do advance the clock.
188
+ if (!this.wanted && this.clock.tick === 0)
189
+ console.warn(`[debuff] Scenes were added (${this.sceneList()}) but game.start() was never called, so nothing runs.`);
190
+ }, 2000);
191
+ }
170
192
  return this;
171
193
  }
194
+ sceneList() {
195
+ return [...this.scenes.keys()].join(", ") || "none";
196
+ }
172
197
  go(id) {
173
198
  const next = this.scenes.get(id);
174
199
  if (!next)
175
- throw new Error(`Unknown scene "${id}". Added: ${[...this.scenes.keys()].join(", ") || "none"}`);
200
+ throw new Error(`Unknown scene "${id}". Added: ${this.sceneList()}`);
176
201
  const previous = this.active;
177
202
  previous?.exit?.(this);
178
203
  this.active = next;
@@ -180,6 +205,11 @@ export class Game {
180
205
  this.hooks.emit("sceneChange", next, previous);
181
206
  }
182
207
  start() {
208
+ if (typeof import.meta.env !== "undefined" && import.meta.env.DEV === true && !this.active) {
209
+ console.warn(this.scenes.size
210
+ ? `[debuff] game.start() with no active scene, so only the background draws. Call game.go(id) first. Added: ${this.sceneList()}`
211
+ : "[debuff] game.start() with no scenes. Add one with game.add({ id, update, render }) and pick it with game.go(id).");
212
+ }
183
213
  this.lastError = undefined;
184
214
  this.wanted = true;
185
215
  if (typeof document === "undefined" || !document.hidden || !this.pauseWhenHidden)
@@ -249,7 +279,9 @@ export class Game {
249
279
  if (this.scaleMode !== "none" && this.container) {
250
280
  const { clientWidth: cw, clientHeight: ch } = this.container;
251
281
  if (cw > 0 && ch > 0) {
252
- css = Math.min(cw / this.width, ch / this.height);
282
+ css = Math.min(cw / this.minW, ch / this.minH);
283
+ if (this.scaleMode === "expand")
284
+ this.setLogical(Math.max(this.minW, Math.round(cw / css)), Math.max(this.minH, Math.round(ch / css)));
253
285
  // Integer mode snaps in device pixels so each logical pixel maps to whole device pixels.
254
286
  if (this.scaleMode === "integer")
255
287
  css = Math.max(1, Math.floor(css * dpr)) / dpr;
@@ -271,6 +303,21 @@ export class Game {
271
303
  if (!this.running)
272
304
  this.render(0);
273
305
  }
306
+ /** Change the logical size (expand mode): the camera follows, staying centred if it was. */
307
+ setLogical(w, h) {
308
+ if (w === this.logicalW && h === this.logicalH)
309
+ return;
310
+ const centred = this.camera.x === this.logicalW / 2 && this.camera.y === this.logicalH / 2;
311
+ this.logicalW = w;
312
+ this.logicalH = h;
313
+ this.camera.width = w;
314
+ this.camera.height = h;
315
+ if (centred) {
316
+ this.camera.x = w / 2;
317
+ this.camera.y = h / 2;
318
+ }
319
+ this.hooks.emit("resize", w, h);
320
+ }
274
321
  /** Convert client (event) coordinates to logical game coordinates. Bound, so it can be passed around (e.g. to `Input`). */
275
322
  toLogical = (clientX, clientY) => {
276
323
  const rect = this.canvas.getBoundingClientRect();
@@ -351,8 +398,4 @@ export class Game {
351
398
  this.phase = "idle";
352
399
  }
353
400
  }
354
- /** True under a bundler's dev mode (Vite: `import.meta.env.DEV`); false elsewhere. */
355
- function isDev() {
356
- return import.meta.env?.DEV === true;
357
- }
358
401
  //# sourceMappingURL=game.js.map
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
@@ -12,6 +12,8 @@ export interface HookArgs {
12
12
  error: [error: unknown, context: GameErrorContext];
13
13
  /** Something meaningful happened in the game (`game.emit`). */
14
14
  gameEvent: [name: string, detail: unknown];
15
+ /** The logical size changed (only in `scale: "expand"`). */
16
+ resize: [width: number, height: number];
15
17
  }
16
18
  /** Where a loop error happened. */
17
19
  export interface GameErrorContext {
@@ -40,6 +42,8 @@ export declare class Hooks {
40
42
  error(fn: (error: unknown, context: GameErrorContext) => void): Unsubscribe;
41
43
  /** The game called `game.emit(name, detail)`. */
42
44
  gameEvent(fn: (name: string, detail: unknown) => void): Unsubscribe;
45
+ /** The logical size changed: `scale: "expand"` grew or shrank the game to fit its container. Lay out again. */
46
+ resize(fn: (width: number, height: number) => void): Unsubscribe;
43
47
  /** Number of listeners per hook, for inspection. */
44
48
  counts(): Record<HookName, number>;
45
49
  /** @internal Called by `Game`. */
@@ -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;CAC5C;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,CAQxB;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,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":"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"}
package/dist/hooks.js CHANGED
@@ -15,6 +15,7 @@ export class Hooks {
15
15
  sceneChange: new Set(),
16
16
  error: new Set(),
17
17
  gameEvent: new Set(),
18
+ resize: new Set(),
18
19
  };
19
20
  beforeUpdate(fn) {
20
21
  return this.on("beforeUpdate", fn);
@@ -39,6 +40,10 @@ export class Hooks {
39
40
  gameEvent(fn) {
40
41
  return this.on("gameEvent", fn);
41
42
  }
43
+ /** The logical size changed: `scale: "expand"` grew or shrank the game to fit its container. Lay out again. */
44
+ resize(fn) {
45
+ return this.on("resize", fn);
46
+ }
42
47
  /** Number of listeners per hook, for inspection. */
43
48
  counts() {
44
49
  const out = {};
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AA4BA;;;;;;;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;KACrB,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,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":"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"}
package/dist/index.d.ts CHANGED
@@ -13,5 +13,5 @@ export type { Scene } from "./scene.js";
13
13
  export type { SplashOptions } from "./splash.js";
14
14
  export { type AnimationClip, type Origin, originOffset, Sprite, type SpriteOptions, sliceGrid } from "./sprite.js";
15
15
  export { FrameStats } from "./stats.js";
16
- export { Storage } from "./storage.js";
16
+ export { Storage, type StorageOptions } from "./storage.js";
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,IAAI,EACJ,KAAK,KAAK,EACV,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,MAAM,GACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,UAAU,EACV,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,IAAI,EACJ,KAAK,KAAK,EACV,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,MAAM,GACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,UAAU,EACV,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EACL,UAAU,EAKV,IAAI,EAQJ,MAAM,GACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAA0B,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,IAAI,EAAoC,MAAM,WAAW,CAAC;AACnE,OAAO,EAAuD,KAAK,EAAoB,MAAM,YAAY,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAKL,UAAU,EACV,aAAa,GAKd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAmC,YAAY,EAAE,MAAM,EAAsB,SAAS,EAAE,MAAM,aAAa,CAAC;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EACL,UAAU,EAKV,IAAI,EAQJ,MAAM,GACP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,MAAM,EAAsB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAA0B,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,IAAI,EAAoC,MAAM,WAAW,CAAC;AACnE,OAAO,EAAuD,KAAK,EAAoB,MAAM,YAAY,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,cAAc,WAAW,CAAC;AAC1B,OAAO,EAKL,UAAU,EACV,aAAa,GAKd,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAmC,YAAY,EAAE,MAAM,EAAsB,SAAS,EAAE,MAAM,aAAa,CAAC;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,OAAO,EAAuB,MAAM,cAAc,CAAC"}
package/dist/random.d.ts CHANGED
@@ -1,7 +1,13 @@
1
1
  /** Seeded PRNG (mulberry32). Use instead of Math.random for reproducible gameplay. */
2
2
  export declare class Random {
3
- private state;
3
+ private s;
4
4
  constructor(seed?: number);
5
+ /**
6
+ * The generator's whole state, a uint32. Save it with a snapshot and set it back to undo or replay:
7
+ * the same state gives the same sequence.
8
+ */
9
+ get state(): number;
10
+ set state(value: number);
5
11
  /** Float in [0, 1). */
6
12
  next(): number;
7
13
  /** Float in [min, max). */
@@ -1 +1 @@
1
- {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAS;IAEtB,YAAY,IAAI,SAAI,EAEnB;IAED,uBAAuB;IACvB,IAAI,IAAI,MAAM,CAMb;IAED,2BAA2B;IAC3B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtC;IAED,6BAA6B;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpC;IAED,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAG9B;CACF"}
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,qBAAa,MAAM;IACjB,OAAO,CAAC,CAAC,CAAS;IAElB,YAAY,IAAI,SAAI,EAEnB;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED,uBAAuB;IACvB,IAAI,IAAI,MAAM,CAMb;IAED,2BAA2B;IAC3B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtC;IAED,6BAA6B;IAC7B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpC;IAED,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAG9B;CACF"}
package/dist/random.js CHANGED
@@ -1,13 +1,23 @@
1
1
  /** Seeded PRNG (mulberry32). Use instead of Math.random for reproducible gameplay. */
2
2
  export class Random {
3
- state;
3
+ s;
4
4
  constructor(seed = 1) {
5
- this.state = seed >>> 0;
5
+ this.s = seed >>> 0;
6
+ }
7
+ /**
8
+ * The generator's whole state, a uint32. Save it with a snapshot and set it back to undo or replay:
9
+ * the same state gives the same sequence.
10
+ */
11
+ get state() {
12
+ return this.s;
13
+ }
14
+ set state(value) {
15
+ this.s = value >>> 0;
6
16
  }
7
17
  /** Float in [0, 1). */
8
18
  next() {
9
- this.state = (this.state + 0x6d2b79f5) >>> 0;
10
- let t = this.state;
19
+ this.s = (this.s + 0x6d2b79f5) >>> 0;
20
+ let t = this.s;
11
21
  t = Math.imul(t ^ (t >>> 15), t | 1);
12
22
  t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
13
23
  return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
@@ -1 +1 @@
1
- {"version":3,"file":"random.js","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,OAAO,MAAM;IACT,KAAK,CAAS;IAEtB,YAAY,IAAI,GAAG,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,uBAAuB;IACvB,IAAI;QACF,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,GAAW,EAAE,GAAW;QAC5B,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,6BAA6B;IAC7B,GAAG,CAAC,GAAW,EAAE,GAAW;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAI,KAAmB;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAM,CAAC;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../src/random.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,MAAM,OAAO,MAAM;IACT,CAAC,CAAS;IAElB,YAAY,IAAI,GAAG,CAAC;QAClB,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,CAAC,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,uBAAuB;IACvB,IAAI;QACF,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACf,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC;IAC/C,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,GAAW,EAAE,GAAW;QAC5B,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,6BAA6B;IAC7B,GAAG,CAAC,GAAW,EAAE,GAAW;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAI,KAAmB;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAM,CAAC;IACnD,CAAC;CACF"}
package/dist/storage.d.ts CHANGED
@@ -1,15 +1,25 @@
1
- /** localStorage wrapper that never throws: private mode, blocked storage and
2
- * corrupt JSON fall back to defaults so the game still runs. */
1
+ export interface StorageOptions<T> {
2
+ /**
3
+ * Version of this save's shape, stored next to it. Bump it when you change the shape, and give `migrate`.
4
+ * Saves from before you set a version count as version 0.
5
+ */
6
+ version?: number;
7
+ /** Turns a save written by an older `version` into the current shape. Runs once, when that save loads. */
8
+ migrate?: (old: Record<string, unknown>, from: number) => Partial<T>;
9
+ }
10
+ /**
11
+ * localStorage wrapper that never throws: private mode, blocked storage and corrupt JSON fall back to defaults
12
+ * so the game still runs. Saves from older versions of the game load safely (see `fit` and `StorageOptions`).
13
+ */
3
14
  export declare class Storage<T extends object> {
4
15
  readonly key: string;
5
16
  private readonly defaults;
6
17
  private value;
7
- constructor(key: string, defaults: T);
18
+ constructor(key: string, defaults: T, { version, migrate }?: StorageOptions<T>);
8
19
  get data(): Readonly<T>;
9
20
  get<K extends keyof T>(key: K): T[K];
10
21
  set<K extends keyof T>(key: K, v: T[K]): void;
11
22
  reset(): void;
12
- private read;
13
23
  private write;
14
24
  }
15
25
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;iEACiE;AACjE,qBAAa,OAAO,CAAC,CAAC,SAAS,MAAM;IAIjC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,KAAK,CAAI;IAEjB,YACW,GAAG,EAAE,MAAM,EACH,QAAQ,EAAE,CAAC,EAG7B;IAED,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAEtB;IAED,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAEnC;IAED,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAG5C;IAED,KAAK,IAAI,IAAI,CAGZ;IAED,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,KAAK;CAOd"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0GAA0G;IAC1G,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACtE;AAkCD;;;GAGG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,MAAM;IAIjC,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,KAAK,CAAI;IAEjB,YACW,GAAG,EAAE,MAAM,EACH,QAAQ,EAAE,CAAC,EAC5B,EAAE,OAAW,EAAE,OAAO,EAAE,GAAE,cAAc,CAAC,CAAC,CAAM,EAuBjD;IAED,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAEtB;IAED,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAEnC;IAED,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAG5C;IAED,KAAK,IAAI,IAAI,CAGZ;IAED,OAAO,CAAC,KAAK;CAGd"}
package/dist/storage.js CHANGED
@@ -1,13 +1,72 @@
1
- /** localStorage wrapper that never throws: private mode, blocked storage and
2
- * corrupt JSON fall back to defaults so the game still runs. */
1
+ /** JSON kind of a value: arrays and null apart from objects. */
2
+ const kind = (v) => (v === null ? "null" : Array.isArray(v) ? "array" : typeof v);
3
+ /**
4
+ * Saved fields whose kind matches the default's, over the defaults. A field that changed kind between game
5
+ * versions (a number that became an object) falls back to its default instead of breaking the game; `dropped`
6
+ * is called when that happens. Plain objects are checked one level down. Saved fields the defaults don't have
7
+ * are kept.
8
+ */
9
+ function fit(defaults, saved, dropped, deep = true) {
10
+ const out = { ...saved, ...defaults };
11
+ for (const k in defaults) {
12
+ if (!(k in saved))
13
+ continue;
14
+ const d = defaults[k];
15
+ const v = saved[k];
16
+ if (kind(v) !== kind(d))
17
+ dropped();
18
+ else
19
+ out[k] = deep && kind(d) === "object" ? fit(d, v, dropped, false) : v;
20
+ }
21
+ return out;
22
+ }
23
+ /** localStorage get (one argument) or set (two), never throwing: private mode and full storage just do nothing. */
24
+ function local(key, value) {
25
+ try {
26
+ if (value === undefined)
27
+ return globalThis.localStorage?.getItem(key) ?? null;
28
+ globalThis.localStorage?.setItem(key, value);
29
+ }
30
+ catch { }
31
+ return null;
32
+ }
33
+ /**
34
+ * localStorage wrapper that never throws: private mode, blocked storage and corrupt JSON fall back to defaults
35
+ * so the game still runs. Saves from older versions of the game load safely (see `fit` and `StorageOptions`).
36
+ */
3
37
  export class Storage {
4
38
  key;
5
39
  defaults;
6
40
  value;
7
- constructor(key, defaults) {
41
+ constructor(key, defaults, { version = 0, migrate } = {}) {
8
42
  this.key = key;
9
43
  this.defaults = defaults;
10
- this.value = { ...defaults, ...this.read() };
44
+ const raw = local(key);
45
+ let saved = {};
46
+ try {
47
+ const parsed = JSON.parse(raw ?? "{}");
48
+ if (kind(parsed) === "object")
49
+ saved = parsed;
50
+ }
51
+ catch { }
52
+ const from = Number(local(`${key}:v`)) || 0;
53
+ let changed = false;
54
+ if (raw && migrate && from < version) {
55
+ try {
56
+ saved = migrate(saved, from);
57
+ changed = true;
58
+ }
59
+ catch { }
60
+ }
61
+ this.value = fit(defaults, saved, () => (changed = true));
62
+ if (raw && changed) {
63
+ // Keep the save as it was before the first field was dropped or it was migrated, so nothing is lost.
64
+ if (local(`${key}:backup`) === null)
65
+ local(`${key}:backup`, raw);
66
+ this.write();
67
+ }
68
+ if (version && from !== version)
69
+ local(`${key}:v`, String(version));
11
70
  }
12
71
  get data() {
13
72
  return this.value;
@@ -23,23 +82,8 @@ export class Storage {
23
82
  this.value = { ...this.defaults };
24
83
  this.write();
25
84
  }
26
- read() {
27
- try {
28
- const raw = globalThis.localStorage?.getItem(this.key);
29
- const parsed = raw ? JSON.parse(raw) : {};
30
- return parsed && typeof parsed === "object" ? parsed : {};
31
- }
32
- catch {
33
- return {};
34
- }
35
- }
36
85
  write() {
37
- try {
38
- globalThis.localStorage?.setItem(this.key, JSON.stringify(this.value));
39
- }
40
- catch {
41
- // Storage unavailable or full; keep in-memory value.
42
- }
86
+ local(this.key, JSON.stringify(this.value));
43
87
  }
44
88
  }
45
89
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;iEACiE;AACjE,MAAM,OAAO,OAAO;IAIP,GAAG;IACK,QAAQ;IAJnB,KAAK,CAAI;IAEjB,YACW,GAAW,EACH,QAAW;mBADnB,GAAG;wBACK,QAAQ;QAEzB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,GAAG,CAAoB,GAAM;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,GAAG,CAAoB,GAAM,EAAE,CAAO;QACpC,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,MAAM,MAAM,GAAY,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK;QACX,IAAI,CAAC;YACH,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@debuffjp/core",
3
- "version": "0.9.5",
3
+ "version": "0.12.0",
4
4
  "description": "Game loop, fixed-step clock, scenes, camera, sprites and typed creative parameters for debuff",
5
5
  "keywords": [
6
6
  "game",
@@ -46,6 +46,6 @@
46
46
  "access": "public"
47
47
  },
48
48
  "dependencies": {
49
- "spryte": "0.2.1"
49
+ "spryte": "0.2.3"
50
50
  }
51
51
  }