@vpmedia/phaser 1.111.0 → 1.113.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 +1300 -1334
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts +14 -10
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts +10 -8
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts +5 -4
- package/dist/phaser/core/animation_parser.d.ts.map +1 -1
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/cache.d.ts +4 -3
- package/dist/phaser/core/cache.d.ts.map +1 -1
- package/dist/phaser/core/const.d.ts.map +1 -1
- package/dist/phaser/core/device.d.ts.map +1 -1
- package/dist/phaser/core/device_util.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts +3 -2
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/event_manager.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts +1 -1
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/frame.d.ts.map +1 -1
- package/dist/phaser/core/frame_data.d.ts.map +1 -1
- package/dist/phaser/core/game.d.ts +1 -1
- package/dist/phaser/core/game.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +8 -6
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts +40 -30
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts +3 -2
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_mspointer.d.ts +3 -2
- package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +6 -4
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts +3 -2
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +4 -3
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/loader_parser.d.ts +9 -8
- package/dist/phaser/core/loader_parser.d.ts.map +1 -1
- package/dist/phaser/core/raf.d.ts +3 -2
- package/dist/phaser/core/raf.d.ts.map +1 -1
- package/dist/phaser/core/registry.d.ts +7 -0
- package/dist/phaser/core/registry.d.ts.map +1 -0
- package/dist/phaser/core/scale_manager.d.ts +1 -1
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene.d.ts +0 -1
- package/dist/phaser/core/scene.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts +1 -1
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts +0 -1
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/signal_binding.d.ts +4 -3
- package/dist/phaser/core/signal_binding.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts +6 -4
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +3 -2
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/sound_sprite.d.ts +5 -4
- package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
- package/dist/phaser/core/stage.d.ts +3 -2
- package/dist/phaser/core/stage.d.ts.map +1 -1
- package/dist/phaser/core/time.d.ts +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/timer_event.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +10 -7
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +3 -2
- package/dist/phaser/core/tween_data.d.ts.map +1 -1
- package/dist/phaser/core/tween_easing.d.ts.map +1 -1
- package/dist/phaser/core/tween_manager.d.ts +3 -2
- package/dist/phaser/core/tween_manager.d.ts.map +1 -1
- package/dist/phaser/core/world.d.ts +3 -2
- package/dist/phaser/core/world.d.ts.map +1 -1
- package/dist/phaser/display/bitmap_text.d.ts +3 -2
- package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts +3 -2
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/graphics.d.ts +7 -6
- package/dist/phaser/display/canvas/graphics.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 +10 -8
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/tinter.d.ts +3 -2
- package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
- package/dist/phaser/display/canvas/util.d.ts +2 -2
- package/dist/phaser/display/canvas/util.d.ts.map +1 -1
- package/dist/phaser/display/display_object.d.ts +14 -12
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts +8 -5
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts +4 -3
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts +13 -10
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_batch.d.ts +3 -2
- package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts +18 -15
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts +11 -9
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
- package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts +0 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +4 -3
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts +7 -6
- package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts +2 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts +4 -2
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts +16 -11
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/complex.d.ts +16 -6
- package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/fast.d.ts +19 -7
- package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/normal.d.ts +33 -12
- package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/primitive.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/strip.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader_manager.d.ts +16 -11
- package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts +29 -20
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/stencil_manager.d.ts +12 -10
- package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts +3 -2
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
- package/dist/phaser/display/webgl/util.d.ts.map +1 -1
- package/dist/phaser/geom/circle.d.ts +4 -1
- package/dist/phaser/geom/circle.d.ts.map +1 -1
- package/dist/phaser/geom/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/line.d.ts +1 -1
- package/dist/phaser/geom/line.d.ts.map +1 -1
- package/dist/phaser/geom/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/point.d.ts.map +1 -1
- package/dist/phaser/geom/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/circle.d.ts.map +1 -1
- package/dist/phaser/geom/util/ellipse.d.ts +3 -2
- package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/util/line.d.ts.map +1 -1
- package/dist/phaser/geom/util/matrix.d.ts +2 -2
- package/dist/phaser/geom/util/matrix.d.ts.map +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 +5 -4
- package/src/phaser/core/animation.ts +64 -60
- package/src/phaser/core/animation_manager.ts +54 -55
- package/src/phaser/core/animation_parser.ts +9 -9
- package/src/phaser/core/array_set.ts +16 -17
- package/src/phaser/core/cache.ts +92 -93
- package/src/phaser/core/const.ts +1 -1
- package/src/phaser/core/device.ts +24 -29
- package/src/phaser/core/device_util.ts +28 -32
- package/src/phaser/core/dom.ts +54 -65
- package/src/phaser/core/event_manager.ts +64 -94
- package/src/phaser/core/factory.ts +14 -14
- package/src/phaser/core/frame.ts +28 -28
- package/src/phaser/core/frame_data.test.ts +100 -0
- package/src/phaser/core/frame_data.ts +24 -24
- package/src/phaser/core/frame_util.ts +2 -2
- package/src/phaser/core/game.ts +50 -51
- package/src/phaser/core/input.ts +104 -110
- package/src/phaser/core/input_handler.test.ts +113 -0
- package/src/phaser/core/input_handler.ts +199 -218
- package/src/phaser/core/input_mouse.ts +71 -54
- package/src/phaser/core/input_mspointer.ts +52 -39
- package/src/phaser/core/input_pointer.ts +81 -80
- package/src/phaser/core/input_touch.ts +49 -36
- package/src/phaser/core/loader.ts +175 -154
- package/src/phaser/core/loader_parser.ts +39 -57
- package/src/phaser/core/raf.ts +8 -7
- package/src/phaser/core/registry.test.ts +31 -0
- package/src/phaser/core/registry.ts +9 -0
- package/src/phaser/core/scale_manager.ts +156 -152
- package/src/phaser/core/scene.ts +9 -13
- package/src/phaser/core/scene_manager.ts +47 -47
- package/src/phaser/core/signal.test.ts +4 -4
- package/src/phaser/core/signal.ts +41 -52
- package/src/phaser/core/signal_binding.ts +26 -25
- package/src/phaser/core/signal_dispatch.test.ts +180 -0
- package/src/phaser/core/sound.ts +75 -83
- package/src/phaser/core/sound_manager.ts +58 -56
- package/src/phaser/core/sound_sprite.ts +17 -16
- package/src/phaser/core/stage.ts +25 -24
- package/src/phaser/core/time.ts +52 -52
- package/src/phaser/core/timer.test.ts +187 -0
- package/src/phaser/core/timer.ts +82 -69
- package/src/phaser/core/timer_event.ts +10 -10
- package/src/phaser/core/tween.ts +90 -93
- package/src/phaser/core/tween_data.ts +45 -51
- package/src/phaser/core/tween_easing.test.ts +106 -0
- package/src/phaser/core/tween_easing.ts +151 -123
- package/src/phaser/core/tween_manager.ts +19 -18
- package/src/phaser/core/world.ts +4 -3
- package/src/phaser/display/bitmap_text.ts +56 -64
- package/src/phaser/display/button.ts +33 -32
- package/src/phaser/display/canvas/buffer.ts +8 -8
- package/src/phaser/display/canvas/graphics.ts +36 -37
- package/src/phaser/display/canvas/masker.ts +2 -2
- package/src/phaser/display/canvas/pool.test.ts +106 -0
- package/src/phaser/display/canvas/pool.ts +25 -27
- package/src/phaser/display/canvas/renderer.ts +32 -31
- package/src/phaser/display/canvas/tinter.ts +27 -27
- package/src/phaser/display/canvas/util.ts +7 -10
- package/src/phaser/display/display_object.ts +114 -118
- package/src/phaser/display/graphics.ts +121 -119
- package/src/phaser/display/graphics_data.ts +12 -12
- package/src/phaser/display/graphics_data_util.ts +2 -3
- package/src/phaser/display/group.ts +50 -57
- package/src/phaser/display/image.ts +55 -52
- package/src/phaser/display/sprite_batch.ts +3 -2
- package/src/phaser/display/sprite_util.ts +48 -54
- package/src/phaser/display/text.ts +199 -204
- package/src/phaser/display/webgl/abstract_filter.ts +9 -9
- package/src/phaser/display/webgl/base_texture.ts +21 -24
- package/src/phaser/display/webgl/blend_manager.ts +6 -10
- package/src/phaser/display/webgl/earcut.ts +73 -37
- package/src/phaser/display/webgl/earcut_node.ts +10 -10
- package/src/phaser/display/webgl/fast_sprite_batch.ts +34 -34
- package/src/phaser/display/webgl/filter_manager.ts +13 -12
- package/src/phaser/display/webgl/filter_texture.ts +14 -13
- package/src/phaser/display/webgl/graphics.ts +51 -57
- package/src/phaser/display/webgl/graphics_data.ts +15 -14
- package/src/phaser/display/webgl/mask_manager.ts +2 -2
- package/src/phaser/display/webgl/render_texture.ts +26 -25
- package/src/phaser/display/webgl/renderer.ts +57 -62
- package/src/phaser/display/webgl/shader/complex.ts +28 -12
- package/src/phaser/display/webgl/shader/fast.ts +30 -12
- package/src/phaser/display/webgl/shader/normal.ts +70 -57
- package/src/phaser/display/webgl/shader/primitive.ts +26 -11
- package/src/phaser/display/webgl/shader/shader.test.ts +148 -0
- package/src/phaser/display/webgl/shader/strip.ts +27 -12
- package/src/phaser/display/webgl/shader_manager.test.ts +124 -0
- package/src/phaser/display/webgl/shader_manager.ts +26 -34
- package/src/phaser/display/webgl/sprite_batch.ts +67 -61
- package/src/phaser/display/webgl/stencil_manager.ts +23 -34
- package/src/phaser/display/webgl/texture.ts +43 -50
- package/src/phaser/display/webgl/texture_util.ts +2 -3
- package/src/phaser/display/webgl/util.ts +26 -25
- package/src/phaser/geom/circle.test.ts +2 -3
- package/src/phaser/geom/circle.ts +36 -36
- package/src/phaser/geom/ellipse.test.ts +73 -71
- package/src/phaser/geom/ellipse.ts +14 -14
- package/src/phaser/geom/line.test.ts +5 -5
- package/src/phaser/geom/line.ts +35 -35
- package/src/phaser/geom/matrix.test.ts +1 -1
- package/src/phaser/geom/matrix.ts +27 -27
- package/src/phaser/geom/point.test.ts +1 -2
- package/src/phaser/geom/point.ts +35 -35
- package/src/phaser/geom/polygon.test.ts +82 -0
- package/src/phaser/geom/polygon.ts +16 -16
- package/src/phaser/geom/rectangle.test.ts +14 -14
- package/src/phaser/geom/rectangle.ts +83 -75
- package/src/phaser/geom/rounded_rectangle.test.ts +1 -7
- package/src/phaser/geom/rounded_rectangle.ts +9 -9
- package/src/phaser/geom/util/circle.test.ts +25 -23
- package/src/phaser/geom/util/circle.ts +9 -18
- package/src/phaser/geom/util/ellipse.test.ts +7 -5
- package/src/phaser/geom/util/ellipse.ts +3 -2
- package/src/phaser/geom/util/line.test.ts +10 -8
- package/src/phaser/geom/util/line.ts +6 -16
- package/src/phaser/geom/util/matrix.test.ts +20 -18
- package/src/phaser/geom/util/matrix.ts +8 -15
- package/src/phaser/geom/util/point.test.ts +8 -6
- package/src/phaser/geom/util/point.ts +24 -28
- package/src/phaser/geom/util/polygon.test.ts +12 -10
- package/src/phaser/geom/util/polygon.ts +2 -2
- package/src/phaser/geom/util/rectangle.test.ts +10 -8
- package/src/phaser/geom/util/rectangle.ts +18 -37
- package/src/phaser/geom/util/rounded_rectangle.test.ts +11 -9
- package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
- package/src/phaser/util/math.test.ts +11 -11
- package/src/phaser/util/math.ts +29 -46
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ENGINE_ERROR_CREATING_CANVAS_2D_CONTEXT, ENGINE_ERROR_GETTING_DOCUMENT } from '../../core/error_code.js';
|
|
2
2
|
import { hex2rgb } from '../../util/math.js';
|
|
3
3
|
import { create, removeByCanvas } from './pool.js';
|
|
4
|
+
import { getRegistry } from '../../core/registry.js';
|
|
5
|
+
import type { Game } from '../../core/game.js';
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* Tints a sprite with the given color.
|
|
@@ -9,8 +11,8 @@ import { create, removeByCanvas } from './pool.js';
|
|
|
9
11
|
* @returns {object} The tinted sprite.
|
|
10
12
|
*/
|
|
11
13
|
export const getTintedTexture = (sprite: any, color: any) => {
|
|
12
|
-
const canvas = sprite.tintedTexture
|
|
13
|
-
|
|
14
|
+
const canvas = sprite.tintedTexture ?? create('CanvasTinter', 1, 1);
|
|
15
|
+
globalThis.PhaserRegistry.CANVAS_TINT_METHOD(sprite.texture, color, canvas);
|
|
14
16
|
return canvas;
|
|
15
17
|
};
|
|
16
18
|
|
|
@@ -26,13 +28,13 @@ export const tintWithMultiply = (texture: any, color: any, canvas: HTMLCanvasEle
|
|
|
26
28
|
if (!context) {
|
|
27
29
|
throw new Error(ENGINE_ERROR_CREATING_CANVAS_2D_CONTEXT);
|
|
28
30
|
}
|
|
29
|
-
const crop = texture
|
|
31
|
+
const { crop } = texture;
|
|
30
32
|
if (canvas.width !== crop.width || canvas.height !== crop.height) {
|
|
31
33
|
canvas.width = crop.width;
|
|
32
34
|
canvas.height = crop.height;
|
|
33
35
|
}
|
|
34
36
|
context.clearRect(0, 0, crop.width, crop.height);
|
|
35
|
-
context.fillStyle = `#${`00000${(color
|
|
37
|
+
context.fillStyle = `#${`00000${Math.trunc(color).toString(16)}`.slice(-6)}`;
|
|
36
38
|
context.fillRect(0, 0, crop.width, crop.height);
|
|
37
39
|
context.globalCompositeOperation = 'multiply';
|
|
38
40
|
context.drawImage(texture.baseTexture.source, crop.x, crop.y, crop.width, crop.height, 0, 0, crop.width, crop.height);
|
|
@@ -52,7 +54,7 @@ export const tintWithPerPixel = (texture: any, color: any, canvas: HTMLCanvasEle
|
|
|
52
54
|
if (!context) {
|
|
53
55
|
throw new Error(ENGINE_ERROR_CREATING_CANVAS_2D_CONTEXT);
|
|
54
56
|
}
|
|
55
|
-
const crop = texture
|
|
57
|
+
const { crop } = texture;
|
|
56
58
|
canvas.width = crop.width;
|
|
57
59
|
canvas.height = crop.height;
|
|
58
60
|
context.globalCompositeOperation = 'copy';
|
|
@@ -64,15 +66,15 @@ export const tintWithPerPixel = (texture: any, color: any, canvas: HTMLCanvasEle
|
|
|
64
66
|
const pixelData = context.getImageData(0, 0, crop.width, crop.height);
|
|
65
67
|
const pixels = pixelData.data;
|
|
66
68
|
for (let i = 0; i < pixels.length; i += 4) {
|
|
67
|
-
pixels[i + 0]
|
|
68
|
-
pixels[i + 1]
|
|
69
|
-
pixels[i + 2]
|
|
70
|
-
const canHandleAlpha =
|
|
69
|
+
pixels[i + 0] = pixels[i + 0]! * r;
|
|
70
|
+
pixels[i + 1] = pixels[i + 1]! * g;
|
|
71
|
+
pixels[i + 2] = pixels[i + 2]! * b;
|
|
72
|
+
const canHandleAlpha = globalThis.PhaserRegistry.CAN_CANVAS_HANDLE_ALPHA;
|
|
71
73
|
if (!canHandleAlpha) {
|
|
72
|
-
const alpha = pixels[i + 3]
|
|
73
|
-
pixels[i + 0]
|
|
74
|
-
pixels[i + 1]
|
|
75
|
-
pixels[i + 2]
|
|
74
|
+
const alpha = pixels[i + 3]!;
|
|
75
|
+
pixels[i + 0] = pixels[i + 0]! / (255 / alpha);
|
|
76
|
+
pixels[i + 1] = pixels[i + 1]! / (255 / alpha);
|
|
77
|
+
pixels[i + 2] = pixels[i + 2]! / (255 / alpha);
|
|
76
78
|
}
|
|
77
79
|
}
|
|
78
80
|
context.putImageData(pixelData, 0, 0);
|
|
@@ -150,7 +152,7 @@ export const canUseNewCanvasBlendModes = () => {
|
|
|
150
152
|
if (!context.getImageData(2, 0, 1, 1)) {
|
|
151
153
|
return false;
|
|
152
154
|
}
|
|
153
|
-
const data = context.getImageData(2, 0, 1, 1)
|
|
155
|
+
const { data } = context.getImageData(2, 0, 1, 1);
|
|
154
156
|
// Dispose canvas
|
|
155
157
|
try {
|
|
156
158
|
context.reset();
|
|
@@ -164,30 +166,28 @@ export const canUseNewCanvasBlendModes = () => {
|
|
|
164
166
|
|
|
165
167
|
/**
|
|
166
168
|
* Creates a new Tinter instance.
|
|
167
|
-
* @param {
|
|
169
|
+
* @param {Game} game - The game instance.
|
|
168
170
|
*/
|
|
169
|
-
export const detectCapabilities = (game:
|
|
170
|
-
|
|
171
|
-
window.PhaserRegistry = {};
|
|
172
|
-
}
|
|
171
|
+
export const detectCapabilities = (game: Game) => {
|
|
172
|
+
getRegistry();
|
|
173
173
|
try {
|
|
174
|
-
|
|
174
|
+
globalThis.PhaserRegistry.CAN_CANVAS_USE_MULTIPLY = canUseNewCanvasBlendModes();
|
|
175
175
|
} catch (error) {
|
|
176
176
|
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
177
|
-
game.logger.
|
|
178
|
-
|
|
177
|
+
game.logger.fatal('Tinter', { error: typedError });
|
|
178
|
+
globalThis.PhaserRegistry.CAN_CANVAS_USE_MULTIPLY = false;
|
|
179
179
|
}
|
|
180
|
-
if (!
|
|
180
|
+
if (!globalThis.PhaserRegistry.CAN_CANVAS_USE_MULTIPLY) {
|
|
181
181
|
// only detect canvas alpha support if tintWithPerPixel will be used
|
|
182
182
|
try {
|
|
183
|
-
|
|
183
|
+
globalThis.PhaserRegistry.CAN_CANVAS_HANDLE_ALPHA = checkInverseAlpha();
|
|
184
184
|
} catch (error) {
|
|
185
185
|
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
186
|
-
game.logger.
|
|
187
|
-
|
|
186
|
+
game.logger.fatal('Tinter', { error: typedError });
|
|
187
|
+
globalThis.PhaserRegistry.CAN_CANVAS_HANDLE_ALPHA = false;
|
|
188
188
|
}
|
|
189
189
|
}
|
|
190
|
-
|
|
190
|
+
globalThis.PhaserRegistry.CANVAS_TINT_METHOD = globalThis.PhaserRegistry.CAN_CANVAS_USE_MULTIPLY
|
|
191
191
|
? tintWithMultiply
|
|
192
192
|
: tintWithPerPixel;
|
|
193
193
|
};
|
|
@@ -28,8 +28,7 @@ export const create = (parent: any, width: number, height: number, id: string, s
|
|
|
28
28
|
* @param {string} color - The background color to set.
|
|
29
29
|
* @returns {HTMLCanvasElement} The modified canvas element.
|
|
30
30
|
*/
|
|
31
|
-
export const setBackgroundColor = (canvas: HTMLCanvasElement, color
|
|
32
|
-
color = color || 'rgb(0,0,0)';
|
|
31
|
+
export const setBackgroundColor = (canvas: HTMLCanvasElement, color = 'rgb(0,0,0)') => {
|
|
33
32
|
canvas.style.backgroundColor = color;
|
|
34
33
|
return canvas;
|
|
35
34
|
};
|
|
@@ -40,7 +39,7 @@ export const setBackgroundColor = (canvas: HTMLCanvasElement, color: string) =>
|
|
|
40
39
|
* @param {string} value - The touch action value to set.
|
|
41
40
|
* @returns {HTMLCanvasElement} The modified canvas element.
|
|
42
41
|
*/
|
|
43
|
-
export const setTouchAction = (canvas: HTMLCanvasElement, value
|
|
42
|
+
export const setTouchAction = (canvas: HTMLCanvasElement, value = 'none') => {
|
|
44
43
|
value = value || 'none';
|
|
45
44
|
canvas.style.setProperty('-ms-touch-action', value);
|
|
46
45
|
canvas.style.setProperty('touch-action', value);
|
|
@@ -53,7 +52,7 @@ export const setTouchAction = (canvas: HTMLCanvasElement, value: string = 'none'
|
|
|
53
52
|
* @param {string} value - The user select value to set.
|
|
54
53
|
* @returns {HTMLCanvasElement} The modified canvas element.
|
|
55
54
|
*/
|
|
56
|
-
export const setUserSelect = (canvas: HTMLCanvasElement, value
|
|
55
|
+
export const setUserSelect = (canvas: HTMLCanvasElement, value = 'none') => {
|
|
57
56
|
value = value || 'none';
|
|
58
57
|
canvas.style.setProperty('-webkit-touch-callout', value);
|
|
59
58
|
canvas.style.setProperty('-webkit-user-select', value);
|
|
@@ -72,25 +71,23 @@ export const setUserSelect = (canvas: HTMLCanvasElement, value: string = 'none')
|
|
|
72
71
|
* @param {boolean} overflowHidden - Whether to set overflow hidden on the parent.
|
|
73
72
|
* @returns {HTMLCanvasElement} The added canvas element.
|
|
74
73
|
*/
|
|
75
|
-
export const addToDOM = (canvas: HTMLCanvasElement, parent: any, overflowHidden
|
|
74
|
+
export const addToDOM = (canvas: HTMLCanvasElement, parent: any, overflowHidden = true) => {
|
|
76
75
|
let target;
|
|
77
76
|
if (parent) {
|
|
78
77
|
if (typeof parent === 'string') {
|
|
79
78
|
// hopefully an element ID
|
|
80
|
-
target = document.
|
|
79
|
+
target = document.querySelector(`#${parent}`);
|
|
81
80
|
} else if (typeof parent === 'object' && parent.nodeType === 1) {
|
|
82
81
|
// quick test for a HTMLelement
|
|
83
82
|
target = parent;
|
|
84
83
|
}
|
|
85
84
|
}
|
|
86
85
|
// Fallback, covers an invalid ID and a non HTMLelement object
|
|
87
|
-
|
|
88
|
-
target = document.body;
|
|
89
|
-
}
|
|
86
|
+
target ??= document.body;
|
|
90
87
|
if (overflowHidden && target.style) {
|
|
91
88
|
target.style.overflow = 'hidden';
|
|
92
89
|
}
|
|
93
|
-
target.
|
|
90
|
+
target.append(canvas);
|
|
94
91
|
return canvas;
|
|
95
92
|
};
|
|
96
93
|
|