@vpmedia/phaser 1.123.0 → 1.125.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/index.js +635 -623
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts +3 -3
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts +27 -2
- package/dist/phaser/core/animation_parser.d.ts.map +1 -1
- package/dist/phaser/core/array_set.d.ts +11 -11
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/cache.d.ts.map +1 -1
- package/dist/phaser/core/callback.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts +125 -19
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts +3 -2
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/frame_data.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +3 -2
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts +5 -1
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +3 -3
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts +8 -8
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +11 -2
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/loader_parser.d.ts +14 -1
- package/dist/phaser/core/loader_parser.d.ts.map +1 -1
- package/dist/phaser/core/raf.d.ts +1 -1
- package/dist/phaser/core/raf.d.ts.map +1 -1
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +1 -1
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/stage.d.ts +16 -6
- package/dist/phaser/core/stage.d.ts.map +1 -1
- package/dist/phaser/core/time.d.ts.map +1 -1
- package/dist/phaser/core/timer.d.ts +1 -1
- package/dist/phaser/core/timer.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +13 -5
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +9 -7
- package/dist/phaser/core/tween_data.d.ts.map +1 -1
- package/dist/phaser/core/tween_manager.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts +6 -5
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/masker.d.ts +1 -1
- package/dist/phaser/display/canvas/masker.d.ts.map +1 -1
- package/dist/phaser/display/canvas/pool.d.ts +2 -2
- package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
- package/dist/phaser/display/canvas/renderer.d.ts +9 -8
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- package/dist/phaser/display/display_object.d.ts +5 -3
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts +1 -1
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts +1 -1
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts +6 -5
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts +3 -2
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts +2 -16
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts +14 -8
- package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts +2 -3
- package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +11 -5
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts +6 -4
- package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts +4 -4
- package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts +2 -2
- package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
- package/dist/phaser/display/webgl/mask_manager.d.ts +3 -2
- package/dist/phaser/display/webgl/mask_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts +11 -8
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts +8 -4
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/normal.d.ts +28 -3
- package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts +6 -5
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/stencil_manager.d.ts +3 -3
- package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture_util.d.ts +2 -2
- package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
- package/dist/phaser/display/webgl/util.d.ts +1 -1
- package/dist/phaser/display/webgl/util.d.ts.map +1 -1
- package/dist/phaser/geom/circle.d.ts.map +1 -1
- package/dist/phaser/geom/line.d.ts +10 -1
- package/dist/phaser/geom/line.d.ts.map +1 -1
- package/dist/phaser/geom/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/circle.d.ts +2 -1
- package/dist/phaser/geom/util/circle.d.ts.map +1 -1
- package/dist/phaser/geom/util/point.d.ts +1 -1
- package/dist/phaser/geom/util/point.d.ts.map +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
- package/dist/phaser/util/math.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/phaser/core/animation.ts +11 -11
- package/src/phaser/core/animation_manager.ts +12 -12
- package/src/phaser/core/animation_parser.ts +39 -37
- package/src/phaser/core/array_set.ts +28 -28
- package/src/phaser/core/cache.test.ts +33 -33
- package/src/phaser/core/cache.ts +7 -7
- package/src/phaser/core/callback.ts +1 -0
- package/src/phaser/core/callback_context.test.ts +8 -8
- package/src/phaser/core/device_util.ts +4 -4
- package/src/phaser/core/dom.ts +38 -24
- package/src/phaser/core/factory.ts +9 -2
- package/src/phaser/core/frame_data.test.ts +23 -23
- package/src/phaser/core/frame_data.ts +2 -5
- package/src/phaser/core/game.ts +12 -12
- package/src/phaser/core/input.ts +11 -10
- package/src/phaser/core/input_handler.test.ts +18 -18
- package/src/phaser/core/input_handler.ts +14 -14
- package/src/phaser/core/input_mouse.ts +13 -12
- package/src/phaser/core/input_pointer.test.ts +26 -26
- package/src/phaser/core/input_pointer.ts +4 -4
- package/src/phaser/core/input_touch.ts +8 -8
- package/src/phaser/core/loader.test.ts +26 -26
- package/src/phaser/core/loader.ts +63 -75
- package/src/phaser/core/loader_parser.test.ts +16 -16
- package/src/phaser/core/loader_parser.ts +16 -6
- package/src/phaser/core/raf.ts +1 -1
- package/src/phaser/core/registry.test.ts +6 -6
- package/src/phaser/core/scale_manager.ts +12 -11
- package/src/phaser/core/scene_manager.test.ts +30 -30
- package/src/phaser/core/scene_manager.ts +3 -3
- package/src/phaser/core/signal.test.ts +8 -8
- package/src/phaser/core/signal.ts +3 -3
- package/src/phaser/core/signal_dispatch.test.ts +30 -30
- package/src/phaser/core/sound.ts +45 -40
- package/src/phaser/core/sound_manager.ts +18 -22
- package/src/phaser/core/sound_sprite.ts +1 -1
- package/src/phaser/core/stage.ts +22 -12
- package/src/phaser/core/time.ts +1 -1
- package/src/phaser/core/timer.test.ts +47 -47
- package/src/phaser/core/timer.ts +2 -2
- package/src/phaser/core/tween.ts +34 -36
- package/src/phaser/core/tween_data.test.ts +119 -0
- package/src/phaser/core/tween_data.ts +54 -39
- package/src/phaser/core/tween_easing.test.ts +5 -5
- package/src/phaser/core/tween_manager.ts +2 -2
- package/src/phaser/display/bitmap_text.test.ts +30 -30
- package/src/phaser/display/bitmap_text.ts +3 -3
- package/src/phaser/display/button.ts +20 -18
- package/src/phaser/display/canvas/buffer.ts +2 -2
- package/src/phaser/display/canvas/graphics.ts +2 -2
- package/src/phaser/display/canvas/masker.ts +1 -1
- package/src/phaser/display/canvas/pool.test.ts +20 -20
- package/src/phaser/display/canvas/pool.ts +6 -6
- package/src/phaser/display/canvas/renderer.ts +18 -16
- package/src/phaser/display/canvas/tinter.ts +1 -1
- package/src/phaser/display/canvas/util.test.ts +25 -25
- package/src/phaser/display/canvas/util.ts +2 -2
- package/src/phaser/display/display_object.ts +16 -15
- package/src/phaser/display/graphics.test.ts +70 -20
- package/src/phaser/display/graphics.ts +46 -42
- package/src/phaser/display/group.ts +13 -12
- package/src/phaser/display/image.ts +35 -31
- package/src/phaser/display/sprite_util.ts +4 -3
- package/src/phaser/display/text.test.ts +28 -25
- package/src/phaser/display/text.ts +56 -62
- package/src/phaser/display/webgl/abstract_filter.ts +21 -11
- package/src/phaser/display/webgl/blend_manager.ts +4 -5
- package/src/phaser/display/webgl/earcut.test.ts +20 -20
- package/src/phaser/display/webgl/earcut.ts +46 -42
- package/src/phaser/display/webgl/fast_sprite_batch.ts +21 -16
- package/src/phaser/display/webgl/filter_manager.ts +7 -4
- package/src/phaser/display/webgl/filter_texture.ts +5 -5
- package/src/phaser/display/webgl/graphics.ts +3 -3
- package/src/phaser/display/webgl/mask_manager.ts +9 -14
- package/src/phaser/display/webgl/render_texture.ts +15 -14
- package/src/phaser/display/webgl/renderer.ts +10 -9
- package/src/phaser/display/webgl/shader/normal.ts +45 -35
- package/src/phaser/display/webgl/shader/shader.test.ts +24 -24
- package/src/phaser/display/webgl/shader_manager.test.ts +18 -18
- package/src/phaser/display/webgl/shader_manager.ts +1 -1
- package/src/phaser/display/webgl/sprite_batch.ts +10 -10
- package/src/phaser/display/webgl/stencil_manager.ts +4 -4
- package/src/phaser/display/webgl/texture.ts +2 -1
- package/src/phaser/display/webgl/texture_util.ts +2 -2
- package/src/phaser/display/webgl/util.ts +4 -4
- package/src/phaser/geom/circle.test.ts +38 -38
- package/src/phaser/geom/circle.ts +7 -7
- package/src/phaser/geom/ellipse.test.ts +12 -12
- package/src/phaser/geom/line.test.ts +15 -15
- package/src/phaser/geom/line.ts +5 -2
- package/src/phaser/geom/matrix.test.ts +31 -31
- package/src/phaser/geom/point.test.ts +31 -31
- package/src/phaser/geom/polygon.test.ts +27 -27
- package/src/phaser/geom/polygon.ts +2 -2
- package/src/phaser/geom/rectangle.test.ts +87 -87
- package/src/phaser/geom/rectangle.ts +12 -13
- package/src/phaser/geom/rounded_rectangle.test.ts +9 -9
- package/src/phaser/geom/util/circle.test.ts +5 -5
- package/src/phaser/geom/util/circle.ts +8 -11
- package/src/phaser/geom/util/ellipse.test.ts +2 -2
- package/src/phaser/geom/util/line.test.ts +2 -2
- package/src/phaser/geom/util/matrix.test.ts +4 -4
- package/src/phaser/geom/util/point.test.ts +2 -2
- package/src/phaser/geom/util/point.ts +6 -8
- package/src/phaser/geom/util/polygon.test.ts +2 -2
- package/src/phaser/geom/util/rectangle.test.ts +2 -2
- package/src/phaser/geom/util/rectangle.ts +1 -1
- package/src/phaser/geom/util/rounded_rectangle.test.ts +2 -2
- package/src/phaser/util/math.test.ts +41 -41
- package/src/phaser/util/math.ts +7 -5
package/src/phaser/core/dom.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import { Point } from '../geom/point.js';
|
|
2
|
+
|
|
3
|
+
/** An element rectangle after the cushion has been applied to every edge. */
|
|
4
|
+
export type CalibratedBounds = {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
left: number;
|
|
8
|
+
right: number;
|
|
9
|
+
top: number;
|
|
10
|
+
bottom: number;
|
|
11
|
+
};
|
|
2
12
|
import type { Device } from './device.js';
|
|
3
13
|
|
|
4
14
|
class VisualBoundsDesktopRectangle {
|
|
@@ -7,7 +17,7 @@ class VisualBoundsDesktopRectangle {
|
|
|
7
17
|
* @returns {number} The horizontal scroll position in pixels.
|
|
8
18
|
*/
|
|
9
19
|
public get x(): number {
|
|
10
|
-
return
|
|
20
|
+
return 'pageXOffset' in globalThis ? window.pageXOffset : document.documentElement.scrollLeft;
|
|
11
21
|
}
|
|
12
22
|
|
|
13
23
|
/**
|
|
@@ -15,7 +25,7 @@ class VisualBoundsDesktopRectangle {
|
|
|
15
25
|
* @returns {number} The vertical scroll position in pixels.
|
|
16
26
|
*/
|
|
17
27
|
public get y(): number {
|
|
18
|
-
return
|
|
28
|
+
return 'pageYOffset' in globalThis ? window.pageYOffset : document.documentElement.scrollTop;
|
|
19
29
|
}
|
|
20
30
|
|
|
21
31
|
/**
|
|
@@ -71,7 +81,7 @@ class VisualBoundsRectangle {
|
|
|
71
81
|
* @returns {number} The horizontal scroll position in pixels.
|
|
72
82
|
*/
|
|
73
83
|
public get x(): number {
|
|
74
|
-
return
|
|
84
|
+
return 'pageXOffset' in globalThis ? window.pageXOffset : document.documentElement.scrollLeft;
|
|
75
85
|
}
|
|
76
86
|
|
|
77
87
|
/**
|
|
@@ -79,7 +89,7 @@ class VisualBoundsRectangle {
|
|
|
79
89
|
* @returns {number} The vertical scroll position in pixels.
|
|
80
90
|
*/
|
|
81
91
|
public get y(): number {
|
|
82
|
-
return
|
|
92
|
+
return 'pageYOffset' in globalThis ? window.pageYOffset : document.documentElement.scrollTop;
|
|
83
93
|
}
|
|
84
94
|
|
|
85
95
|
/**
|
|
@@ -170,9 +180,9 @@ class DocumentBoundsRectangle {
|
|
|
170
180
|
|
|
171
181
|
export class DOM {
|
|
172
182
|
public treatAsDesktop: boolean;
|
|
173
|
-
public visualBounds:
|
|
174
|
-
public layoutBounds:
|
|
175
|
-
public documentBounds:
|
|
183
|
+
public visualBounds: VisualBoundsDesktopRectangle | VisualBoundsRectangle;
|
|
184
|
+
public layoutBounds: LayoutBoundsDesktopRectangle | LayoutBoundsRectangle;
|
|
185
|
+
public documentBounds: DocumentBoundsRectangle;
|
|
176
186
|
public scrollXProvider: () => number;
|
|
177
187
|
public scrollYProvider: () => number;
|
|
178
188
|
|
|
@@ -189,13 +199,11 @@ export class DOM {
|
|
|
189
199
|
this.layoutBounds = this.treatAsDesktop ? new LayoutBoundsDesktopRectangle() : new LayoutBoundsRectangle();
|
|
190
200
|
this.documentBounds = new DocumentBoundsRectangle();
|
|
191
201
|
this.scrollXProvider =
|
|
192
|
-
|
|
202
|
+
'pageXOffset' in globalThis
|
|
193
203
|
? (): number => window.pageXOffset
|
|
194
204
|
: (): number => document.documentElement.scrollLeft;
|
|
195
205
|
this.scrollYProvider =
|
|
196
|
-
|
|
197
|
-
? (): number => window.pageYOffset
|
|
198
|
-
: (): number => document.documentElement.scrollTop;
|
|
206
|
+
'pageYOffset' in globalThis ? (): number => window.pageYOffset : (): number => document.documentElement.scrollTop;
|
|
199
207
|
}
|
|
200
208
|
|
|
201
209
|
/**
|
|
@@ -222,12 +230,13 @@ export class DOM {
|
|
|
222
230
|
* @param {number} cushion - Optional padding to add around the element.
|
|
223
231
|
* @returns {boolean} True if bounds were successfully retrieved, false otherwise.
|
|
224
232
|
*/
|
|
225
|
-
public getBounds(element: HTMLCanvasElement, cushion = 0) {
|
|
226
|
-
|
|
227
|
-
|
|
233
|
+
public getBounds(element: HTMLCanvasElement, cushion = 0): CalibratedBounds | false {
|
|
234
|
+
// a jQuery-style wrapper was accepted here historically, so unwrap the first entry of one
|
|
235
|
+
const target = element.nodeType === undefined ? (element as unknown as HTMLCanvasElement[])[0] : element;
|
|
236
|
+
if (target?.nodeType !== 1) {
|
|
228
237
|
return false;
|
|
229
238
|
}
|
|
230
|
-
return this.calibrate(
|
|
239
|
+
return this.calibrate(target.getBoundingClientRect(), cushion);
|
|
231
240
|
}
|
|
232
241
|
|
|
233
242
|
/**
|
|
@@ -236,7 +245,7 @@ export class DOM {
|
|
|
236
245
|
* @param {number} cushion - Optional padding to add around the rectangle.
|
|
237
246
|
* @returns {{width: number, height: number, left: number, right: number, top: number, bottom: number}} The calibrated rectangle.
|
|
238
247
|
*/
|
|
239
|
-
public calibrate(coords: DOMRect, cushion = 0) {
|
|
248
|
+
public calibrate(coords: DOMRect, cushion = 0): CalibratedBounds {
|
|
240
249
|
const output = {
|
|
241
250
|
width: 0,
|
|
242
251
|
height: 0,
|
|
@@ -256,16 +265,21 @@ export class DOM {
|
|
|
256
265
|
* @returns {string} The screen orientation ('portrait-primary', 'landscape-primary', etc.).
|
|
257
266
|
*/
|
|
258
267
|
public getScreenOrientation(primaryFallback: string | null = null): OrientationType {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
268
|
+
// the prefixed orientation properties predate the standard one and are absent from lib.dom
|
|
269
|
+
const screen = globalThis.screen as Screen & {
|
|
270
|
+
mozOrientation?: string;
|
|
271
|
+
msOrientation?: string;
|
|
272
|
+
};
|
|
273
|
+
const orientation: ScreenOrientation | string | undefined =
|
|
274
|
+
screen.orientation ?? screen.mozOrientation ?? screen.msOrientation;
|
|
275
|
+
if (typeof orientation === 'string') {
|
|
266
276
|
// moz/ms-orientation are strings
|
|
267
277
|
return orientation;
|
|
268
278
|
}
|
|
279
|
+
if (typeof orientation?.type === 'string') {
|
|
280
|
+
// Screen Orientation API specification
|
|
281
|
+
return orientation.type;
|
|
282
|
+
}
|
|
269
283
|
const PORTRAIT = 'portrait-primary';
|
|
270
284
|
const LANDSCAPE = 'landscape-primary';
|
|
271
285
|
if (primaryFallback === 'screen') {
|
|
@@ -278,7 +292,7 @@ export class DOM {
|
|
|
278
292
|
if (primaryFallback === 'window.orientation' && typeof legacyOrientation === 'number') {
|
|
279
293
|
// This may change by device based on "natural" orientation.
|
|
280
294
|
return legacyOrientation === 0 || legacyOrientation === 180 ? PORTRAIT : LANDSCAPE;
|
|
281
|
-
} else if (globalThis.matchMedia) {
|
|
295
|
+
} else if (typeof globalThis.matchMedia === 'function') {
|
|
282
296
|
if (globalThis.matchMedia('(orientation: portrait)').matches) {
|
|
283
297
|
return PORTRAIT;
|
|
284
298
|
} else if (globalThis.matchMedia('(orientation: landscape)').matches) {
|
|
@@ -6,6 +6,7 @@ import { Image } from '../display/image.js';
|
|
|
6
6
|
import { Text } from '../display/text.js';
|
|
7
7
|
import type { Game } from './game.js';
|
|
8
8
|
import type { SignalListener } from './signal.js';
|
|
9
|
+
import type { TextStyle } from '../display/text.js';
|
|
9
10
|
|
|
10
11
|
export class GameObjectFactory {
|
|
11
12
|
public game!: Game;
|
|
@@ -26,7 +27,13 @@ export class GameObjectFactory {
|
|
|
26
27
|
* @param {Group} group - The parent group for the image.
|
|
27
28
|
* @returns {Image} The created Image object.
|
|
28
29
|
*/
|
|
29
|
-
public image(
|
|
30
|
+
public image(
|
|
31
|
+
x: number,
|
|
32
|
+
y: number,
|
|
33
|
+
key: string,
|
|
34
|
+
frame: string | number | null = null,
|
|
35
|
+
group: Group | null = null
|
|
36
|
+
): Image {
|
|
30
37
|
const target = group ?? this.game.world;
|
|
31
38
|
return target.add(new Image(this.game, x, y, key, frame));
|
|
32
39
|
}
|
|
@@ -51,7 +58,7 @@ export class GameObjectFactory {
|
|
|
51
58
|
* @param {Group | null} group - The parent group for the text.
|
|
52
59
|
* @returns {Text} The created Text object.
|
|
53
60
|
*/
|
|
54
|
-
public text(x: number, y: number, text:
|
|
61
|
+
public text(x: number, y: number, text: string | number, style: TextStyle, group: Group | null = null): Text {
|
|
55
62
|
const parent = group ?? this.game.world;
|
|
56
63
|
return parent.add(new Text(this.game, x, y, text, style));
|
|
57
64
|
}
|
|
@@ -10,89 +10,89 @@ const seed = (names: string[]): FrameData => {
|
|
|
10
10
|
return data;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
describe('FrameData', () => {
|
|
14
|
-
describe('addFrame', () => {
|
|
15
|
-
it('assigns a sequential index and registers the name', () => {
|
|
13
|
+
describe('FrameData', (): void => {
|
|
14
|
+
describe('addFrame', (): void => {
|
|
15
|
+
it('assigns a sequential index and registers the name', (): void => {
|
|
16
16
|
const data = seed(['a', 'b']);
|
|
17
|
-
expect(data._frames.map((frame) => frame.index)).toStrictEqual([0, 1]);
|
|
17
|
+
expect(data._frames.map((frame): number => frame.index)).toStrictEqual([0, 1]);
|
|
18
18
|
expect(data._frameNames).toStrictEqual({ a: 0, b: 1 });
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
it('does not register an empty name', () => {
|
|
21
|
+
it('does not register an empty name', (): void => {
|
|
22
22
|
const data = new FrameData();
|
|
23
23
|
data.addFrame(new Frame(0, 0, 0, 10, 10, ''));
|
|
24
24
|
expect(data._frameNames).toStrictEqual({});
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
describe('getFrame', () => {
|
|
29
|
-
it('returns the frame at the index', () => {
|
|
28
|
+
describe('getFrame', (): void => {
|
|
29
|
+
it('returns the frame at the index', (): void => {
|
|
30
30
|
const data = seed(['a', 'b', 'c']);
|
|
31
31
|
expect(data.getFrame(1).name).toBe('b');
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
it('falls back to the first frame when the index is out of range', () => {
|
|
34
|
+
it('falls back to the first frame when the index is out of range', (): void => {
|
|
35
35
|
const data = seed(['a', 'b']);
|
|
36
36
|
expect(data.getFrame(9).name).toBe('a');
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
describe('getFrameByName', () => {
|
|
41
|
-
it('finds a registered frame', () => {
|
|
40
|
+
describe('getFrameByName', (): void => {
|
|
41
|
+
it('finds a registered frame', (): void => {
|
|
42
42
|
const data = seed(['a', 'b']);
|
|
43
43
|
expect(data.getFrameByName('b')?.index).toBe(1);
|
|
44
44
|
});
|
|
45
45
|
|
|
46
|
-
it('returns null for an unknown name', () => {
|
|
46
|
+
it('returns null for an unknown name', (): void => {
|
|
47
47
|
const data = seed(['a']);
|
|
48
48
|
expect(data.getFrameByName('missing')).toBeNull();
|
|
49
49
|
});
|
|
50
50
|
|
|
51
|
-
it('returns null when the name maps to a frame that is gone', () => {
|
|
51
|
+
it('returns null when the name maps to a frame that is gone', (): void => {
|
|
52
52
|
const data = seed(['a']);
|
|
53
53
|
data._frames.length = 0;
|
|
54
54
|
expect(data.getFrameByName('a')).toBeNull();
|
|
55
55
|
});
|
|
56
56
|
});
|
|
57
57
|
|
|
58
|
-
describe('checkFrameName', () => {
|
|
59
|
-
it('distinguishes known from unknown names', () => {
|
|
58
|
+
describe('checkFrameName', (): void => {
|
|
59
|
+
it('distinguishes known from unknown names', (): void => {
|
|
60
60
|
const data = seed(['a']);
|
|
61
61
|
expect(data.checkFrameName('a')).toBe(true);
|
|
62
62
|
expect(data.checkFrameName('b')).toBe(false);
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
65
|
|
|
66
|
-
describe('getFrameRange', () => {
|
|
67
|
-
it('collects the inclusive range', () => {
|
|
66
|
+
describe('getFrameRange', (): void => {
|
|
67
|
+
it('collects the inclusive range', (): void => {
|
|
68
68
|
const data = seed(['a', 'b', 'c', 'd']);
|
|
69
|
-
expect(data.getFrameRange(1, 2).map((frame) => frame.name)).toStrictEqual(['b', 'c']);
|
|
69
|
+
expect(data.getFrameRange(1, 2).map((frame): string => frame.name)).toStrictEqual(['b', 'c']);
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
-
it('appends into a supplied output array', () => {
|
|
72
|
+
it('appends into a supplied output array', (): void => {
|
|
73
73
|
const data = seed(['a', 'b']);
|
|
74
74
|
const output = [data.getFrame(0)];
|
|
75
75
|
expect(data.getFrameRange(1, 1, output)).toHaveLength(2);
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
-
describe('getFrameIndexes', () => {
|
|
80
|
-
it('maps numeric indexes through', () => {
|
|
79
|
+
describe('getFrameIndexes', (): void => {
|
|
80
|
+
it('maps numeric indexes through', (): void => {
|
|
81
81
|
const data = seed(['a', 'b', 'c']);
|
|
82
82
|
expect(data.getFrameIndexes([0, 2])).toStrictEqual([0, 2]);
|
|
83
83
|
});
|
|
84
84
|
|
|
85
|
-
it('maps names when numeric indexing is off', () => {
|
|
85
|
+
it('maps names when numeric indexing is off', (): void => {
|
|
86
86
|
const data = seed(['a', 'b', 'c']);
|
|
87
87
|
expect(data.getFrameIndexes(['c', 'a'], false)).toStrictEqual([2, 0]);
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
it('skips names that do not resolve', () => {
|
|
90
|
+
it('skips names that do not resolve', (): void => {
|
|
91
91
|
const data = seed(['a']);
|
|
92
92
|
expect(data.getFrameIndexes(['a', 'missing'], false)).toStrictEqual([0]);
|
|
93
93
|
});
|
|
94
94
|
|
|
95
|
-
it('returns every index when given no frames', () => {
|
|
95
|
+
it('returns every index when given no frames', (): void => {
|
|
96
96
|
const data = seed(['a', 'b', 'c']);
|
|
97
97
|
expect(data.getFrameIndexes([])).toStrictEqual([0, 1, 2]);
|
|
98
98
|
});
|
|
@@ -20,10 +20,7 @@ export class FrameData {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
public getFrame(index = 0): Frame {
|
|
23
|
-
|
|
24
|
-
index = 0;
|
|
25
|
-
}
|
|
26
|
-
return this._frames[index]!;
|
|
23
|
+
return this._frames[index >= this._frames.length ? 0 : index]!;
|
|
27
24
|
}
|
|
28
25
|
|
|
29
26
|
public getFrameByName(name: string): Frame | null {
|
|
@@ -59,7 +56,7 @@ export class FrameData {
|
|
|
59
56
|
output: number[] | null = null
|
|
60
57
|
): number[] {
|
|
61
58
|
const result = output ?? [];
|
|
62
|
-
if (frames
|
|
59
|
+
if (frames.length > 0) {
|
|
63
60
|
for (const f of frames) {
|
|
64
61
|
if (useNumericIndex && this._frames[f as number]) {
|
|
65
62
|
result.push(this._frames[f as number]!.index);
|
package/src/phaser/core/game.ts
CHANGED
|
@@ -165,10 +165,10 @@ export class Game {
|
|
|
165
165
|
this.input.boot();
|
|
166
166
|
this.sound.boot();
|
|
167
167
|
this.state.boot();
|
|
168
|
-
if (window.focus) {
|
|
168
|
+
if (typeof window.focus === 'function') {
|
|
169
169
|
window.focus();
|
|
170
170
|
}
|
|
171
|
-
if (
|
|
171
|
+
if (this.config.isSkipTicker !== true) {
|
|
172
172
|
this.raf = new RequestAnimationFrame(this);
|
|
173
173
|
this.raf.start();
|
|
174
174
|
}
|
|
@@ -180,7 +180,7 @@ export class Game {
|
|
|
180
180
|
*/
|
|
181
181
|
public createRendererCanvas(): void {
|
|
182
182
|
this.logger.info('createRendererCanvas');
|
|
183
|
-
if (this.canvas) {
|
|
183
|
+
if (this.canvas as HTMLCanvasElement | undefined) {
|
|
184
184
|
removeFromDOM(this.canvas);
|
|
185
185
|
}
|
|
186
186
|
this.canvas = this.config.canvas ?? create(this, this.width, this.height, this.config.canvasID, true);
|
|
@@ -212,10 +212,10 @@ export class Game {
|
|
|
212
212
|
isWebGlReady = true;
|
|
213
213
|
} catch (error) {
|
|
214
214
|
isWebGlReady = false;
|
|
215
|
-
if (globalThis.PhaserRegistry?.GL_PROGRAM_INFO_LOG) {
|
|
215
|
+
if (globalThis.PhaserRegistry?.GL_PROGRAM_INFO_LOG != null) {
|
|
216
216
|
this.logger.warn('WebGL program info', { log: globalThis.PhaserRegistry.GL_PROGRAM_INFO_LOG });
|
|
217
217
|
}
|
|
218
|
-
if (globalThis.PhaserRegistry?.GL_SHADER_INFO_LOG) {
|
|
218
|
+
if (globalThis.PhaserRegistry?.GL_SHADER_INFO_LOG != null) {
|
|
219
219
|
this.logger.warn('WebGL shader info', { log: globalThis.PhaserRegistry.GL_SHADER_INFO_LOG });
|
|
220
220
|
}
|
|
221
221
|
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
@@ -229,7 +229,7 @@ export class Game {
|
|
|
229
229
|
if (this.contextRestoredBinded) {
|
|
230
230
|
this.canvas.removeEventListener('webglcontextlost', this.contextRestoredBinded, false);
|
|
231
231
|
}
|
|
232
|
-
if (this.renderer) {
|
|
232
|
+
if (this.renderer as CanvasRenderer | WebGLRenderer | undefined) {
|
|
233
233
|
this.renderer.destroy();
|
|
234
234
|
}
|
|
235
235
|
this.createRendererCanvas();
|
|
@@ -278,7 +278,7 @@ export class Game {
|
|
|
278
278
|
this.parseConfigElement(config, 'renderType', RENDER_AUTO);
|
|
279
279
|
this.parseConfigElement(config, 'isForceDisabledAudio', false);
|
|
280
280
|
this.parseConfigElement(config, 'maxParallelDownloads', 16);
|
|
281
|
-
if (config.parent) {
|
|
281
|
+
if (config.parent !== undefined) {
|
|
282
282
|
this.parent = config.parent;
|
|
283
283
|
}
|
|
284
284
|
this.state = new SceneManager(this, config.state ?? null);
|
|
@@ -291,7 +291,7 @@ export class Game {
|
|
|
291
291
|
public contextLost(event: Event): void {
|
|
292
292
|
this.logger.info('contextLost', { type: event.type });
|
|
293
293
|
event.preventDefault();
|
|
294
|
-
if (this.renderer) {
|
|
294
|
+
if (this.renderer as CanvasRenderer | WebGLRenderer | undefined) {
|
|
295
295
|
this.renderer.contextLost = true;
|
|
296
296
|
}
|
|
297
297
|
}
|
|
@@ -302,7 +302,7 @@ export class Game {
|
|
|
302
302
|
*/
|
|
303
303
|
public contextRestored(event: Event): void {
|
|
304
304
|
this.logger.info('contextRestored', { type: event.type });
|
|
305
|
-
if (this.renderer) {
|
|
305
|
+
if (this.renderer as CanvasRenderer | WebGLRenderer | undefined) {
|
|
306
306
|
this.renderer.initContext(this);
|
|
307
307
|
// This.cache.clearGLTextures();
|
|
308
308
|
this.renderer.contextLost = false;
|
|
@@ -340,10 +340,10 @@ export class Game {
|
|
|
340
340
|
this.logger.info('destroy');
|
|
341
341
|
this.isPaused = true;
|
|
342
342
|
|
|
343
|
-
if (!this.cache) {
|
|
343
|
+
if (!(this.cache as Cache | undefined)) {
|
|
344
344
|
return;
|
|
345
345
|
}
|
|
346
|
-
if (this.raf) {
|
|
346
|
+
if (this.raf as RequestAnimationFrame | undefined) {
|
|
347
347
|
this.raf.stop();
|
|
348
348
|
}
|
|
349
349
|
|
|
@@ -354,7 +354,7 @@ export class Game {
|
|
|
354
354
|
this.stage.destroy();
|
|
355
355
|
this.input.destroy();
|
|
356
356
|
|
|
357
|
-
if (this.canvas) {
|
|
357
|
+
if (this.canvas as HTMLCanvasElement | undefined) {
|
|
358
358
|
if (this.contextLostBinded) {
|
|
359
359
|
this.canvas.removeEventListener('webglcontextlost', this.contextLostBinded, false);
|
|
360
360
|
}
|
package/src/phaser/core/input.ts
CHANGED
|
@@ -14,6 +14,7 @@ import type { Game } from './game.js';
|
|
|
14
14
|
import type { DisplayObject } from '../display/display_object.js';
|
|
15
15
|
import type { InputEvent } from './input_event.js';
|
|
16
16
|
import type { CandidateHandler, PointerMoveCallback } from './callback.js';
|
|
17
|
+
import type { InputHandler } from './input_handler.js';
|
|
17
18
|
|
|
18
19
|
const MAX_POINTERS = 10;
|
|
19
20
|
|
|
@@ -50,7 +51,7 @@ export class Input {
|
|
|
50
51
|
public pointer7!: Pointer | null;
|
|
51
52
|
public pointer8!: Pointer | null;
|
|
52
53
|
public pointer9!: Pointer | null;
|
|
53
|
-
public pointer10!:
|
|
54
|
+
public pointer10!: Pointer | null;
|
|
54
55
|
public pointers!: Pointer[];
|
|
55
56
|
public activePointer!: Pointer;
|
|
56
57
|
public mousePointer!: Pointer;
|
|
@@ -63,7 +64,7 @@ export class Input {
|
|
|
63
64
|
public onTap!: Signal;
|
|
64
65
|
public onHold!: Signal;
|
|
65
66
|
public minPriorityID!: number;
|
|
66
|
-
public interactiveItems!: ArraySet
|
|
67
|
+
public interactiveItems!: ArraySet<InputHandler>;
|
|
67
68
|
public _localPoint!: Point;
|
|
68
69
|
public _pollCounter!: number;
|
|
69
70
|
public _oldPosition!: Point;
|
|
@@ -118,7 +119,7 @@ export class Input {
|
|
|
118
119
|
this.onTap = null!;
|
|
119
120
|
this.onHold = null!;
|
|
120
121
|
this.minPriorityID = 0;
|
|
121
|
-
this.interactiveItems = new ArraySet();
|
|
122
|
+
this.interactiveItems = new ArraySet<InputHandler>();
|
|
122
123
|
this._localPoint = new Point();
|
|
123
124
|
this._pollCounter = 0;
|
|
124
125
|
this._oldPosition = null!;
|
|
@@ -291,7 +292,7 @@ export class Input {
|
|
|
291
292
|
* @param {MouseEvent|TouchEvent|PointerEvent} event - TBD.
|
|
292
293
|
* @returns {Pointer} TBD.
|
|
293
294
|
*/
|
|
294
|
-
public startPointer(event: InputEvent) {
|
|
295
|
+
public startPointer(event: InputEvent): Pointer | null {
|
|
295
296
|
if (this.maxPointers >= 0 && this.countActivePointers(this.maxPointers) >= this.maxPointers) {
|
|
296
297
|
return null;
|
|
297
298
|
}
|
|
@@ -315,7 +316,7 @@ export class Input {
|
|
|
315
316
|
* @param {MouseEvent|TouchEvent|PointerEvent} event - TBD.
|
|
316
317
|
* @returns {Pointer} TBD.
|
|
317
318
|
*/
|
|
318
|
-
public updatePointer(event: InputEvent) {
|
|
319
|
+
public updatePointer(event: InputEvent): Pointer | null {
|
|
319
320
|
if (this.pointer1.active && this.pointer1.identifier === event.identifier) {
|
|
320
321
|
return this.pointer1.move(event);
|
|
321
322
|
}
|
|
@@ -336,7 +337,7 @@ export class Input {
|
|
|
336
337
|
* @param {MouseEvent|TouchEvent|PointerEvent} event - TBD.
|
|
337
338
|
* @returns {Pointer} TBD.
|
|
338
339
|
*/
|
|
339
|
-
public stopPointer(event: InputEvent) {
|
|
340
|
+
public stopPointer(event: InputEvent): Pointer | null {
|
|
340
341
|
if (this.pointer1.active && this.pointer1.identifier === event.identifier) {
|
|
341
342
|
return this.pointer1.stop(event);
|
|
342
343
|
}
|
|
@@ -442,7 +443,7 @@ export class Input {
|
|
|
442
443
|
}
|
|
443
444
|
this.getLocalPosition(displayObject, pointer, this._localPoint);
|
|
444
445
|
localPoint.copyFrom(this._localPoint);
|
|
445
|
-
if (displayObject.hitArea
|
|
446
|
+
if (displayObject.hitArea !== null) {
|
|
446
447
|
return displayObject.hitArea.contains(this._localPoint.x, this._localPoint.y);
|
|
447
448
|
} else if (displayObject instanceof Image) {
|
|
448
449
|
const { width } = displayObject.texture.frame;
|
|
@@ -456,7 +457,7 @@ export class Input {
|
|
|
456
457
|
}
|
|
457
458
|
} else if (displayObject instanceof Graphics) {
|
|
458
459
|
for (const data of displayObject.graphicsData) {
|
|
459
|
-
if (data.fill && data.shape
|
|
460
|
+
if (data.fill && (data.shape?.contains(this._localPoint.x, this._localPoint.y) ?? false)) {
|
|
460
461
|
// Only deal with fills..
|
|
461
462
|
return true;
|
|
462
463
|
}
|
|
@@ -489,7 +490,7 @@ export class Input {
|
|
|
489
490
|
/**
|
|
490
491
|
* TBD.
|
|
491
492
|
*/
|
|
492
|
-
public set x(value) {
|
|
493
|
+
public set x(value: number) {
|
|
493
494
|
this._x = Math.floor(value);
|
|
494
495
|
}
|
|
495
496
|
|
|
@@ -504,7 +505,7 @@ export class Input {
|
|
|
504
505
|
/**
|
|
505
506
|
* TBD.
|
|
506
507
|
*/
|
|
507
|
-
public set y(value) {
|
|
508
|
+
public set y(value: number) {
|
|
508
509
|
this._y = Math.floor(value);
|
|
509
510
|
}
|
|
510
511
|
|
|
@@ -9,28 +9,28 @@ const createSprite = (): Image =>
|
|
|
9
9
|
game: {
|
|
10
10
|
time: { time: 0 },
|
|
11
11
|
canvas: { style: { cursor: 'default' } },
|
|
12
|
-
input: { interactiveItems: { add: () => undefined, remove: () => undefined } },
|
|
12
|
+
input: { interactiveItems: { add: (): undefined => undefined, remove: (): undefined => undefined } },
|
|
13
13
|
},
|
|
14
14
|
events: {
|
|
15
|
-
onAddedToGroup: { add: () => undefined },
|
|
16
|
-
onRemovedFromGroup: { add: () => undefined },
|
|
15
|
+
onAddedToGroup: { add: (): undefined => undefined },
|
|
16
|
+
onRemovedFromGroup: { add: (): undefined => undefined },
|
|
17
17
|
},
|
|
18
18
|
}) as unknown as Image;
|
|
19
19
|
|
|
20
|
-
describe('InputHandler', () => {
|
|
21
|
-
describe('pointerData', () => {
|
|
22
|
-
it('seeds pointer 0 from the constructor', () => {
|
|
20
|
+
describe('InputHandler', (): void => {
|
|
21
|
+
describe('pointerData', (): void => {
|
|
22
|
+
it('seeds pointer 0 from the constructor', (): void => {
|
|
23
23
|
const handler = new InputHandler(createSprite());
|
|
24
24
|
expect(handler._pointerData).toHaveLength(1);
|
|
25
25
|
expect(handler.pointerData(0).id).toBe(0);
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
it('returns the same record on repeat access', () => {
|
|
28
|
+
it('returns the same record on repeat access', (): void => {
|
|
29
29
|
const handler = new InputHandler(createSprite());
|
|
30
30
|
expect(handler.pointerData(0)).toBe(handler.pointerData(0));
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
it('creates a record on first access of an unseeded pointer', () => {
|
|
33
|
+
it('creates a record on first access of an unseeded pointer', (): void => {
|
|
34
34
|
const handler = new InputHandler(createSprite());
|
|
35
35
|
const data = handler.pointerData(7);
|
|
36
36
|
expect(data.id).toBe(7);
|
|
@@ -38,13 +38,13 @@ describe('InputHandler', () => {
|
|
|
38
38
|
expect(handler.pointerData(7)).toBe(data);
|
|
39
39
|
});
|
|
40
40
|
|
|
41
|
-
it('hands back a record whose mutations are visible through the array', () => {
|
|
41
|
+
it('hands back a record whose mutations are visible through the array', (): void => {
|
|
42
42
|
const handler = new InputHandler(createSprite());
|
|
43
43
|
handler.pointerData(3).isOver = true;
|
|
44
44
|
expect(handler._pointerData[3]?.isOver).toBe(true);
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
it('exposes every field a fresh record needs', () => {
|
|
47
|
+
it('exposes every field a fresh record needs', (): void => {
|
|
48
48
|
const handler = new InputHandler(createSprite());
|
|
49
49
|
expect(handler.pointerData(1)).toStrictEqual({
|
|
50
50
|
id: 1,
|
|
@@ -66,18 +66,18 @@ describe('InputHandler', () => {
|
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
describe('start', () => {
|
|
70
|
-
it('populates the ten pointer slots the input system tracks', () => {
|
|
69
|
+
describe('start', (): void => {
|
|
70
|
+
it('populates the ten pointer slots the input system tracks', (): void => {
|
|
71
71
|
const handler = new InputHandler(createSprite());
|
|
72
72
|
handler.start();
|
|
73
73
|
expect(handler._pointerData).toHaveLength(10);
|
|
74
|
-
expect(handler._pointerData.map((data) => data.id)).toStrictEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
74
|
+
expect(handler._pointerData.map((data): number => data.id)).toStrictEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
|
75
75
|
expect(handler.enabled).toBe(true);
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
78
|
|
|
79
|
-
describe('reset', () => {
|
|
80
|
-
it('clears pointer state back to a fresh record', () => {
|
|
79
|
+
describe('reset', (): void => {
|
|
80
|
+
it('clears pointer state back to a fresh record', (): void => {
|
|
81
81
|
const handler = new InputHandler(createSprite());
|
|
82
82
|
handler.start();
|
|
83
83
|
handler.pointerData(2).isDown = true;
|
|
@@ -89,8 +89,8 @@ describe('InputHandler', () => {
|
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
-
describe('pointer accessors', () => {
|
|
93
|
-
it('read through to the backing record', () => {
|
|
92
|
+
describe('pointer accessors', (): void => {
|
|
93
|
+
it('read through to the backing record', (): void => {
|
|
94
94
|
const handler = new InputHandler(createSprite());
|
|
95
95
|
handler.start();
|
|
96
96
|
const data = handler.pointerData(4);
|
|
@@ -104,7 +104,7 @@ describe('InputHandler', () => {
|
|
|
104
104
|
expect(handler.pointerTimeDown(4)).toBe(99);
|
|
105
105
|
});
|
|
106
106
|
|
|
107
|
-
it('default to pointer 0', () => {
|
|
107
|
+
it('default to pointer 0', (): void => {
|
|
108
108
|
const handler = new InputHandler(createSprite());
|
|
109
109
|
handler.pointerData(0).x = 5;
|
|
110
110
|
expect(handler.pointerX()).toBe(5);
|