@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.
Files changed (296) hide show
  1. package/dist/index.js +1300 -1334
  2. package/dist/index.js.map +1 -1
  3. package/dist/phaser/core/animation.d.ts +14 -10
  4. package/dist/phaser/core/animation.d.ts.map +1 -1
  5. package/dist/phaser/core/animation_manager.d.ts +10 -8
  6. package/dist/phaser/core/animation_manager.d.ts.map +1 -1
  7. package/dist/phaser/core/animation_parser.d.ts +5 -4
  8. package/dist/phaser/core/animation_parser.d.ts.map +1 -1
  9. package/dist/phaser/core/array_set.d.ts.map +1 -1
  10. package/dist/phaser/core/cache.d.ts +4 -3
  11. package/dist/phaser/core/cache.d.ts.map +1 -1
  12. package/dist/phaser/core/const.d.ts.map +1 -1
  13. package/dist/phaser/core/device.d.ts.map +1 -1
  14. package/dist/phaser/core/device_util.d.ts.map +1 -1
  15. package/dist/phaser/core/dom.d.ts +3 -2
  16. package/dist/phaser/core/dom.d.ts.map +1 -1
  17. package/dist/phaser/core/event_manager.d.ts.map +1 -1
  18. package/dist/phaser/core/factory.d.ts +1 -1
  19. package/dist/phaser/core/factory.d.ts.map +1 -1
  20. package/dist/phaser/core/frame.d.ts.map +1 -1
  21. package/dist/phaser/core/frame_data.d.ts.map +1 -1
  22. package/dist/phaser/core/game.d.ts +1 -1
  23. package/dist/phaser/core/game.d.ts.map +1 -1
  24. package/dist/phaser/core/input.d.ts +8 -6
  25. package/dist/phaser/core/input.d.ts.map +1 -1
  26. package/dist/phaser/core/input_handler.d.ts +40 -30
  27. package/dist/phaser/core/input_handler.d.ts.map +1 -1
  28. package/dist/phaser/core/input_mouse.d.ts +3 -2
  29. package/dist/phaser/core/input_mouse.d.ts.map +1 -1
  30. package/dist/phaser/core/input_mspointer.d.ts +3 -2
  31. package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
  32. package/dist/phaser/core/input_pointer.d.ts +6 -4
  33. package/dist/phaser/core/input_pointer.d.ts.map +1 -1
  34. package/dist/phaser/core/input_touch.d.ts +3 -2
  35. package/dist/phaser/core/input_touch.d.ts.map +1 -1
  36. package/dist/phaser/core/loader.d.ts +4 -3
  37. package/dist/phaser/core/loader.d.ts.map +1 -1
  38. package/dist/phaser/core/loader_parser.d.ts +9 -8
  39. package/dist/phaser/core/loader_parser.d.ts.map +1 -1
  40. package/dist/phaser/core/raf.d.ts +3 -2
  41. package/dist/phaser/core/raf.d.ts.map +1 -1
  42. package/dist/phaser/core/registry.d.ts +7 -0
  43. package/dist/phaser/core/registry.d.ts.map +1 -0
  44. package/dist/phaser/core/scale_manager.d.ts +1 -1
  45. package/dist/phaser/core/scale_manager.d.ts.map +1 -1
  46. package/dist/phaser/core/scene.d.ts +0 -1
  47. package/dist/phaser/core/scene.d.ts.map +1 -1
  48. package/dist/phaser/core/scene_manager.d.ts +1 -1
  49. package/dist/phaser/core/scene_manager.d.ts.map +1 -1
  50. package/dist/phaser/core/signal.d.ts +0 -1
  51. package/dist/phaser/core/signal.d.ts.map +1 -1
  52. package/dist/phaser/core/signal_binding.d.ts +4 -3
  53. package/dist/phaser/core/signal_binding.d.ts.map +1 -1
  54. package/dist/phaser/core/sound.d.ts +6 -4
  55. package/dist/phaser/core/sound.d.ts.map +1 -1
  56. package/dist/phaser/core/sound_manager.d.ts +3 -2
  57. package/dist/phaser/core/sound_manager.d.ts.map +1 -1
  58. package/dist/phaser/core/sound_sprite.d.ts +5 -4
  59. package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
  60. package/dist/phaser/core/stage.d.ts +3 -2
  61. package/dist/phaser/core/stage.d.ts.map +1 -1
  62. package/dist/phaser/core/time.d.ts +1 -1
  63. package/dist/phaser/core/time.d.ts.map +1 -1
  64. package/dist/phaser/core/timer.d.ts +1 -1
  65. package/dist/phaser/core/timer.d.ts.map +1 -1
  66. package/dist/phaser/core/timer_event.d.ts.map +1 -1
  67. package/dist/phaser/core/tween.d.ts +10 -7
  68. package/dist/phaser/core/tween.d.ts.map +1 -1
  69. package/dist/phaser/core/tween_data.d.ts +3 -2
  70. package/dist/phaser/core/tween_data.d.ts.map +1 -1
  71. package/dist/phaser/core/tween_easing.d.ts.map +1 -1
  72. package/dist/phaser/core/tween_manager.d.ts +3 -2
  73. package/dist/phaser/core/tween_manager.d.ts.map +1 -1
  74. package/dist/phaser/core/world.d.ts +3 -2
  75. package/dist/phaser/core/world.d.ts.map +1 -1
  76. package/dist/phaser/display/bitmap_text.d.ts +3 -2
  77. package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
  78. package/dist/phaser/display/button.d.ts +3 -2
  79. package/dist/phaser/display/button.d.ts.map +1 -1
  80. package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
  81. package/dist/phaser/display/canvas/graphics.d.ts +7 -6
  82. package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
  83. package/dist/phaser/display/canvas/pool.d.ts +2 -2
  84. package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
  85. package/dist/phaser/display/canvas/renderer.d.ts +10 -8
  86. package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
  87. package/dist/phaser/display/canvas/tinter.d.ts +3 -2
  88. package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
  89. package/dist/phaser/display/canvas/util.d.ts +2 -2
  90. package/dist/phaser/display/canvas/util.d.ts.map +1 -1
  91. package/dist/phaser/display/display_object.d.ts +14 -12
  92. package/dist/phaser/display/display_object.d.ts.map +1 -1
  93. package/dist/phaser/display/graphics.d.ts +8 -5
  94. package/dist/phaser/display/graphics.d.ts.map +1 -1
  95. package/dist/phaser/display/graphics_data.d.ts.map +1 -1
  96. package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
  97. package/dist/phaser/display/group.d.ts +4 -3
  98. package/dist/phaser/display/group.d.ts.map +1 -1
  99. package/dist/phaser/display/image.d.ts +13 -10
  100. package/dist/phaser/display/image.d.ts.map +1 -1
  101. package/dist/phaser/display/sprite_batch.d.ts +3 -2
  102. package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
  103. package/dist/phaser/display/sprite_util.d.ts +18 -15
  104. package/dist/phaser/display/sprite_util.d.ts.map +1 -1
  105. package/dist/phaser/display/text.d.ts +11 -9
  106. package/dist/phaser/display/text.d.ts.map +1 -1
  107. package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
  108. package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
  109. package/dist/phaser/display/webgl/blend_manager.d.ts +0 -1
  110. package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
  111. package/dist/phaser/display/webgl/earcut.d.ts +1 -1
  112. package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
  113. package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
  114. package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +4 -3
  115. package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
  116. package/dist/phaser/display/webgl/filter_manager.d.ts +2 -1
  117. package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
  118. package/dist/phaser/display/webgl/filter_texture.d.ts +2 -1
  119. package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
  120. package/dist/phaser/display/webgl/graphics.d.ts +7 -6
  121. package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
  122. package/dist/phaser/display/webgl/graphics_data.d.ts +2 -1
  123. package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
  124. package/dist/phaser/display/webgl/render_texture.d.ts +4 -2
  125. package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
  126. package/dist/phaser/display/webgl/renderer.d.ts +16 -11
  127. package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
  128. package/dist/phaser/display/webgl/shader/complex.d.ts +16 -6
  129. package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
  130. package/dist/phaser/display/webgl/shader/fast.d.ts +19 -7
  131. package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
  132. package/dist/phaser/display/webgl/shader/normal.d.ts +33 -12
  133. package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
  134. package/dist/phaser/display/webgl/shader/primitive.d.ts +15 -6
  135. package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
  136. package/dist/phaser/display/webgl/shader/strip.d.ts +15 -6
  137. package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
  138. package/dist/phaser/display/webgl/shader_manager.d.ts +16 -11
  139. package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
  140. package/dist/phaser/display/webgl/sprite_batch.d.ts +29 -20
  141. package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
  142. package/dist/phaser/display/webgl/stencil_manager.d.ts +12 -10
  143. package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
  144. package/dist/phaser/display/webgl/texture.d.ts +3 -2
  145. package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
  146. package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
  147. package/dist/phaser/display/webgl/util.d.ts.map +1 -1
  148. package/dist/phaser/geom/circle.d.ts +4 -1
  149. package/dist/phaser/geom/circle.d.ts.map +1 -1
  150. package/dist/phaser/geom/ellipse.d.ts.map +1 -1
  151. package/dist/phaser/geom/line.d.ts +1 -1
  152. package/dist/phaser/geom/line.d.ts.map +1 -1
  153. package/dist/phaser/geom/matrix.d.ts.map +1 -1
  154. package/dist/phaser/geom/point.d.ts.map +1 -1
  155. package/dist/phaser/geom/polygon.d.ts.map +1 -1
  156. package/dist/phaser/geom/rectangle.d.ts.map +1 -1
  157. package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
  158. package/dist/phaser/geom/util/circle.d.ts.map +1 -1
  159. package/dist/phaser/geom/util/ellipse.d.ts +3 -2
  160. package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
  161. package/dist/phaser/geom/util/line.d.ts.map +1 -1
  162. package/dist/phaser/geom/util/matrix.d.ts +2 -2
  163. package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
  164. package/dist/phaser/geom/util/point.d.ts.map +1 -1
  165. package/dist/phaser/geom/util/rectangle.d.ts +1 -1
  166. package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
  167. package/dist/phaser/util/math.d.ts.map +1 -1
  168. package/package.json +5 -4
  169. package/src/phaser/core/animation.ts +64 -60
  170. package/src/phaser/core/animation_manager.ts +54 -55
  171. package/src/phaser/core/animation_parser.ts +9 -9
  172. package/src/phaser/core/array_set.ts +16 -17
  173. package/src/phaser/core/cache.ts +92 -93
  174. package/src/phaser/core/const.ts +1 -1
  175. package/src/phaser/core/device.ts +24 -29
  176. package/src/phaser/core/device_util.ts +28 -32
  177. package/src/phaser/core/dom.ts +54 -65
  178. package/src/phaser/core/event_manager.ts +64 -94
  179. package/src/phaser/core/factory.ts +14 -14
  180. package/src/phaser/core/frame.ts +28 -28
  181. package/src/phaser/core/frame_data.test.ts +100 -0
  182. package/src/phaser/core/frame_data.ts +24 -24
  183. package/src/phaser/core/frame_util.ts +2 -2
  184. package/src/phaser/core/game.ts +50 -51
  185. package/src/phaser/core/input.ts +104 -110
  186. package/src/phaser/core/input_handler.test.ts +113 -0
  187. package/src/phaser/core/input_handler.ts +199 -218
  188. package/src/phaser/core/input_mouse.ts +71 -54
  189. package/src/phaser/core/input_mspointer.ts +52 -39
  190. package/src/phaser/core/input_pointer.ts +81 -80
  191. package/src/phaser/core/input_touch.ts +49 -36
  192. package/src/phaser/core/loader.ts +175 -154
  193. package/src/phaser/core/loader_parser.ts +39 -57
  194. package/src/phaser/core/raf.ts +8 -7
  195. package/src/phaser/core/registry.test.ts +31 -0
  196. package/src/phaser/core/registry.ts +9 -0
  197. package/src/phaser/core/scale_manager.ts +156 -152
  198. package/src/phaser/core/scene.ts +9 -13
  199. package/src/phaser/core/scene_manager.ts +47 -47
  200. package/src/phaser/core/signal.test.ts +4 -4
  201. package/src/phaser/core/signal.ts +41 -52
  202. package/src/phaser/core/signal_binding.ts +26 -25
  203. package/src/phaser/core/signal_dispatch.test.ts +180 -0
  204. package/src/phaser/core/sound.ts +75 -83
  205. package/src/phaser/core/sound_manager.ts +58 -56
  206. package/src/phaser/core/sound_sprite.ts +17 -16
  207. package/src/phaser/core/stage.ts +25 -24
  208. package/src/phaser/core/time.ts +52 -52
  209. package/src/phaser/core/timer.test.ts +187 -0
  210. package/src/phaser/core/timer.ts +82 -69
  211. package/src/phaser/core/timer_event.ts +10 -10
  212. package/src/phaser/core/tween.ts +90 -93
  213. package/src/phaser/core/tween_data.ts +45 -51
  214. package/src/phaser/core/tween_easing.test.ts +106 -0
  215. package/src/phaser/core/tween_easing.ts +151 -123
  216. package/src/phaser/core/tween_manager.ts +19 -18
  217. package/src/phaser/core/world.ts +4 -3
  218. package/src/phaser/display/bitmap_text.ts +56 -64
  219. package/src/phaser/display/button.ts +33 -32
  220. package/src/phaser/display/canvas/buffer.ts +8 -8
  221. package/src/phaser/display/canvas/graphics.ts +36 -37
  222. package/src/phaser/display/canvas/masker.ts +2 -2
  223. package/src/phaser/display/canvas/pool.test.ts +106 -0
  224. package/src/phaser/display/canvas/pool.ts +25 -27
  225. package/src/phaser/display/canvas/renderer.ts +32 -31
  226. package/src/phaser/display/canvas/tinter.ts +27 -27
  227. package/src/phaser/display/canvas/util.ts +7 -10
  228. package/src/phaser/display/display_object.ts +114 -118
  229. package/src/phaser/display/graphics.ts +121 -119
  230. package/src/phaser/display/graphics_data.ts +12 -12
  231. package/src/phaser/display/graphics_data_util.ts +2 -3
  232. package/src/phaser/display/group.ts +50 -57
  233. package/src/phaser/display/image.ts +55 -52
  234. package/src/phaser/display/sprite_batch.ts +3 -2
  235. package/src/phaser/display/sprite_util.ts +48 -54
  236. package/src/phaser/display/text.ts +199 -204
  237. package/src/phaser/display/webgl/abstract_filter.ts +9 -9
  238. package/src/phaser/display/webgl/base_texture.ts +21 -24
  239. package/src/phaser/display/webgl/blend_manager.ts +6 -10
  240. package/src/phaser/display/webgl/earcut.ts +73 -37
  241. package/src/phaser/display/webgl/earcut_node.ts +10 -10
  242. package/src/phaser/display/webgl/fast_sprite_batch.ts +34 -34
  243. package/src/phaser/display/webgl/filter_manager.ts +13 -12
  244. package/src/phaser/display/webgl/filter_texture.ts +14 -13
  245. package/src/phaser/display/webgl/graphics.ts +51 -57
  246. package/src/phaser/display/webgl/graphics_data.ts +15 -14
  247. package/src/phaser/display/webgl/mask_manager.ts +2 -2
  248. package/src/phaser/display/webgl/render_texture.ts +26 -25
  249. package/src/phaser/display/webgl/renderer.ts +57 -62
  250. package/src/phaser/display/webgl/shader/complex.ts +28 -12
  251. package/src/phaser/display/webgl/shader/fast.ts +30 -12
  252. package/src/phaser/display/webgl/shader/normal.ts +70 -57
  253. package/src/phaser/display/webgl/shader/primitive.ts +26 -11
  254. package/src/phaser/display/webgl/shader/shader.test.ts +148 -0
  255. package/src/phaser/display/webgl/shader/strip.ts +27 -12
  256. package/src/phaser/display/webgl/shader_manager.test.ts +124 -0
  257. package/src/phaser/display/webgl/shader_manager.ts +26 -34
  258. package/src/phaser/display/webgl/sprite_batch.ts +67 -61
  259. package/src/phaser/display/webgl/stencil_manager.ts +23 -34
  260. package/src/phaser/display/webgl/texture.ts +43 -50
  261. package/src/phaser/display/webgl/texture_util.ts +2 -3
  262. package/src/phaser/display/webgl/util.ts +26 -25
  263. package/src/phaser/geom/circle.test.ts +2 -3
  264. package/src/phaser/geom/circle.ts +36 -36
  265. package/src/phaser/geom/ellipse.test.ts +73 -71
  266. package/src/phaser/geom/ellipse.ts +14 -14
  267. package/src/phaser/geom/line.test.ts +5 -5
  268. package/src/phaser/geom/line.ts +35 -35
  269. package/src/phaser/geom/matrix.test.ts +1 -1
  270. package/src/phaser/geom/matrix.ts +27 -27
  271. package/src/phaser/geom/point.test.ts +1 -2
  272. package/src/phaser/geom/point.ts +35 -35
  273. package/src/phaser/geom/polygon.test.ts +82 -0
  274. package/src/phaser/geom/polygon.ts +16 -16
  275. package/src/phaser/geom/rectangle.test.ts +14 -14
  276. package/src/phaser/geom/rectangle.ts +83 -75
  277. package/src/phaser/geom/rounded_rectangle.test.ts +1 -7
  278. package/src/phaser/geom/rounded_rectangle.ts +9 -9
  279. package/src/phaser/geom/util/circle.test.ts +25 -23
  280. package/src/phaser/geom/util/circle.ts +9 -18
  281. package/src/phaser/geom/util/ellipse.test.ts +7 -5
  282. package/src/phaser/geom/util/ellipse.ts +3 -2
  283. package/src/phaser/geom/util/line.test.ts +10 -8
  284. package/src/phaser/geom/util/line.ts +6 -16
  285. package/src/phaser/geom/util/matrix.test.ts +20 -18
  286. package/src/phaser/geom/util/matrix.ts +8 -15
  287. package/src/phaser/geom/util/point.test.ts +8 -6
  288. package/src/phaser/geom/util/point.ts +24 -28
  289. package/src/phaser/geom/util/polygon.test.ts +12 -10
  290. package/src/phaser/geom/util/polygon.ts +2 -2
  291. package/src/phaser/geom/util/rectangle.test.ts +10 -8
  292. package/src/phaser/geom/util/rectangle.ts +18 -37
  293. package/src/phaser/geom/util/rounded_rectangle.test.ts +11 -9
  294. package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
  295. package/src/phaser/util/math.test.ts +11 -11
  296. package/src/phaser/util/math.ts +29 -46
@@ -10,67 +10,69 @@ import { MSPointer } from './input_mspointer.js';
10
10
  import { Pointer } from './input_pointer.js';
11
11
  import { Touch } from './input_touch.js';
12
12
  import { Signal } from './signal.js';
13
+ import type { Game } from './game.js';
14
+ import type { DisplayObject } from '../display/display_object.js';
13
15
 
14
16
  const MAX_POINTERS = 10;
15
17
 
16
18
  export class Input {
17
- game!: any;
18
- hitCanvas!: HTMLCanvasElement;
19
- hitContext!: any;
20
- moveCallbacks!: { callback: Function; context: any }[];
21
- lockCallbacks!: any;
22
- customCandidateHandler!: any;
23
- customCandidateHandlerContext!: any;
24
- pollRate!: number;
25
- enabled!: boolean;
26
- multiInputOverride!: number;
27
- position!: Point;
28
- speed!: Point;
29
- circle!: Circle;
30
- scale!: Point;
31
- maxPointers!: number;
32
- tapRate!: number;
33
- doubleTapRate!: number;
34
- holdRate!: number;
35
- justPressedRate!: number;
36
- justReleasedRate!: number;
37
- recordPointerHistory!: boolean;
38
- recordRate!: number;
39
- recordLimit!: number;
40
- pointer1!: any;
41
- pointer2!: any;
42
- pointer3!: any;
43
- pointer4!: any;
44
- pointer5!: any;
45
- pointer6!: any;
46
- pointer7!: any;
47
- pointer8!: any;
48
- pointer9!: any;
49
- pointer10!: any;
50
- pointers!: Pointer[];
51
- activePointer!: Pointer;
52
- mousePointer!: Pointer;
53
- mouse!: Mouse;
54
- touch!: Touch;
55
- mspointer!: MSPointer;
56
- resetLocked!: boolean;
57
- onDown!: Signal;
58
- onUp!: Signal;
59
- onTap!: Signal;
60
- onHold!: Signal;
61
- minPriorityID!: number;
62
- interactiveItems!: ArraySet;
63
- _localPoint!: Point;
64
- _pollCounter!: number;
65
- _oldPosition!: Point;
66
- _onClickTrampoline!: any;
67
- _x!: number;
68
- _y!: number;
19
+ public game!: any;
20
+ public hitCanvas!: HTMLCanvasElement;
21
+ public hitContext!: any;
22
+ public moveCallbacks!: { callback: Function; context: any }[];
23
+ public lockCallbacks!: any;
24
+ public customCandidateHandler!: any;
25
+ public customCandidateHandlerContext!: any;
26
+ public pollRate!: number;
27
+ public enabled!: boolean;
28
+ public multiInputOverride!: number;
29
+ public position!: Point;
30
+ public speed!: Point;
31
+ public circle!: Circle;
32
+ public scale!: Point;
33
+ public maxPointers!: number;
34
+ public tapRate!: number;
35
+ public doubleTapRate!: number;
36
+ public holdRate!: number;
37
+ public justPressedRate!: number;
38
+ public justReleasedRate!: number;
39
+ public recordPointerHistory!: boolean;
40
+ public recordRate!: number;
41
+ public recordLimit!: number;
42
+ public pointer1!: any;
43
+ public pointer2!: any;
44
+ public pointer3!: any;
45
+ public pointer4!: any;
46
+ public pointer5!: any;
47
+ public pointer6!: any;
48
+ public pointer7!: any;
49
+ public pointer8!: any;
50
+ public pointer9!: any;
51
+ public pointer10!: any;
52
+ public pointers!: Pointer[];
53
+ public activePointer!: Pointer;
54
+ public mousePointer!: Pointer;
55
+ public mouse!: Mouse;
56
+ public touch!: Touch;
57
+ public mspointer!: MSPointer;
58
+ public resetLocked!: boolean;
59
+ public onDown!: Signal;
60
+ public onUp!: Signal;
61
+ public onTap!: Signal;
62
+ public onHold!: Signal;
63
+ public minPriorityID!: number;
64
+ public interactiveItems!: ArraySet;
65
+ public _localPoint!: Point;
66
+ public _pollCounter!: number;
67
+ public _oldPosition!: Point;
68
+ public _onClickTrampoline!: any;
69
+ public _x!: number;
70
+ public _y!: number;
69
71
  /**
70
72
  * TBD.
71
- * @param {import('./game.js').Game} game - TBD.
73
+ * @param {Game} game - TBD.
72
74
  */
73
- constructor(game: import('./game.js').Game) {
75
+ public constructor(game: Game) {
74
76
  this.game = game;
75
77
  this.hitCanvas = null!;
76
78
  this.hitContext = null;
@@ -127,7 +129,7 @@ export class Input {
127
129
  /**
128
130
  * TBD.
129
131
  */
130
- boot() {
132
+ public boot() {
131
133
  this.mousePointer = new Pointer(this.game, 0, POINTER_CURSOR);
132
134
  this.addPointer();
133
135
  this.addPointer();
@@ -161,7 +163,7 @@ export class Input {
161
163
  /**
162
164
  * TBD.
163
165
  */
164
- destroy() {
166
+ public destroy() {
165
167
  this.mouse.stop();
166
168
  if (this.game.device.mspointer) {
167
169
  this.mspointer.stop();
@@ -178,7 +180,7 @@ export class Input {
178
180
  * @param {Function} callback - TBD.
179
181
  * @param {object} context - TBD.
180
182
  */
181
- setInteractiveCandidateHandler(callback: Function, context: any) {
183
+ public setInteractiveCandidateHandler(callback: Function, context: any) {
182
184
  this.customCandidateHandler = callback;
183
185
  this.customCandidateHandlerContext = context;
184
186
  }
@@ -188,7 +190,7 @@ export class Input {
188
190
  * @param {Function} callback - TBD.
189
191
  * @param {object} context - TBD.
190
192
  */
191
- addMoveCallback(callback: Function, context: any) {
193
+ public addMoveCallback(callback: Function, context: any) {
192
194
  this.moveCallbacks.push({ callback, context });
193
195
  }
194
196
 
@@ -197,11 +199,11 @@ export class Input {
197
199
  * @param {Function} callback - TBD.
198
200
  * @param {object} context - TBD.
199
201
  */
200
- deleteMoveCallback(callback: Function, context: any) {
202
+ public deleteMoveCallback(callback: Function, context: any) {
201
203
  let i = this.moveCallbacks.length;
202
204
  while (i) {
203
205
  i -= 1;
204
- if (this.moveCallbacks[i].callback === callback && this.moveCallbacks[i].context === context) {
206
+ if (this.moveCallbacks[i]!.callback === callback && this.moveCallbacks[i]!.context === context) {
205
207
  this.moveCallbacks.splice(i, 1);
206
208
  return;
207
209
  }
@@ -212,7 +214,7 @@ export class Input {
212
214
  * TBD.
213
215
  * @returns {Pointer} TBD.
214
216
  */
215
- addPointer() {
217
+ public addPointer() {
216
218
  if (this.pointers.length >= MAX_POINTERS) {
217
219
  this.game.logger.warn(`Input.addPointer: Maximum limit of ${MAX_POINTERS} pointers reached.`);
218
220
  return null;
@@ -227,7 +229,7 @@ export class Input {
227
229
  /**
228
230
  * TBD.
229
231
  */
230
- update() {
232
+ public update() {
231
233
  if (this.pollRate > 0 && this._pollCounter < this.pollRate) {
232
234
  this._pollCounter += 1;
233
235
  return;
@@ -236,8 +238,8 @@ export class Input {
236
238
  this.speed.y = this.position.y - this._oldPosition.y;
237
239
  this._oldPosition.copyFrom(this.position);
238
240
  this.mousePointer.update();
239
- for (let i = 0; i < this.pointers.length; i += 1) {
240
- this.pointers[i].update();
241
+ for (const pointer of this.pointers) {
242
+ pointer.update();
241
243
  }
242
244
  this._pollCounter = 0;
243
245
  }
@@ -246,13 +248,13 @@ export class Input {
246
248
  * TBD.
247
249
  * @param {boolean} hard - TBD.
248
250
  */
249
- reset(hard: boolean = false) {
251
+ public reset(hard = false) {
250
252
  if (!this.game.isBooted || this.resetLocked) {
251
253
  return;
252
254
  }
253
255
  this.mousePointer.reset();
254
- for (let i = 0; i < this.pointers.length; i += 1) {
255
- this.pointers[i].reset();
256
+ for (const pointer of this.pointers) {
257
+ pointer.reset();
256
258
  }
257
259
  if (this.game.canvas.style.cursor !== 'none') {
258
260
  this.game.canvas.style.cursor = 'inherit';
@@ -276,7 +278,7 @@ export class Input {
276
278
  * @param {number} x - TBD.
277
279
  * @param {number} y - TBD.
278
280
  */
279
- resetSpeed(x: number, y: number) {
281
+ public resetSpeed(x: number, y: number) {
280
282
  this._oldPosition.setTo(x, y);
281
283
  this.speed.setTo(0, 0);
282
284
  }
@@ -286,7 +288,7 @@ export class Input {
286
288
  * @param {MouseEvent|TouchEvent|PointerEvent} event - TBD.
287
289
  * @returns {Pointer} TBD.
288
290
  */
289
- startPointer(event: any | TouchEvent | PointerEvent) {
291
+ public startPointer(event: any | TouchEvent | PointerEvent) {
290
292
  if (this.maxPointers >= 0 && this.countActivePointers(this.maxPointers) >= this.maxPointers) {
291
293
  return null;
292
294
  }
@@ -297,7 +299,7 @@ export class Input {
297
299
  return this.pointer2.start(event);
298
300
  }
299
301
  for (let i = 2; i < this.pointers.length; i += 1) {
300
- const pointer = this.pointers[i];
302
+ const pointer = this.pointers[i]!;
301
303
  if (!pointer.active) {
302
304
  return pointer.start(event);
303
305
  }
@@ -310,7 +312,7 @@ export class Input {
310
312
  * @param {MouseEvent|TouchEvent|PointerEvent} event - TBD.
311
313
  * @returns {Pointer} TBD.
312
314
  */
313
- updatePointer(event: any | TouchEvent | PointerEvent) {
315
+ public updatePointer(event: any | TouchEvent | PointerEvent) {
314
316
  if (this.pointer1.active && this.pointer1.identifier === event.identifier) {
315
317
  return this.pointer1.move(event);
316
318
  }
@@ -318,7 +320,7 @@ export class Input {
318
320
  return this.pointer2.move(event);
319
321
  }
320
322
  for (let i = 2; i < this.pointers.length; i += 1) {
321
- const pointer = this.pointers[i];
323
+ const pointer = this.pointers[i]!;
322
324
  if (pointer.active && pointer.identifier === event.identifier) {
323
325
  return pointer.move(event);
324
326
  }
@@ -331,7 +333,7 @@ export class Input {
331
333
  * @param {MouseEvent|TouchEvent|PointerEvent} event - TBD.
332
334
  * @returns {Pointer} TBD.
333
335
  */
334
- stopPointer(event: any | TouchEvent | PointerEvent) {
336
+ public stopPointer(event: any | TouchEvent | PointerEvent) {
335
337
  if (this.pointer1.active && this.pointer1.identifier === event.identifier) {
336
338
  return this.pointer1.stop(event);
337
339
  }
@@ -339,7 +341,7 @@ export class Input {
339
341
  return this.pointer2.stop(event);
340
342
  }
341
343
  for (let i = 2; i < this.pointers.length; i += 1) {
342
- const pointer = this.pointers[i];
344
+ const pointer = this.pointers[i]!;
343
345
  if (pointer.active && pointer.identifier === event.identifier) {
344
346
  return pointer.stop(event);
345
347
  }
@@ -352,10 +354,10 @@ export class Input {
352
354
  * @param {number} limit - TBD.
353
355
  * @returns {number} TBD.
354
356
  */
355
- countActivePointers(limit: number = this.pointers.length) {
357
+ public countActivePointers(limit: number = this.pointers.length) {
356
358
  let count = limit;
357
359
  for (let i = 0; i < this.pointers.length && count > 0; i += 1) {
358
- const pointer = this.pointers[i];
360
+ const pointer = this.pointers[i]!;
359
361
  if (pointer.active) {
360
362
  count -= 1;
361
363
  }
@@ -368,9 +370,8 @@ export class Input {
368
370
  * @param {boolean} isActive - TBD.
369
371
  * @returns {Pointer} TBD.
370
372
  */
371
- getPointer(isActive: boolean = false) {
372
- for (let i = 0; i < this.pointers.length; i += 1) {
373
- const pointer = this.pointers[i];
373
+ public getPointer(isActive = false) {
374
+ for (const pointer of this.pointers) {
374
375
  if (pointer.active === isActive) {
375
376
  return pointer;
376
377
  }
@@ -383,9 +384,8 @@ export class Input {
383
384
  * @param {number} identifier - TBD.
384
385
  * @returns {Pointer} TBD.
385
386
  */
386
- getPointerFromIdentifier(identifier: number) {
387
- for (let i = 0; i < this.pointers.length; i += 1) {
388
- const pointer = this.pointers[i];
387
+ public getPointerFromIdentifier(identifier: number) {
388
+ for (const pointer of this.pointers) {
389
389
  if (pointer.identifier === identifier) {
390
390
  return pointer;
391
391
  }
@@ -399,9 +399,8 @@ export class Input {
399
399
  * @param {number} pointerId - TBD.
400
400
  * @returns {Pointer} TBD.
401
401
  */
402
- getPointerFromId(pointerId: number) {
403
- for (let i = 0; i < this.pointers.length; i += 1) {
404
- const pointer = this.pointers[i];
402
+ public getPointerFromId(pointerId: number) {
403
+ for (const pointer of this.pointers) {
405
404
  if (pointer.pointerId === pointerId) {
406
405
  return pointer;
407
406
  }
@@ -412,17 +411,13 @@ export class Input {
412
411
 
413
412
  /**
414
413
  * TBD.
415
- * @param {import('../display/display_object.js').DisplayObject} displayObject - TBD.
414
+ * @param {DisplayObject} displayObject - TBD.
416
415
  * @param {Pointer} pointer - TBD.
417
416
  * @param {Point} output - TBD.
418
417
  * @returns {Point} TBD.
419
418
  */
420
- getLocalPosition(
421
- displayObject: import('../display/display_object.js').DisplayObject,
422
- pointer: Pointer,
423
- output: Point | null = null
424
- ) {
425
- const result = output || new Point();
419
+ public getLocalPosition(displayObject: DisplayObject, pointer: Pointer, output: Point | null = null) {
420
+ const result = output ?? new Point();
426
421
  const wt = displayObject.worldTransform;
427
422
  const id = 1 / (wt.a * wt.d + wt.c * -wt.b);
428
423
  return result.setTo(
@@ -433,12 +428,12 @@ export class Input {
433
428
 
434
429
  /**
435
430
  * TBD.
436
- * @param {import('../display/display_object.js').DisplayObject} displayObject - TBD.
431
+ * @param {DisplayObject} displayObject - TBD.
437
432
  * @param {Pointer} pointer - TBD.
438
433
  * @param {Point} localPoint - TBD.
439
434
  * @returns {boolean} TBD.
440
435
  */
441
- hitTest(displayObject: import('../display/display_object.js').DisplayObject, pointer: Pointer, localPoint: Point) {
436
+ public hitTest(displayObject: DisplayObject, pointer: Pointer, localPoint: Point) {
442
437
  if (!displayObject.worldVisible) {
443
438
  return false;
444
439
  }
@@ -447,8 +442,8 @@ export class Input {
447
442
  if (displayObject.hitArea && displayObject.hitArea.contains) {
448
443
  return displayObject.hitArea.contains(this._localPoint.x, this._localPoint.y);
449
444
  } else if (displayObject instanceof Image) {
450
- const width = displayObject.texture.frame.width;
451
- const height = displayObject.texture.frame.height;
445
+ const { width } = displayObject.texture.frame;
446
+ const { height } = displayObject.texture.frame;
452
447
  const x1 = -width * displayObject.anchor.x;
453
448
  if (this._localPoint.x >= x1 && this._localPoint.x < x1 + width) {
454
449
  const y1 = -height * displayObject.anchor.y;
@@ -457,8 +452,7 @@ export class Input {
457
452
  }
458
453
  }
459
454
  } else if (displayObject instanceof Graphics) {
460
- for (let i = 0; i < displayObject.graphicsData.length; i += 1) {
461
- const data = displayObject.graphicsData[i];
455
+ for (const data of displayObject.graphicsData) {
462
456
  if (data.fill && data.shape && data.shape.contains(this._localPoint.x, this._localPoint.y)) {
463
457
  // Only deal with fills..
464
458
  return true;
@@ -466,8 +460,8 @@ export class Input {
466
460
  }
467
461
  }
468
462
  // Didn't hit the parent, does it have any children?
469
- for (let i = 0; i < displayObject.children.length; i += 1) {
470
- if (this.hitTest(displayObject.children[i], pointer, localPoint)) {
463
+ for (const child of displayObject.children) {
464
+ if (this.hitTest(child, pointer, localPoint)) {
471
465
  return true;
472
466
  }
473
467
  }
@@ -477,7 +471,7 @@ export class Input {
477
471
  /**
478
472
  * TBD.
479
473
  */
480
- onClickTrampoline() {
474
+ public onClickTrampoline() {
481
475
  this.activePointer.processClickTrampolines();
482
476
  }
483
477
 
@@ -485,14 +479,14 @@ export class Input {
485
479
  * TBD.
486
480
  * @returns {number} TBD.
487
481
  */
488
- get x() {
482
+ public get x() {
489
483
  return this._x;
490
484
  }
491
485
 
492
486
  /**
493
487
  * TBD.
494
488
  */
495
- set x(value) {
489
+ public set x(value) {
496
490
  this._x = Math.floor(value);
497
491
  }
498
492
 
@@ -500,14 +494,14 @@ export class Input {
500
494
  * TBD.
501
495
  * @returns {number} TBD.
502
496
  */
503
- get y() {
497
+ public get y() {
504
498
  return this._y;
505
499
  }
506
500
 
507
501
  /**
508
502
  * TBD.
509
503
  */
510
- set y(value) {
504
+ public set y(value) {
511
505
  this._y = Math.floor(value);
512
506
  }
513
507
 
@@ -515,7 +509,7 @@ export class Input {
515
509
  * TBD.
516
510
  * @returns {boolean} TBD.
517
511
  */
518
- get pollLocked() {
512
+ public get pollLocked() {
519
513
  return this.pollRate > 0 && this._pollCounter < this.pollRate;
520
514
  }
521
515
 
@@ -523,7 +517,7 @@ export class Input {
523
517
  * TBD.
524
518
  * @returns {number} TBD.
525
519
  */
526
- get totalInactivePointers() {
520
+ public get totalInactivePointers() {
527
521
  return this.pointers.length - this.countActivePointers();
528
522
  }
529
523
 
@@ -531,7 +525,7 @@ export class Input {
531
525
  * TBD.
532
526
  * @returns {number} TBD.
533
527
  */
534
- get totalActivePointers() {
528
+ public get totalActivePointers() {
535
529
  return this.countActivePointers();
536
530
  }
537
531
 
@@ -539,7 +533,7 @@ export class Input {
539
533
  * TBD.
540
534
  * @returns {number} TBD.
541
535
  */
542
- get worldX() {
536
+ public get worldX() {
543
537
  return this.x;
544
538
  }
545
539
 
@@ -547,7 +541,7 @@ export class Input {
547
541
  * TBD.
548
542
  * @returns {number} TBD.
549
543
  */
550
- get worldY() {
544
+ public get worldY() {
551
545
  return this.y;
552
546
  }
553
547
  }
@@ -0,0 +1,113 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import type { Image } from '../display/image.js';
3
+ import { InputHandler } from './input_handler.js';
4
+
5
+ const createSprite = (): Image =>
6
+ ({
7
+ x: 0,
8
+ y: 0,
9
+ game: {
10
+ time: { time: 0 },
11
+ canvas: { style: { cursor: 'default' } },
12
+ input: { interactiveItems: { add: () => undefined, remove: () => undefined } },
13
+ },
14
+ events: {
15
+ onAddedToGroup: { add: () => undefined },
16
+ onRemovedFromGroup: { add: () => undefined },
17
+ },
18
+ }) as unknown as Image;
19
+
20
+ describe('InputHandler', () => {
21
+ describe('pointerData', () => {
22
+ it('seeds pointer 0 from the constructor', () => {
23
+ const handler = new InputHandler(createSprite());
24
+ expect(handler._pointerData).toHaveLength(1);
25
+ expect(handler.pointerData(0).id).toBe(0);
26
+ });
27
+
28
+ it('returns the same record on repeat access', () => {
29
+ const handler = new InputHandler(createSprite());
30
+ expect(handler.pointerData(0)).toBe(handler.pointerData(0));
31
+ });
32
+
33
+ it('creates a record on first access of an unseeded pointer', () => {
34
+ const handler = new InputHandler(createSprite());
35
+ const data = handler.pointerData(7);
36
+ expect(data.id).toBe(7);
37
+ expect(data.isDown).toBe(false);
38
+ expect(handler.pointerData(7)).toBe(data);
39
+ });
40
+
41
+ it('hands back a record whose mutations are visible through the array', () => {
42
+ const handler = new InputHandler(createSprite());
43
+ handler.pointerData(3).isOver = true;
44
+ expect(handler._pointerData[3]?.isOver).toBe(true);
45
+ });
46
+
47
+ it('exposes every field a fresh record needs', () => {
48
+ const handler = new InputHandler(createSprite());
49
+ expect(handler.pointerData(1)).toStrictEqual({
50
+ id: 1,
51
+ x: 0,
52
+ y: 0,
53
+ camX: 0,
54
+ camY: 0,
55
+ isDown: false,
56
+ isUp: false,
57
+ isOver: false,
58
+ isOut: false,
59
+ timeOver: 0,
60
+ timeOut: 0,
61
+ timeDown: 0,
62
+ timeUp: 0,
63
+ downDuration: 0,
64
+ isDragged: false,
65
+ });
66
+ });
67
+ });
68
+
69
+ describe('start', () => {
70
+ it('populates the ten pointer slots the input system tracks', () => {
71
+ const handler = new InputHandler(createSprite());
72
+ handler.start();
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]);
75
+ expect(handler.enabled).toBe(true);
76
+ });
77
+ });
78
+
79
+ describe('reset', () => {
80
+ it('clears pointer state back to a fresh record', () => {
81
+ const handler = new InputHandler(createSprite());
82
+ handler.start();
83
+ handler.pointerData(2).isDown = true;
84
+ handler.pointerData(2).timeDown = 1234;
85
+ handler.reset();
86
+ expect(handler.pointerData(2).isDown).toBe(false);
87
+ expect(handler.pointerData(2).timeDown).toBe(0);
88
+ expect(handler.enabled).toBe(false);
89
+ });
90
+ });
91
+
92
+ describe('pointer accessors', () => {
93
+ it('read through to the backing record', () => {
94
+ const handler = new InputHandler(createSprite());
95
+ handler.start();
96
+ const data = handler.pointerData(4);
97
+ data.x = 11;
98
+ data.y = 22;
99
+ data.isDown = true;
100
+ data.timeDown = 99;
101
+ expect(handler.pointerX(4)).toBe(11);
102
+ expect(handler.pointerY(4)).toBe(22);
103
+ expect(handler.pointerDown(4)).toBe(true);
104
+ expect(handler.pointerTimeDown(4)).toBe(99);
105
+ });
106
+
107
+ it('default to pointer 0', () => {
108
+ const handler = new InputHandler(createSprite());
109
+ handler.pointerData(0).x = 5;
110
+ expect(handler.pointerX()).toBe(5);
111
+ });
112
+ });
113
+ });