@datamoc/mw_games 0.13.0 → 0.15.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 +144 -0
- package/README.md +5 -1
- package/dist/audio/Music.d.ts +27 -0
- package/dist/audio/Music.d.ts.map +1 -1
- package/dist/audio/Music.js +70 -2
- package/dist/audio/Music.js.map +1 -1
- package/dist/audio/Orchestrator.d.ts +4 -0
- package/dist/audio/Orchestrator.d.ts.map +1 -1
- package/dist/audio/Orchestrator.js +12 -0
- package/dist/audio/Orchestrator.js.map +1 -1
- package/dist/audio/Sound.d.ts +9 -0
- package/dist/audio/Sound.d.ts.map +1 -1
- package/dist/audio/Sound.js +18 -0
- package/dist/audio/Sound.js.map +1 -1
- package/dist/board/Classics.d.ts.map +1 -1
- package/dist/board/Classics.js +3 -2
- package/dist/board/Classics.js.map +1 -1
- package/dist/board/FogOfWar.d.ts.map +1 -1
- package/dist/board/FogOfWar.js +5 -2
- package/dist/board/FogOfWar.js.map +1 -1
- package/dist/board/HexSkirmish.d.ts.map +1 -1
- package/dist/board/HexSkirmish.js +2 -1
- package/dist/board/HexSkirmish.js.map +1 -1
- package/dist/core/Grid.d.ts +64 -0
- package/dist/core/Grid.d.ts.map +1 -0
- package/dist/core/Grid.js +76 -0
- package/dist/core/Grid.js.map +1 -0
- package/dist/core/Settings.d.ts +96 -0
- package/dist/core/Settings.d.ts.map +1 -0
- package/dist/core/Settings.js +189 -0
- package/dist/core/Settings.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/mw_games.global.js +115 -115
- package/dist/mwl/catalog.d.ts +42 -0
- package/dist/mwl/catalog.d.ts.map +1 -1
- package/dist/mwl/catalog.js +88 -0
- package/dist/mwl/catalog.js.map +1 -1
- package/dist/mwl/index.d.ts +1 -1
- package/dist/mwl/index.d.ts.map +1 -1
- package/dist/roguelike/Level.d.ts.map +1 -1
- package/dist/roguelike/Level.js +5 -4
- package/dist/roguelike/Level.js.map +1 -1
- package/dist/two-d/Game.d.ts +64 -0
- package/dist/two-d/Game.d.ts.map +1 -1
- package/dist/two-d/Game.js +106 -2
- package/dist/two-d/Game.js.map +1 -1
- package/dist/two-d/QualityScaler.d.ts +63 -0
- package/dist/two-d/QualityScaler.d.ts.map +1 -0
- package/dist/two-d/QualityScaler.js +92 -0
- package/dist/two-d/QualityScaler.js.map +1 -0
- package/dist/two-d/ResolutionFit.d.ts +28 -0
- package/dist/two-d/ResolutionFit.d.ts.map +1 -0
- package/dist/two-d/ResolutionFit.js +39 -0
- package/dist/two-d/ResolutionFit.js.map +1 -0
- package/dist/two-d/index.d.ts +3 -1
- package/dist/two-d/index.d.ts.map +1 -1
- package/dist/two-d/index.js +1 -0
- package/dist/two-d/index.js.map +1 -1
- package/dist/two-d/render/SpriteGroup.d.ts +83 -0
- package/dist/two-d/render/SpriteGroup.d.ts.map +1 -0
- package/dist/two-d/render/SpriteGroup.js +107 -0
- package/dist/two-d/render/SpriteGroup.js.map +1 -0
- package/dist/two-d/render/index.d.ts +2 -0
- package/dist/two-d/render/index.d.ts.map +1 -1
- package/dist/two-d/render/index.js +1 -0
- package/dist/two-d/render/index.js.map +1 -1
- package/dist/two-d/ui/Meter.d.ts +76 -0
- package/dist/two-d/ui/Meter.d.ts.map +1 -0
- package/dist/two-d/ui/Meter.js +134 -0
- package/dist/two-d/ui/Meter.js.map +1 -0
- package/dist/two-d/ui/SettingsScreen.d.ts +112 -0
- package/dist/two-d/ui/SettingsScreen.d.ts.map +1 -0
- package/dist/two-d/ui/SettingsScreen.js +338 -0
- package/dist/two-d/ui/SettingsScreen.js.map +1 -0
- package/dist/two-d/ui/index.d.ts +4 -0
- package/dist/two-d/ui/index.d.ts.map +1 -1
- package/dist/two-d/ui/index.js +2 -0
- package/dist/two-d/ui/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -1
- package/tools/classic-html.mjs +1 -1
- package/tools/compress-dist.d.mts +18 -0
- package/tools/compress-dist.mjs +5 -0
- package/tools/single-file.d.mts +16 -0
- package/tools/single-file.mjs +8 -1
package/dist/mwl/catalog.d.ts
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
import type { MwlCompiledGame } from './compiler.ts';
|
|
2
2
|
import type { MwlDiagnostic, MwlNode } from './grammar.ts';
|
|
3
3
|
import { type MwlHookDeclaration } from './hooks.ts';
|
|
4
|
+
/**
|
|
5
|
+
* One declarative cross-table reference: a column of one `[table]` whose every cell must
|
|
6
|
+
* resolve, either against a column of another `[table]` or against a closed value set.
|
|
7
|
+
* The declaration names the shape; the *contents* (which column points where, which set is
|
|
8
|
+
* legal) stay game data in the consuming repository.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { compile, validateCatalog } from '@datamoc/mw_games/mwl';
|
|
13
|
+
*
|
|
14
|
+
* const game = compile(
|
|
15
|
+
* "[{ tag: 'table', id: 'items', columns: 'id:string', children: [{ tag: 'row', id: 'sword' }] }, { tag: 'table', id: 'recipes', columns: 'ingredient:string', children: [{ tag: 'row', ingredient: 'sword' }] }]",
|
|
16
|
+
* );
|
|
17
|
+
* const declarations = [{ table: 'recipes', column: 'ingredient', references: { table: 'items', column: 'id' } }];
|
|
18
|
+
* console.log(validateCatalog(game, { tableReferences: declarations })); // []
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export type MwlTableReference = {
|
|
22
|
+
/** id of the `[table]` holding the referencing column */
|
|
23
|
+
readonly table: string;
|
|
24
|
+
/** column whose cells must resolve */
|
|
25
|
+
readonly column: string;
|
|
26
|
+
/** the referenced table and the column its values are drawn from */
|
|
27
|
+
readonly references: {
|
|
28
|
+
readonly table: string;
|
|
29
|
+
readonly column: string;
|
|
30
|
+
};
|
|
31
|
+
} | {
|
|
32
|
+
/** id of the `[table]` holding the referencing column */
|
|
33
|
+
readonly table: string;
|
|
34
|
+
/** column whose cells must resolve */
|
|
35
|
+
readonly column: string;
|
|
36
|
+
/** the exact closed set the column's cells must belong to */
|
|
37
|
+
readonly oneOf: readonly string[];
|
|
38
|
+
};
|
|
4
39
|
export interface MwlValidationOptions {
|
|
5
40
|
/** Slots are game-defined. Supplying them enables unknown-slot diagnostics. */
|
|
6
41
|
readonly slots?: readonly string[];
|
|
@@ -17,6 +52,13 @@ export interface MwlValidationOptions {
|
|
|
17
52
|
readonly width: number;
|
|
18
53
|
readonly height: number;
|
|
19
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Declarative cross-table references (item 362): each entry names a `[table]` column whose
|
|
57
|
+
* cells must resolve against another table's column or a closed value set. A failure reports
|
|
58
|
+
* the table, the row, and the offending value. Purely additive and optional: saves, replays
|
|
59
|
+
* and every existing check are untouched when it is absent.
|
|
60
|
+
*/
|
|
61
|
+
readonly tableReferences?: readonly MwlTableReference[];
|
|
20
62
|
/**
|
|
21
63
|
* What `MWL_DUPLICATE_ID`'s `tag:id` key is scoped to.
|
|
22
64
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/mwl/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAe,OAAO,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAqE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/mwl/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAe,OAAO,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAqE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIxH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,GAC1B;IACA,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,GACD;IACA,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC,CAAC;AAEL,MAAM,WAAW,oBAAoB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAC1D,gFAAgF;IAChF,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,mFAAmF;IACnF,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAExD;;;;;;;;;OASG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CACxC;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,GAAE,oBAAyB,GAAG,aAAa,EAAE,CA4E1G;AAmMD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,GAAE,oBAAyB,GAAG,aAAa,EAAE,CAGnH"}
|
package/dist/mwl/catalog.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { collectHookReferences, parseHookReference, validateHookAttributes } from './hooks.js';
|
|
2
|
+
import { parseTableColumns } from './schema.js';
|
|
2
3
|
import { flattenNodes } from './utils.js';
|
|
3
4
|
/** Semantic checks shared by all games. Domain rules remain in the game adapter. */
|
|
4
5
|
export function validateCatalog(game, options = {}) {
|
|
@@ -38,6 +39,7 @@ export function validateCatalog(game, options = {}) {
|
|
|
38
39
|
validateCoordinateBounds(node, options.mapBounds, diagnostics);
|
|
39
40
|
}
|
|
40
41
|
validateAliasCycles(nodes, diagnostics);
|
|
42
|
+
validateTableReferences(nodes, options.tableReferences, diagnostics);
|
|
41
43
|
const references = collectHookReferences(game, ['hook', 'migration', ...(options.hookAttributes ?? [])]);
|
|
42
44
|
const declarations = new Map();
|
|
43
45
|
for (const hook of options.hooks ?? [])
|
|
@@ -110,6 +112,92 @@ function validateAliasCycles(nodes, diagnostics) {
|
|
|
110
112
|
if (node.attributes.aliasof !== undefined)
|
|
111
113
|
walk(node, []);
|
|
112
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Checks every declared cross-table reference: each cell of the source column must resolve
|
|
117
|
+
* against the target table's column or the closed set. A failure reports the table, the row
|
|
118
|
+
* and the offending value. Absent or empty cells are skipped (a missing column's shape stays
|
|
119
|
+
* the schema's `MWL_TABLE` job), and a `list` cell checks each entry the way `coerceTableValue`
|
|
120
|
+
* splits one. A declaration naming a table or column that is not there is itself a diagnostic,
|
|
121
|
+
* so a typo in the declaration cannot pass silently.
|
|
122
|
+
*/
|
|
123
|
+
function validateTableReferences(nodes, declarations, diagnostics) {
|
|
124
|
+
if (!declarations)
|
|
125
|
+
return;
|
|
126
|
+
const tables = new Map();
|
|
127
|
+
for (const node of nodes) {
|
|
128
|
+
const id = node.tag === 'table' ? node.attributes.id : undefined;
|
|
129
|
+
if (id && !tables.has(id))
|
|
130
|
+
tables.set(id, node);
|
|
131
|
+
}
|
|
132
|
+
const columnsOf = (table) => {
|
|
133
|
+
try {
|
|
134
|
+
return parseTableColumns(table.attributes.columns ?? '');
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
const rowsOf = (table) => table.children.filter((child) => child.tag === 'row');
|
|
141
|
+
for (const declaration of declarations) {
|
|
142
|
+
const source = tables.get(declaration.table);
|
|
143
|
+
if (!source) {
|
|
144
|
+
diagnostics.push(diagnostic('MWL_TABLE_REFERENCE', `unknown table "${declaration.table}" in tableReferences`, fallbackLocation()));
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const sourceColumn = columnsOf(source)?.find((column) => column.name === declaration.column);
|
|
148
|
+
if (!sourceColumn) {
|
|
149
|
+
diagnostics.push(diagnostic('MWL_TABLE_REFERENCE', `unknown column "${declaration.column}" in table "${declaration.table}"`, source.location));
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
let allowed;
|
|
153
|
+
let expectation;
|
|
154
|
+
if ('oneOf' in declaration) {
|
|
155
|
+
allowed = new Set(declaration.oneOf);
|
|
156
|
+
expectation = 'one of the declared values';
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
const target = tables.get(declaration.references.table);
|
|
160
|
+
const targetColumn = target
|
|
161
|
+
? columnsOf(target)?.find((column) => column.name === declaration.references.column)
|
|
162
|
+
: undefined;
|
|
163
|
+
if (!target || !targetColumn) {
|
|
164
|
+
diagnostics.push(diagnostic('MWL_TABLE_REFERENCE', `unknown reference target "${declaration.references.table}.${declaration.references.column}" for table "${declaration.table}" column "${declaration.column}"`, source.location));
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
const values = new Set();
|
|
168
|
+
for (const row of rowsOf(target))
|
|
169
|
+
for (const value of cellsOf(row, targetColumn, target.attributes.list_delimiter))
|
|
170
|
+
values.add(value);
|
|
171
|
+
allowed = values;
|
|
172
|
+
expectation = `${declaration.references.table}.${declaration.references.column}`;
|
|
173
|
+
}
|
|
174
|
+
const delimiter = source.attributes.list_delimiter;
|
|
175
|
+
rowsOf(source).forEach((row, index) => {
|
|
176
|
+
for (const value of cellsOf(row, sourceColumn, delimiter))
|
|
177
|
+
if (!allowed.has(value))
|
|
178
|
+
diagnostics.push({
|
|
179
|
+
code: 'MWL_TABLE_REFERENCE',
|
|
180
|
+
message: `table "${declaration.table}" row ${index + 1} column "${declaration.column}": unknown value "${value}" (expected ${expectation})`,
|
|
181
|
+
location: row.valueLocations?.[declaration.column] ??
|
|
182
|
+
row.attributeLocations?.[declaration.column] ??
|
|
183
|
+
row.location ??
|
|
184
|
+
fallbackLocation(),
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/** The authored values one row contributes for a reference check: every `list` entry, else the cell. */
|
|
190
|
+
function cellsOf(row, column, listDelimiter) {
|
|
191
|
+
const raw = row.attributes[column.name];
|
|
192
|
+
if (raw === undefined || raw === '')
|
|
193
|
+
return [];
|
|
194
|
+
if (column.type !== 'list')
|
|
195
|
+
return [raw];
|
|
196
|
+
return raw
|
|
197
|
+
.split(listDelimiter ?? ';')
|
|
198
|
+
.map((entry) => entry.trim())
|
|
199
|
+
.filter((entry) => entry.length > 0);
|
|
200
|
+
}
|
|
113
201
|
function diagnostic(code, message, location) {
|
|
114
202
|
return { code, message, location: location ?? fallbackLocation() };
|
|
115
203
|
}
|
package/dist/mwl/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/mwl/catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/mwl/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/mwl/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export type { MwlExpression, MwlExpressionContext } from './expression.ts';
|
|
|
22
22
|
export { composeEffects, effectToModifier, inventoryItem, itemDefinition } from './actors.ts';
|
|
23
23
|
export type { MwlActorItem, MwlEquipment } from './actors.ts';
|
|
24
24
|
export { validateCatalog, validateCatalogNodes } from './catalog.ts';
|
|
25
|
-
export type { MwlValidationOptions } from './catalog.ts';
|
|
25
|
+
export type { MwlTableReference, MwlValidationOptions } from './catalog.ts';
|
|
26
26
|
export { decodeSave, decodeSaveEnvelope, encodeSave, validateWorld } from './persistence.ts';
|
|
27
27
|
export type { MwlMigration, MwlPersistenceOptions, MwlSaveEnvelope } from './persistence.ts';
|
|
28
28
|
export { contentReport, loadContent } from './report.ts';
|
package/dist/mwl/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mwl/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mwl/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Level.d.ts","sourceRoot":"","sources":["../../src/roguelike/Level.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Level.d.ts","sourceRoot":"","sources":["../../src/roguelike/Level.ts"],"names":[],"mappings":"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"}
|
package/dist/roguelike/Level.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { hexNeighbors } from '../core/Hex.js';
|
|
2
|
+
import { cellIndex, cellInside, cellX, cellY } from '../core/Grid.js';
|
|
2
3
|
//one frozen table per topology, shared by every caller: these sit inside the hottest loops
|
|
3
4
|
//here (a flood fill calls `neighbors` per cell), so a fresh array per call was pure GC churn
|
|
4
5
|
const OFFSET_4 = [
|
|
@@ -76,16 +77,16 @@ export class Level {
|
|
|
76
77
|
return this.width * this.height;
|
|
77
78
|
}
|
|
78
79
|
index(x, y) {
|
|
79
|
-
return
|
|
80
|
+
return cellIndex(this.width, x, y);
|
|
80
81
|
}
|
|
81
82
|
xOf(cell) {
|
|
82
|
-
return
|
|
83
|
+
return cellX(this.width, cell);
|
|
83
84
|
}
|
|
84
85
|
yOf(cell) {
|
|
85
|
-
return
|
|
86
|
+
return cellY(this.width, cell);
|
|
86
87
|
}
|
|
87
88
|
inside(x, y) {
|
|
88
|
-
return
|
|
89
|
+
return cellInside(this.width, this.height, x, y);
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
91
92
|
* The cells adjacent to `(x, y)` - six of them on a hex `Level`, four or eight on a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Level.js","sourceRoot":"","sources":["../../src/roguelike/Level.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Level.js","sourceRoot":"","sources":["../../src/roguelike/Level.ts"],"names":[],"mappings":"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"}
|
package/dist/two-d/Game.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Application } from 'pixi.js';
|
|
|
2
2
|
import type { Scene2D } from './Scene2D.ts';
|
|
3
3
|
import type { SceneClass } from '../core/Scene.ts';
|
|
4
4
|
import { Signal } from '../core/Signal.ts';
|
|
5
|
+
import { type QualityScalerOptions } from './QualityScaler.ts';
|
|
5
6
|
export interface GameOptions {
|
|
6
7
|
/** the canvas to draw into; one is created and appended if omitted */
|
|
7
8
|
canvas?: HTMLCanvasElement;
|
|
@@ -48,11 +49,38 @@ export interface GameOptions {
|
|
|
48
49
|
* caller to remember it.
|
|
49
50
|
*/
|
|
50
51
|
extensions?: readonly (() => void)[];
|
|
52
|
+
/**
|
|
53
|
+
* Suspends the loop and silences `audio` while the page is hidden, resuming both on
|
|
54
|
+
* show. True unless a game drives its own loop (or its own visibility handling), in
|
|
55
|
+
* which case set false and call `suspend`/`resume` itself.
|
|
56
|
+
*/
|
|
57
|
+
autoPause?: boolean;
|
|
58
|
+
/** the game's own audio rig, silenced while the page is hidden - an `Orchestrator` fits */
|
|
59
|
+
audio?: AudioSuspendRig | null;
|
|
60
|
+
/**
|
|
61
|
+
* Frame-time quality scaling over the static device fit, off unless given: the backing
|
|
62
|
+
* store steps down after sustained over-budget frames and recovers only after a much
|
|
63
|
+
* longer streak inside budget. The ceiling stays the `fitResolution` answer, so this
|
|
64
|
+
* never asks for more than the device can make.
|
|
65
|
+
*/
|
|
66
|
+
qualityScaling?: Omit<QualityScalerOptions, 'ceiling'> | null;
|
|
67
|
+
}
|
|
68
|
+
/** the suspend/resume pair `Game` calls on its audio rig around a page hide */
|
|
69
|
+
export interface AudioSuspendRig {
|
|
70
|
+
suspend(): void;
|
|
71
|
+
resume(): void;
|
|
51
72
|
}
|
|
52
73
|
/**
|
|
53
74
|
* The application: owns the renderer, the loop, and the current scene.
|
|
54
75
|
*
|
|
55
76
|
* Construct it, `await start(FirstScene)`, and the rest is scenes.
|
|
77
|
+
*
|
|
78
|
+
* The canvas is drawn at the display's `devicePixelRatio`, up to what the device can actually
|
|
79
|
+
* make: a backing store of `viewport * devicePixelRatio` pixels is refused past the GPU's
|
|
80
|
+
* `MAX_TEXTURE_SIZE` (WebGL clamps it rather than failing, with nothing reported), so the
|
|
81
|
+
* resolution is reduced to the largest whole number that fits and a warning says so. A game
|
|
82
|
+
* therefore keeps rendering on a device with a small limit, softer than the display asked for
|
|
83
|
+
* rather than wrong; nothing changes on a device that can afford what it asked for.
|
|
56
84
|
*/
|
|
57
85
|
export declare class Game {
|
|
58
86
|
private static instance;
|
|
@@ -72,6 +100,10 @@ export declare class Game {
|
|
|
72
100
|
private options;
|
|
73
101
|
private started;
|
|
74
102
|
private stopWatchingDpr;
|
|
103
|
+
private stopWatchingVisibility;
|
|
104
|
+
private suspended_;
|
|
105
|
+
private timeScaleBeforeSuspend;
|
|
106
|
+
private scaler;
|
|
75
107
|
constructor(options?: GameOptions);
|
|
76
108
|
/** the viewport width in css pixels, which is what scenes lay out against */
|
|
77
109
|
get width(): number;
|
|
@@ -120,6 +152,21 @@ export declare class Game {
|
|
|
120
152
|
* @param dt seconds to advance by
|
|
121
153
|
*/
|
|
122
154
|
step(dt: number): void;
|
|
155
|
+
/** true while suspended by `suspend` (a page hide, usually) */
|
|
156
|
+
get suspended(): boolean;
|
|
157
|
+
/**
|
|
158
|
+
* Freezes the simulation for a page hide: the clock (`timeScale`) parks at 0, the top
|
|
159
|
+
* scene hears `onSuspend`, and the game's own audio rig is silenced. The renderer keeps
|
|
160
|
+
* going and `step(dt)` still works, so consoles and screenshots are unaffected.
|
|
161
|
+
* Idempotent; `resume` restores the parked clock and audio, and the player's own mute
|
|
162
|
+
* setting is never touched.
|
|
163
|
+
*/
|
|
164
|
+
suspend(): void;
|
|
165
|
+
/**
|
|
166
|
+
* The counterpart to `suspend`: restores the parked clock, fires `onResume` on the top
|
|
167
|
+
* scene, and unsilences the audio rig. Calling it without a `suspend` does nothing.
|
|
168
|
+
*/
|
|
169
|
+
resume(): void;
|
|
123
170
|
/**
|
|
124
171
|
* Publishes the running game on the global object, for tools and for the console.
|
|
125
172
|
*
|
|
@@ -132,6 +179,23 @@ export declare class Game {
|
|
|
132
179
|
* Neither is read by the framework. Nothing depends on them existing.
|
|
133
180
|
*/
|
|
134
181
|
private expose;
|
|
182
|
+
/**
|
|
183
|
+
* Resizes the renderer to a resolution this device can actually afford.
|
|
184
|
+
*
|
|
185
|
+
* A full-window canvas at device resolution can ask for a backing store larger than the
|
|
186
|
+
* GPU's `MAX_TEXTURE_SIZE`, and WebGL clamps that silently instead of failing: the canvas
|
|
187
|
+
* keeps its size, the scene keeps being rendered into a surface that is not the one asked
|
|
188
|
+
* for, and nothing anywhere says so. A 1080-wide phone at `devicePixelRatio` 2.625 asks for
|
|
189
|
+
* 2121x4709 against the 4096 limit one emulator reported, and got a 2121x4096 drawing
|
|
190
|
+
* buffer; see `fitResolution` for the arithmetic and for what that investigation did and
|
|
191
|
+
* did not establish about the black screen that process showed.
|
|
192
|
+
*
|
|
193
|
+
* Called after `init`, whenever the renderer is resized (a rotation changes which one fits),
|
|
194
|
+
* and when `devicePixelRatio` itself changes. It returns immediately when the device can
|
|
195
|
+
* afford what was asked for, which is every ordinary case, so nothing about a normal
|
|
196
|
+
* startup changes.
|
|
197
|
+
*/
|
|
198
|
+
private fitResolutionToDevice;
|
|
135
199
|
private frame;
|
|
136
200
|
private switchNow;
|
|
137
201
|
/** a new scene alone: everything else is destroyed, the clocks restart */
|
package/dist/two-d/Game.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Game.d.ts","sourceRoot":"","sources":["../../src/two-d/Game.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Game.d.ts","sourceRoot":"","sources":["../../src/two-d/Game.ts"],"names":[],"mappings":"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"}
|
package/dist/two-d/Game.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Application, TextureSource } from 'pixi.js';
|
|
2
2
|
import { SceneStack } from '../core/SceneStack.js';
|
|
3
3
|
import { Signal } from '../core/Signal.js';
|
|
4
|
+
import { Logger } from '../core/Log.js';
|
|
5
|
+
import { fitResolution } from './ResolutionFit.js';
|
|
6
|
+
import { QualityScaler } from './QualityScaler.js';
|
|
4
7
|
import * as Input from '../core/Input.js';
|
|
5
8
|
const PIXEL_ART_CLASS = 'mwg-pixel-art';
|
|
9
|
+
const log = new Logger('renderer');
|
|
6
10
|
/**
|
|
7
11
|
* A class beats an inline `canvas.style.imageRendering` because Pixi's own `autoDensity`/
|
|
8
12
|
* `resizeTo` rewrite the canvas's `style` attribute wholesale (see `start()`); this rule
|
|
@@ -42,6 +46,13 @@ function watchDevicePixelRatio(onChange) {
|
|
|
42
46
|
* The application: owns the renderer, the loop, and the current scene.
|
|
43
47
|
*
|
|
44
48
|
* Construct it, `await start(FirstScene)`, and the rest is scenes.
|
|
49
|
+
*
|
|
50
|
+
* The canvas is drawn at the display's `devicePixelRatio`, up to what the device can actually
|
|
51
|
+
* make: a backing store of `viewport * devicePixelRatio` pixels is refused past the GPU's
|
|
52
|
+
* `MAX_TEXTURE_SIZE` (WebGL clamps it rather than failing, with nothing reported), so the
|
|
53
|
+
* resolution is reduced to the largest whole number that fits and a warning says so. A game
|
|
54
|
+
* therefore keeps rendering on a device with a small limit, softer than the display asked for
|
|
55
|
+
* rather than wrong; nothing changes on a device that can afford what it asked for.
|
|
45
56
|
*/
|
|
46
57
|
export class Game {
|
|
47
58
|
static { this.instance = null; }
|
|
@@ -61,6 +72,10 @@ export class Game {
|
|
|
61
72
|
this.pending = [];
|
|
62
73
|
this.started = false;
|
|
63
74
|
this.stopWatchingDpr = null;
|
|
75
|
+
this.stopWatchingVisibility = null;
|
|
76
|
+
this.suspended_ = false;
|
|
77
|
+
this.timeScaleBeforeSuspend = 1;
|
|
78
|
+
this.scaler = null;
|
|
64
79
|
this.options = {
|
|
65
80
|
canvas: options.canvas ?? document.createElement('canvas'),
|
|
66
81
|
background: options.background ?? 0x000000,
|
|
@@ -68,6 +83,9 @@ export class Game {
|
|
|
68
83
|
pixelArt: options.pixelArt ?? true,
|
|
69
84
|
resizeTo: options.resizeTo ?? window,
|
|
70
85
|
extensions: options.extensions ?? [],
|
|
86
|
+
autoPause: options.autoPause ?? true,
|
|
87
|
+
audio: options.audio ?? null,
|
|
88
|
+
qualityScaling: options.qualityScaling ?? null,
|
|
71
89
|
};
|
|
72
90
|
if (this.options.pixelArt) {
|
|
73
91
|
//set here rather than in start(), because textures are usually loaded before
|
|
@@ -134,7 +152,11 @@ export class Game {
|
|
|
134
152
|
//them the backing size would push everything they centre off the screen.
|
|
135
153
|
this.app.renderer.on('resize', () => {
|
|
136
154
|
this.stack.resize(this.width, this.height);
|
|
155
|
+
//a rotation or a window resize changes how much of a backing store this device
|
|
156
|
+
//can afford, so re-fit rather than keeping whatever was chosen at startup
|
|
157
|
+
this.fitResolutionToDevice();
|
|
137
158
|
});
|
|
159
|
+
this.fitResolutionToDevice();
|
|
138
160
|
//the resolution passed to app.init() above is a one-time snapshot of
|
|
139
161
|
//devicePixelRatio; a later browser zoom (or dragging the window to a display with a
|
|
140
162
|
//different scale factor) changes that ratio without Pixi noticing on its own. Left
|
|
@@ -143,8 +165,18 @@ export class Game {
|
|
|
143
165
|
//non-integer ratio duplicates pixel columns inconsistently - the seams a pixel-art
|
|
144
166
|
//tilemap shows between tiles that were perfectly adjacent in the buffer itself.
|
|
145
167
|
this.stopWatchingDpr = watchDevicePixelRatio(() => {
|
|
146
|
-
this.
|
|
168
|
+
this.fitResolutionToDevice();
|
|
147
169
|
});
|
|
170
|
+
if (this.options.autoPause && typeof document !== 'undefined') {
|
|
171
|
+
const onVisibility = () => {
|
|
172
|
+
if (document.hidden)
|
|
173
|
+
this.suspend();
|
|
174
|
+
else
|
|
175
|
+
this.resume();
|
|
176
|
+
};
|
|
177
|
+
document.addEventListener('visibilitychange', onVisibility);
|
|
178
|
+
this.stopWatchingVisibility = () => document.removeEventListener('visibilitychange', onVisibility);
|
|
179
|
+
}
|
|
148
180
|
this.expose();
|
|
149
181
|
this.switchNow(first);
|
|
150
182
|
//pixi's ticker drives the loop, so its own systems stay in step with the game
|
|
@@ -205,6 +237,38 @@ export class Game {
|
|
|
205
237
|
this.frame(dt);
|
|
206
238
|
this.app.renderer.render(this.app.stage);
|
|
207
239
|
}
|
|
240
|
+
/** true while suspended by `suspend` (a page hide, usually) */
|
|
241
|
+
get suspended() {
|
|
242
|
+
return this.suspended_;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Freezes the simulation for a page hide: the clock (`timeScale`) parks at 0, the top
|
|
246
|
+
* scene hears `onSuspend`, and the game's own audio rig is silenced. The renderer keeps
|
|
247
|
+
* going and `step(dt)` still works, so consoles and screenshots are unaffected.
|
|
248
|
+
* Idempotent; `resume` restores the parked clock and audio, and the player's own mute
|
|
249
|
+
* setting is never touched.
|
|
250
|
+
*/
|
|
251
|
+
suspend() {
|
|
252
|
+
if (this.suspended_)
|
|
253
|
+
return;
|
|
254
|
+
this.suspended_ = true;
|
|
255
|
+
this.timeScaleBeforeSuspend = this.timeScale;
|
|
256
|
+
this.timeScale = 0;
|
|
257
|
+
this.stack.current?.onSuspend();
|
|
258
|
+
this.options.audio?.suspend();
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* The counterpart to `suspend`: restores the parked clock, fires `onResume` on the top
|
|
262
|
+
* scene, and unsilences the audio rig. Calling it without a `suspend` does nothing.
|
|
263
|
+
*/
|
|
264
|
+
resume() {
|
|
265
|
+
if (!this.suspended_)
|
|
266
|
+
return;
|
|
267
|
+
this.suspended_ = false;
|
|
268
|
+
this.timeScale = this.timeScaleBeforeSuspend;
|
|
269
|
+
this.stack.current?.onResume(undefined);
|
|
270
|
+
this.options.audio?.resume();
|
|
271
|
+
}
|
|
208
272
|
/**
|
|
209
273
|
* Publishes the running game on the global object, for tools and for the console.
|
|
210
274
|
*
|
|
@@ -221,6 +285,37 @@ export class Game {
|
|
|
221
285
|
target.__PIXI_APP__ = this.app;
|
|
222
286
|
target.__MWG__ = this;
|
|
223
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* Resizes the renderer to a resolution this device can actually afford.
|
|
290
|
+
*
|
|
291
|
+
* A full-window canvas at device resolution can ask for a backing store larger than the
|
|
292
|
+
* GPU's `MAX_TEXTURE_SIZE`, and WebGL clamps that silently instead of failing: the canvas
|
|
293
|
+
* keeps its size, the scene keeps being rendered into a surface that is not the one asked
|
|
294
|
+
* for, and nothing anywhere says so. A 1080-wide phone at `devicePixelRatio` 2.625 asks for
|
|
295
|
+
* 2121x4709 against the 4096 limit one emulator reported, and got a 2121x4096 drawing
|
|
296
|
+
* buffer; see `fitResolution` for the arithmetic and for what that investigation did and
|
|
297
|
+
* did not establish about the black screen that process showed.
|
|
298
|
+
*
|
|
299
|
+
* Called after `init`, whenever the renderer is resized (a rotation changes which one fits),
|
|
300
|
+
* and when `devicePixelRatio` itself changes. It returns immediately when the device can
|
|
301
|
+
* afford what was asked for, which is every ordinary case, so nothing about a normal
|
|
302
|
+
* startup changes.
|
|
303
|
+
*/
|
|
304
|
+
fitResolutionToDevice() {
|
|
305
|
+
const gl = this.app.renderer.gl;
|
|
306
|
+
const limit = gl ? gl.getParameter(gl.MAX_TEXTURE_SIZE) : Number.POSITIVE_INFINITY;
|
|
307
|
+
const wanted = window.devicePixelRatio || 1;
|
|
308
|
+
const fitted = fitResolution(this.width, this.height, wanted, limit);
|
|
309
|
+
if (!this.scaler && this.options.qualityScaling) {
|
|
310
|
+
this.scaler = new QualityScaler({ ...this.options.qualityScaling, ceiling: fitted });
|
|
311
|
+
}
|
|
312
|
+
const target = this.scaler ? this.scaler.setCeiling(fitted) : fitted;
|
|
313
|
+
if (target === this.app.renderer.resolution)
|
|
314
|
+
return;
|
|
315
|
+
log.warn(`this device cannot render a ${this.width}x${this.height} canvas at ${wanted}x ` +
|
|
316
|
+
`(its limit is ${limit}); using ${fitted}x instead, which is softer than the display`);
|
|
317
|
+
this.app.renderer.resize(this.width, this.height, target);
|
|
318
|
+
}
|
|
224
319
|
frame(deltaSeconds) {
|
|
225
320
|
//queued scene changes run first, in order, so a frame never updates a
|
|
226
321
|
//scene that was already asked to leave
|
|
@@ -233,12 +328,20 @@ export class Game {
|
|
|
233
328
|
this.applyPop(request.result);
|
|
234
329
|
}
|
|
235
330
|
this.pending.length = 0;
|
|
236
|
-
if (this.hitStopRemaining > 0) {
|
|
331
|
+
if (this.hitStopRemaining > 0 && !this.suspended_) {
|
|
237
332
|
//counts down in real time, not scaled time, or a hit-stop would extend itself
|
|
238
333
|
this.hitStopRemaining -= deltaSeconds;
|
|
239
334
|
this.timeScale = this.hitStopRemaining > 0 ? this.hitStopScale : 1;
|
|
240
335
|
}
|
|
241
336
|
this.elapsed = Math.min(deltaSeconds, this.options.maxDelta) * this.timeScale;
|
|
337
|
+
//a parked clock reads 0, which is always inside budget - observing it would ratchet
|
|
338
|
+
//the ratio back up while hidden or hit-stopped, so only real frames count
|
|
339
|
+
const scaler = this.suspended_ || this.elapsed <= 0 ? null : this.scaler;
|
|
340
|
+
if (scaler) {
|
|
341
|
+
const ratio = scaler.observe(this.elapsed);
|
|
342
|
+
if (ratio !== this.app.renderer.resolution)
|
|
343
|
+
this.app.renderer.resize(this.width, this.height, ratio);
|
|
344
|
+
}
|
|
242
345
|
this.timeTotal += this.elapsed;
|
|
243
346
|
//no native "gamepad button pressed" event exists to attach a listener to, so this
|
|
244
347
|
//has to run once a frame instead, before the scene reads isDown/justPressed
|
|
@@ -282,6 +385,7 @@ export class Game {
|
|
|
282
385
|
destroy() {
|
|
283
386
|
Input.detach();
|
|
284
387
|
this.stopWatchingDpr?.();
|
|
388
|
+
this.stopWatchingVisibility?.();
|
|
285
389
|
this.stack.destroy();
|
|
286
390
|
this.onFrame.removeAll();
|
|
287
391
|
this.app.destroy(true, { children: true });
|