@vpmedia/phaser 1.112.0 → 1.114.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 +1261 -1314
  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.map +1 -1
  23. package/dist/phaser/core/input.d.ts +8 -6
  24. package/dist/phaser/core/input.d.ts.map +1 -1
  25. package/dist/phaser/core/input_handler.d.ts +40 -30
  26. package/dist/phaser/core/input_handler.d.ts.map +1 -1
  27. package/dist/phaser/core/input_mouse.d.ts +3 -2
  28. package/dist/phaser/core/input_mouse.d.ts.map +1 -1
  29. package/dist/phaser/core/input_mspointer.d.ts +3 -2
  30. package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
  31. package/dist/phaser/core/input_pointer.d.ts +6 -4
  32. package/dist/phaser/core/input_pointer.d.ts.map +1 -1
  33. package/dist/phaser/core/input_touch.d.ts +3 -2
  34. package/dist/phaser/core/input_touch.d.ts.map +1 -1
  35. package/dist/phaser/core/loader.d.ts +4 -3
  36. package/dist/phaser/core/loader.d.ts.map +1 -1
  37. package/dist/phaser/core/loader_parser.d.ts +9 -8
  38. package/dist/phaser/core/loader_parser.d.ts.map +1 -1
  39. package/dist/phaser/core/raf.d.ts +3 -2
  40. package/dist/phaser/core/raf.d.ts.map +1 -1
  41. package/dist/phaser/core/registry.d.ts +7 -0
  42. package/dist/phaser/core/registry.d.ts.map +1 -0
  43. package/dist/phaser/core/scale_manager.d.ts +1 -1
  44. package/dist/phaser/core/scale_manager.d.ts.map +1 -1
  45. package/dist/phaser/core/scene.d.ts +0 -1
  46. package/dist/phaser/core/scene.d.ts.map +1 -1
  47. package/dist/phaser/core/scene_manager.d.ts +1 -1
  48. package/dist/phaser/core/scene_manager.d.ts.map +1 -1
  49. package/dist/phaser/core/signal.d.ts +0 -1
  50. package/dist/phaser/core/signal.d.ts.map +1 -1
  51. package/dist/phaser/core/signal_binding.d.ts +4 -3
  52. package/dist/phaser/core/signal_binding.d.ts.map +1 -1
  53. package/dist/phaser/core/sound.d.ts +6 -4
  54. package/dist/phaser/core/sound.d.ts.map +1 -1
  55. package/dist/phaser/core/sound_manager.d.ts +3 -2
  56. package/dist/phaser/core/sound_manager.d.ts.map +1 -1
  57. package/dist/phaser/core/sound_sprite.d.ts +5 -4
  58. package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
  59. package/dist/phaser/core/stage.d.ts +3 -2
  60. package/dist/phaser/core/stage.d.ts.map +1 -1
  61. package/dist/phaser/core/time.d.ts +1 -1
  62. package/dist/phaser/core/time.d.ts.map +1 -1
  63. package/dist/phaser/core/timer.d.ts +1 -1
  64. package/dist/phaser/core/timer.d.ts.map +1 -1
  65. package/dist/phaser/core/timer_event.d.ts.map +1 -1
  66. package/dist/phaser/core/tween.d.ts +10 -7
  67. package/dist/phaser/core/tween.d.ts.map +1 -1
  68. package/dist/phaser/core/tween_data.d.ts +3 -2
  69. package/dist/phaser/core/tween_data.d.ts.map +1 -1
  70. package/dist/phaser/core/tween_easing.d.ts.map +1 -1
  71. package/dist/phaser/core/tween_manager.d.ts +3 -2
  72. package/dist/phaser/core/tween_manager.d.ts.map +1 -1
  73. package/dist/phaser/core/world.d.ts +3 -2
  74. package/dist/phaser/core/world.d.ts.map +1 -1
  75. package/dist/phaser/display/bitmap_text.d.ts +3 -2
  76. package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
  77. package/dist/phaser/display/button.d.ts +3 -2
  78. package/dist/phaser/display/button.d.ts.map +1 -1
  79. package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
  80. package/dist/phaser/display/canvas/graphics.d.ts +7 -6
  81. package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
  82. package/dist/phaser/display/canvas/pool.d.ts +2 -2
  83. package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
  84. package/dist/phaser/display/canvas/renderer.d.ts +10 -8
  85. package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
  86. package/dist/phaser/display/canvas/tinter.d.ts +3 -2
  87. package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
  88. package/dist/phaser/display/canvas/util.d.ts +2 -2
  89. package/dist/phaser/display/canvas/util.d.ts.map +1 -1
  90. package/dist/phaser/display/display_object.d.ts +14 -12
  91. package/dist/phaser/display/display_object.d.ts.map +1 -1
  92. package/dist/phaser/display/graphics.d.ts +8 -5
  93. package/dist/phaser/display/graphics.d.ts.map +1 -1
  94. package/dist/phaser/display/graphics_data.d.ts.map +1 -1
  95. package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
  96. package/dist/phaser/display/group.d.ts +4 -3
  97. package/dist/phaser/display/group.d.ts.map +1 -1
  98. package/dist/phaser/display/image.d.ts +13 -10
  99. package/dist/phaser/display/image.d.ts.map +1 -1
  100. package/dist/phaser/display/sprite_batch.d.ts +3 -2
  101. package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
  102. package/dist/phaser/display/sprite_util.d.ts +18 -15
  103. package/dist/phaser/display/sprite_util.d.ts.map +1 -1
  104. package/dist/phaser/display/text.d.ts +12 -10
  105. package/dist/phaser/display/text.d.ts.map +1 -1
  106. package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
  107. package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
  108. package/dist/phaser/display/webgl/blend_manager.d.ts +0 -1
  109. package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
  110. package/dist/phaser/display/webgl/earcut.d.ts +1 -1
  111. package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
  112. package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
  113. package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +4 -3
  114. package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
  115. package/dist/phaser/display/webgl/filter_manager.d.ts +2 -1
  116. package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
  117. package/dist/phaser/display/webgl/filter_texture.d.ts +2 -1
  118. package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
  119. package/dist/phaser/display/webgl/graphics.d.ts +7 -6
  120. package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
  121. package/dist/phaser/display/webgl/graphics_data.d.ts +2 -1
  122. package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
  123. package/dist/phaser/display/webgl/render_texture.d.ts +4 -2
  124. package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
  125. package/dist/phaser/display/webgl/renderer.d.ts +16 -11
  126. package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
  127. package/dist/phaser/display/webgl/shader/complex.d.ts +16 -6
  128. package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
  129. package/dist/phaser/display/webgl/shader/fast.d.ts +19 -7
  130. package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
  131. package/dist/phaser/display/webgl/shader/normal.d.ts +33 -12
  132. package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
  133. package/dist/phaser/display/webgl/shader/primitive.d.ts +15 -6
  134. package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
  135. package/dist/phaser/display/webgl/shader/strip.d.ts +15 -6
  136. package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
  137. package/dist/phaser/display/webgl/shader_manager.d.ts +16 -11
  138. package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
  139. package/dist/phaser/display/webgl/sprite_batch.d.ts +29 -20
  140. package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
  141. package/dist/phaser/display/webgl/stencil_manager.d.ts +12 -10
  142. package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
  143. package/dist/phaser/display/webgl/texture.d.ts +3 -2
  144. package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
  145. package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
  146. package/dist/phaser/display/webgl/util.d.ts.map +1 -1
  147. package/dist/phaser/geom/circle.d.ts +4 -1
  148. package/dist/phaser/geom/circle.d.ts.map +1 -1
  149. package/dist/phaser/geom/ellipse.d.ts.map +1 -1
  150. package/dist/phaser/geom/line.d.ts +1 -1
  151. package/dist/phaser/geom/line.d.ts.map +1 -1
  152. package/dist/phaser/geom/matrix.d.ts.map +1 -1
  153. package/dist/phaser/geom/point.d.ts.map +1 -1
  154. package/dist/phaser/geom/polygon.d.ts.map +1 -1
  155. package/dist/phaser/geom/rectangle.d.ts.map +1 -1
  156. package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
  157. package/dist/phaser/geom/util/circle.d.ts.map +1 -1
  158. package/dist/phaser/geom/util/ellipse.d.ts +3 -2
  159. package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
  160. package/dist/phaser/geom/util/line.d.ts.map +1 -1
  161. package/dist/phaser/geom/util/matrix.d.ts +2 -2
  162. package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
  163. package/dist/phaser/geom/util/point.d.ts.map +1 -1
  164. package/dist/phaser/geom/util/rectangle.d.ts +1 -1
  165. package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
  166. package/dist/phaser/util/math.d.ts.map +1 -1
  167. package/package.json +5 -5
  168. package/src/phaser/core/animation.ts +64 -60
  169. package/src/phaser/core/animation_manager.ts +50 -53
  170. package/src/phaser/core/animation_parser.ts +9 -9
  171. package/src/phaser/core/array_set.ts +16 -17
  172. package/src/phaser/core/cache.ts +92 -93
  173. package/src/phaser/core/const.ts +1 -1
  174. package/src/phaser/core/device.ts +24 -29
  175. package/src/phaser/core/device_util.ts +22 -26
  176. package/src/phaser/core/dom.ts +54 -65
  177. package/src/phaser/core/event_manager.ts +64 -94
  178. package/src/phaser/core/factory.ts +14 -14
  179. package/src/phaser/core/frame.ts +28 -28
  180. package/src/phaser/core/frame_data.test.ts +100 -0
  181. package/src/phaser/core/frame_data.ts +24 -24
  182. package/src/phaser/core/frame_util.ts +2 -2
  183. package/src/phaser/core/game.ts +47 -48
  184. package/src/phaser/core/input.ts +104 -110
  185. package/src/phaser/core/input_handler.test.ts +113 -0
  186. package/src/phaser/core/input_handler.ts +199 -218
  187. package/src/phaser/core/input_mouse.ts +71 -54
  188. package/src/phaser/core/input_mspointer.ts +52 -39
  189. package/src/phaser/core/input_pointer.ts +81 -80
  190. package/src/phaser/core/input_touch.ts +49 -36
  191. package/src/phaser/core/loader.ts +173 -152
  192. package/src/phaser/core/loader_parser.ts +39 -57
  193. package/src/phaser/core/raf.ts +8 -7
  194. package/src/phaser/core/registry.test.ts +31 -0
  195. package/src/phaser/core/registry.ts +9 -0
  196. package/src/phaser/core/scale_manager.ts +156 -152
  197. package/src/phaser/core/scene.ts +9 -13
  198. package/src/phaser/core/scene_manager.ts +47 -47
  199. package/src/phaser/core/signal.test.ts +4 -4
  200. package/src/phaser/core/signal.ts +41 -52
  201. package/src/phaser/core/signal_binding.ts +26 -25
  202. package/src/phaser/core/signal_dispatch.test.ts +180 -0
  203. package/src/phaser/core/sound.ts +75 -83
  204. package/src/phaser/core/sound_manager.ts +52 -51
  205. package/src/phaser/core/sound_sprite.ts +17 -16
  206. package/src/phaser/core/stage.ts +25 -24
  207. package/src/phaser/core/time.ts +52 -52
  208. package/src/phaser/core/timer.test.ts +187 -0
  209. package/src/phaser/core/timer.ts +82 -69
  210. package/src/phaser/core/timer_event.ts +10 -10
  211. package/src/phaser/core/tween.ts +90 -93
  212. package/src/phaser/core/tween_data.ts +45 -51
  213. package/src/phaser/core/tween_easing.test.ts +106 -0
  214. package/src/phaser/core/tween_easing.ts +151 -123
  215. package/src/phaser/core/tween_manager.ts +19 -18
  216. package/src/phaser/core/world.ts +4 -3
  217. package/src/phaser/display/bitmap_text.ts +56 -64
  218. package/src/phaser/display/button.ts +33 -32
  219. package/src/phaser/display/canvas/buffer.ts +8 -8
  220. package/src/phaser/display/canvas/graphics.ts +36 -37
  221. package/src/phaser/display/canvas/masker.ts +2 -2
  222. package/src/phaser/display/canvas/pool.test.ts +106 -0
  223. package/src/phaser/display/canvas/pool.ts +25 -27
  224. package/src/phaser/display/canvas/renderer.ts +32 -31
  225. package/src/phaser/display/canvas/tinter.ts +25 -25
  226. package/src/phaser/display/canvas/util.ts +7 -10
  227. package/src/phaser/display/display_object.ts +114 -118
  228. package/src/phaser/display/graphics.ts +121 -119
  229. package/src/phaser/display/graphics_data.ts +12 -12
  230. package/src/phaser/display/graphics_data_util.ts +2 -3
  231. package/src/phaser/display/group.ts +50 -57
  232. package/src/phaser/display/image.ts +55 -52
  233. package/src/phaser/display/sprite_batch.ts +3 -2
  234. package/src/phaser/display/sprite_util.ts +48 -54
  235. package/src/phaser/display/text.test.ts +110 -0
  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
@@ -1,16 +1,14 @@
1
1
  import { Texture } from '../display/webgl/texture.js';
2
2
  import { Rectangle } from '../geom/rectangle.js';
3
+ import type { BaseTexture } from '../display/webgl/base_texture.js';
3
4
 
4
5
  /**
5
6
  * Finalizes bitmap font data by attaching textures to characters.
6
- * @param {import('../display/webgl/base_texture.js').BaseTexture} baseTexture - The base texture for the font.
7
+ * @param {BaseTexture} baseTexture - The base texture for the font.
7
8
  * @param {object} bitmapFontData - The bitmap font data to finalize.
8
9
  * @returns {object} The finalized bitmap font data.
9
10
  */
10
- export const finalizeBitmapFont = (
11
- baseTexture: import('../display/webgl/base_texture.js').BaseTexture,
12
- bitmapFontData: any
13
- ) => {
11
+ export const finalizeBitmapFont = (baseTexture: BaseTexture, bitmapFontData: any) => {
14
12
  Object.keys(bitmapFontData.chars).forEach((charCode) => {
15
13
  const letter = bitmapFontData.chars[charCode];
16
14
  letter.texture = new Texture(baseTexture, new Rectangle(letter.x, letter.y, letter.width, letter.height));
@@ -21,43 +19,38 @@ export const finalizeBitmapFont = (
21
19
  /**
22
20
  * Parses XML bitmap font data.
23
21
  * @param {object} xml - The XML document containing the bitmap font data.
24
- * @param {import('../display/webgl/base_texture.js').BaseTexture} baseTexture - The base texture for the font.
22
+ * @param {BaseTexture} baseTexture - The base texture for the font.
25
23
  * @param {number} xSpacing - Horizontal spacing between characters.
26
24
  * @param {number} ySpacing - Vertical spacing between characters.
27
25
  * @returns {object} The parsed bitmap font data.
28
26
  */
29
- export const xmlBitmapFont = (
30
- xml: any,
31
- baseTexture: import('../display/webgl/base_texture.js').BaseTexture,
32
- xSpacing: number,
33
- ySpacing: number
34
- ) => {
27
+ export const xmlBitmapFont = (xml: any, baseTexture: BaseTexture, xSpacing: number, ySpacing: number) => {
35
28
  const data: any = {};
36
- const info = xml.getElementsByTagName('info')[0];
37
- const common = xml.getElementsByTagName('common')[0];
29
+ const info = xml.querySelectorAll('info')[0];
30
+ const common = xml.querySelectorAll('common')[0];
38
31
  data.font = info.getAttribute('face');
39
- data.size = Number.parseInt(info.getAttribute('size'), 10);
40
- data.lineHeight = Number.parseInt(common.getAttribute('lineHeight'), 10) + ySpacing;
32
+ data.size = Math.trunc(Number(info.getAttribute('size')));
33
+ data.lineHeight = Math.trunc(Number(common.getAttribute('lineHeight'))) + ySpacing;
41
34
  data.chars = {};
42
- const letters = xml.getElementsByTagName('char');
35
+ const letters = xml.querySelectorAll('char');
43
36
  for (let i = 0; i < letters.length; i += 1) {
44
- const charCode = Number.parseInt(letters[i].getAttribute('id'), 10);
37
+ const charCode = Math.trunc(Number(letters[i].getAttribute('id')));
45
38
  data.chars[charCode] = {
46
- x: Number.parseInt(letters[i].getAttribute('x'), 10),
47
- y: Number.parseInt(letters[i].getAttribute('y'), 10),
48
- width: Number.parseInt(letters[i].getAttribute('width'), 10),
49
- height: Number.parseInt(letters[i].getAttribute('height'), 10),
50
- xOffset: Number.parseInt(letters[i].getAttribute('xoffset'), 10),
51
- yOffset: Number.parseInt(letters[i].getAttribute('yoffset'), 10),
52
- xAdvance: Number.parseInt(letters[i].getAttribute('xadvance'), 10) + xSpacing,
39
+ x: Math.trunc(Number(letters[i].getAttribute('x'))),
40
+ y: Math.trunc(Number(letters[i].getAttribute('y'))),
41
+ width: Math.trunc(Number(letters[i].getAttribute('width'))),
42
+ height: Math.trunc(Number(letters[i].getAttribute('height'))),
43
+ xOffset: Math.trunc(Number(letters[i].getAttribute('xoffset'))),
44
+ yOffset: Math.trunc(Number(letters[i].getAttribute('yoffset'))),
45
+ xAdvance: Math.trunc(Number(letters[i].getAttribute('xadvance'))) + xSpacing,
53
46
  kerning: {},
54
47
  };
55
48
  }
56
- const kernings = xml.getElementsByTagName('kerning');
49
+ const kernings = xml.querySelectorAll('kerning');
57
50
  for (let i = 0; i < kernings.length; i += 1) {
58
- const first = Number.parseInt(kernings[i].getAttribute('first'), 10);
59
- const second = Number.parseInt(kernings[i].getAttribute('second'), 10);
60
- const amount = Number.parseInt(kernings[i].getAttribute('amount'), 10);
51
+ const first = Math.trunc(Number(kernings[i].getAttribute('first')));
52
+ const second = Math.trunc(Number(kernings[i].getAttribute('second')));
53
+ const amount = Math.trunc(Number(kernings[i].getAttribute('amount')));
61
54
  data.chars[second].kerning[first] = amount;
62
55
  }
63
56
  return finalizeBitmapFont(baseTexture, data);
@@ -66,34 +59,23 @@ export const xmlBitmapFont = (
66
59
  /**
67
60
  * Parses XML bitmap font data (alias for xmlBitmapFont).
68
61
  * @param {object} xml - The XML document containing the bitmap font data.
69
- * @param {import('../display/webgl/base_texture.js').BaseTexture} baseTexture - The base texture for the font.
62
+ * @param {BaseTexture} baseTexture - The base texture for the font.
70
63
  * @param {number} xSpacing - Horizontal spacing between characters.
71
64
  * @param {number} ySpacing - Vertical spacing between characters.
72
65
  * @returns {object} The parsed bitmap font data.
73
66
  */
74
- export const bitmapFont = (
75
- xml: any,
76
- baseTexture: import('../display/webgl/base_texture.js').BaseTexture,
77
- xSpacing: number,
78
- ySpacing: number
79
- ) => {
80
- return xmlBitmapFont(xml, baseTexture, xSpacing, ySpacing);
81
- };
67
+ export const bitmapFont = (xml: any, baseTexture: BaseTexture, xSpacing: number, ySpacing: number) =>
68
+ xmlBitmapFont(xml, baseTexture, xSpacing, ySpacing);
82
69
 
83
70
  /**
84
71
  * Parses JSON bitmap font data.
85
72
  * @param {object} json - The JSON object containing the bitmap font data.
86
- * @param {import('../display/webgl/base_texture.js').BaseTexture} baseTexture - The base texture for the font.
73
+ * @param {BaseTexture} baseTexture - The base texture for the font.
87
74
  * @param {number} xSpacing - Horizontal spacing between characters.
88
75
  * @param {number} ySpacing - Vertical spacing between characters.
89
76
  * @returns {object} The parsed bitmap font data.
90
77
  */
91
- export const jsonBitmapFont = (
92
- json: any,
93
- baseTexture: import('../display/webgl/base_texture.js').BaseTexture,
94
- xSpacing: number,
95
- ySpacing: number
96
- ) => {
78
+ export const jsonBitmapFont = (json: any, baseTexture: BaseTexture, xSpacing: number, ySpacing: number) => {
97
79
  const data: {
98
80
  font: string;
99
81
  size: number;
@@ -101,28 +83,28 @@ export const jsonBitmapFont = (
101
83
  chars: Record<number, { kerning: Record<number, number>; [key: string]: unknown }>;
102
84
  } = {
103
85
  font: json.font.info._face,
104
- size: Number.parseInt(json.font.info._size, 10),
105
- lineHeight: Number.parseInt(json.font.common._lineHeight, 10) + ySpacing,
86
+ size: Math.trunc(Number(json.font.info._size)),
87
+ lineHeight: Math.trunc(Number(json.font.common._lineHeight)) + ySpacing,
106
88
  chars: {},
107
89
  };
108
90
  json.font.chars.char.forEach((letter: Record<string, string>) => {
109
- const charCode = Number.parseInt(letter._id, 10);
91
+ const charCode = Math.trunc(Number(letter['_id']));
110
92
  data.chars[charCode] = {
111
- x: Number.parseInt(letter._x, 10),
112
- y: Number.parseInt(letter._y, 10),
113
- width: Number.parseInt(letter._width, 10),
114
- height: Number.parseInt(letter._height, 10),
115
- xOffset: Number.parseInt(letter._xoffset, 10),
116
- yOffset: Number.parseInt(letter._yoffset, 10),
117
- xAdvance: Number.parseInt(letter._xadvance, 10) + xSpacing,
93
+ x: Math.trunc(Number(letter['_x'])),
94
+ y: Math.trunc(Number(letter['_y'])),
95
+ width: Math.trunc(Number(letter['_width'])),
96
+ height: Math.trunc(Number(letter['_height'])),
97
+ xOffset: Math.trunc(Number(letter['_xoffset'])),
98
+ yOffset: Math.trunc(Number(letter['_yoffset'])),
99
+ xAdvance: Math.trunc(Number(letter['_xadvance'])) + xSpacing,
118
100
  kerning: {},
119
101
  };
120
102
  });
121
103
  if (json.font.kernings && json.font.kernings.kerning) {
122
104
  json.font.kernings.kerning.forEach((kerning: Record<string, string>) => {
123
- const char = data.chars[Number.parseInt(kerning._second, 10)];
105
+ const char = data.chars[Math.trunc(Number(kerning['_second']))];
124
106
  if (char) {
125
- char.kerning[Number.parseInt(kerning._first, 10)] = Number.parseInt(kerning._amount, 10);
107
+ char.kerning[Math.trunc(Number(kerning['_first']))] = Math.trunc(Number(kerning['_amount']));
126
108
  }
127
109
  });
128
110
  }
@@ -1,12 +1,13 @@
1
+ import type { Game } from './game.js';
1
2
  export class RequestAnimationFrame {
2
- game: any;
3
- rafId: number;
3
+ public game: any;
4
+ public rafId: number;
4
5
 
5
6
  /**
6
7
  * Constructor.
7
- * @param {import('./game.js').Game} game - Reference to the game instance.
8
+ * @param {Game} game - Reference to the game instance.
8
9
  */
9
- constructor(game: import('./game.js').Game) {
10
+ public constructor(game: Game) {
10
11
  this.game = game;
11
12
  this.rafId = 0;
12
13
  }
@@ -14,14 +15,14 @@ export class RequestAnimationFrame {
14
15
  /**
15
16
  * Starts an animation frame request.
16
17
  */
17
- start = () => {
18
+ public start = () => {
18
19
  this.rafId = requestAnimationFrame(this.update);
19
20
  };
20
21
 
21
22
  /**
22
23
  * Cancels an animation frame request.
23
24
  */
24
- stop = () => {
25
+ public stop = () => {
25
26
  cancelAnimationFrame(this.rafId);
26
27
  };
27
28
 
@@ -29,7 +30,7 @@ export class RequestAnimationFrame {
29
30
  * Performs an animation frame request.
30
31
  * @param {number} rafTime - The timestamp provided by the browser's animation frame.
31
32
  */
32
- update = (rafTime: number) => {
33
+ public update = (rafTime: number) => {
33
34
  this.game.update(rafTime);
34
35
  this.rafId = requestAnimationFrame(this.update);
35
36
  };
@@ -0,0 +1,31 @@
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
+ import { getRegistry } from './registry.js';
3
+
4
+ describe('getRegistry', () => {
5
+ beforeEach(() => {
6
+ // @ts-expect-error the registry is created on demand, so tests may clear it
7
+ delete globalThis.PhaserRegistry;
8
+ });
9
+
10
+ it('creates the registry on first access', () => {
11
+ expect(globalThis.PhaserRegistry).toBeUndefined();
12
+ expect(getRegistry()).toBeDefined();
13
+ expect(globalThis.PhaserRegistry).toBeDefined();
14
+ });
15
+
16
+ it('returns the same object on repeat access', () => {
17
+ expect(getRegistry()).toBe(getRegistry());
18
+ });
19
+
20
+ it('preserves members written by subsystems', () => {
21
+ getRegistry().GL_CONTEXT_ID = 7;
22
+ expect(getRegistry().GL_CONTEXT_ID).toBe(7);
23
+ });
24
+
25
+ it('does not clobber a registry that already exists', () => {
26
+ const existing = getRegistry();
27
+ existing.stencilBufferLimit = 3;
28
+ expect(getRegistry()).toBe(existing);
29
+ expect(getRegistry().stencilBufferLimit).toBe(3);
30
+ });
31
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Returns the process-wide engine registry, creating it on first access.
3
+ * Members are populated lazily by the subsystems that own them.
4
+ * @returns {PhaserRegistryState} The engine registry.
5
+ */
6
+ export const getRegistry = (): PhaserRegistryState => {
7
+ globalThis.PhaserRegistry ??= {} as PhaserRegistryState;
8
+ return globalThis.PhaserRegistry;
9
+ };