melonjs 15.2.1 → 15.4.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 (291) hide show
  1. package/README.md +1 -1
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  6. package/dist/melonjs.mjs/application/application.js +75 -23
  7. package/dist/melonjs.mjs/application/header.js +2 -2
  8. package/dist/melonjs.mjs/application/resize.js +13 -11
  9. package/dist/melonjs.mjs/application/settings.js +37 -1
  10. package/dist/melonjs.mjs/audio/audio.js +4 -6
  11. package/dist/melonjs.mjs/camera/camera2d.js +12 -14
  12. package/dist/melonjs.mjs/const.js +1 -1
  13. package/dist/melonjs.mjs/entity/entity.js +3 -4
  14. package/dist/melonjs.mjs/geometries/ellipse.js +26 -59
  15. package/dist/melonjs.mjs/geometries/line.js +18 -25
  16. package/dist/melonjs.mjs/geometries/path2d.js +16 -13
  17. package/dist/melonjs.mjs/geometries/point.js +8 -16
  18. package/dist/melonjs.mjs/geometries/poly.js +40 -97
  19. package/dist/melonjs.mjs/geometries/rectangle.js +37 -91
  20. package/dist/melonjs.mjs/geometries/roundrect.js +26 -35
  21. package/dist/melonjs.mjs/index.js +6 -6
  22. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  23. package/dist/melonjs.mjs/input/input.js +1 -1
  24. package/dist/melonjs.mjs/input/keyboard.js +3 -3
  25. package/dist/melonjs.mjs/input/pointer.js +4 -4
  26. package/dist/melonjs.mjs/input/pointerevent.js +6 -7
  27. package/dist/melonjs.mjs/lang/console.js +1 -1
  28. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  29. package/dist/melonjs.mjs/level/level.js +1 -1
  30. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  31. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +16 -33
  32. package/dist/melonjs.mjs/level/tiled/TMXObject.js +3 -4
  33. package/dist/melonjs.mjs/level/tiled/TMXTile.js +4 -4
  34. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
  35. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +4 -7
  36. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +2 -2
  37. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +37 -47
  38. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +3 -3
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -2
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  43. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +2 -2
  44. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  45. package/dist/melonjs.mjs/loader/cache.js +1 -1
  46. package/dist/melonjs.mjs/loader/loader.js +1 -1
  47. package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
  48. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  49. package/dist/melonjs.mjs/loader/parser.js +4 -5
  50. package/dist/melonjs.mjs/loader/settings.js +1 -1
  51. package/dist/melonjs.mjs/math/color.js +5 -5
  52. package/dist/melonjs.mjs/math/math.js +1 -1
  53. package/dist/melonjs.mjs/math/matrix2.js +5 -59
  54. package/dist/melonjs.mjs/math/matrix3.js +82 -141
  55. package/dist/melonjs.mjs/math/observable_vector2.js +7 -7
  56. package/dist/melonjs.mjs/math/observable_vector3.js +5 -5
  57. package/dist/melonjs.mjs/math/vector2.js +7 -91
  58. package/dist/melonjs.mjs/math/vector3.js +6 -90
  59. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  60. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  61. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  62. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  64. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  65. package/dist/melonjs.mjs/particles/emitter.js +2 -2
  66. package/dist/melonjs.mjs/particles/particle.js +2 -2
  67. package/dist/melonjs.mjs/particles/settings.js +1 -1
  68. package/dist/melonjs.mjs/physics/body.js +22 -20
  69. package/dist/melonjs.mjs/physics/bounds.js +27 -33
  70. package/dist/melonjs.mjs/physics/collision.js +5 -5
  71. package/dist/melonjs.mjs/physics/detector.js +10 -10
  72. package/dist/melonjs.mjs/physics/quadtree.js +5 -5
  73. package/dist/melonjs.mjs/physics/response.js +1 -1
  74. package/dist/melonjs.mjs/physics/sat.js +3 -4
  75. package/dist/melonjs.mjs/physics/world.js +6 -9
  76. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  77. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  78. package/dist/melonjs.mjs/renderable/colorlayer.js +4 -4
  79. package/dist/melonjs.mjs/renderable/container.js +25 -25
  80. package/dist/melonjs.mjs/renderable/draggable.js +1 -1
  81. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  82. package/dist/melonjs.mjs/renderable/imagelayer.js +4 -4
  83. package/dist/melonjs.mjs/renderable/light2d.js +3 -3
  84. package/dist/melonjs.mjs/renderable/nineslicesprite.js +2 -2
  85. package/dist/melonjs.mjs/renderable/renderable.js +31 -39
  86. package/dist/melonjs.mjs/renderable/sprite.js +3 -3
  87. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +421 -0
  88. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +195 -0
  89. package/dist/melonjs.mjs/renderable/text/glyph.js +65 -0
  90. package/dist/melonjs.mjs/renderable/text/text.js +422 -0
  91. package/dist/melonjs.mjs/renderable/text/textmetrics.js +175 -0
  92. package/dist/melonjs.mjs/renderable/text/textstyle.js +21 -0
  93. package/dist/melonjs.mjs/renderable/trigger.js +10 -10
  94. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +7 -7
  95. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +7 -7
  96. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +3 -3
  97. package/dist/melonjs.mjs/state/stage.js +13 -14
  98. package/dist/melonjs.mjs/state/state.js +4 -51
  99. package/dist/melonjs.mjs/system/device.js +51 -10
  100. package/dist/melonjs.mjs/system/dom.js +1 -1
  101. package/dist/melonjs.mjs/system/event.js +46 -2
  102. package/dist/melonjs.mjs/system/platform.js +18 -18
  103. package/dist/melonjs.mjs/system/pooling.js +10 -10
  104. package/dist/melonjs.mjs/system/save.js +1 -1
  105. package/dist/melonjs.mjs/system/timer.js +1 -1
  106. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  107. package/dist/melonjs.mjs/text/bitmaptextdata.js +3 -6
  108. package/dist/melonjs.mjs/text/glyph.js +1 -1
  109. package/dist/melonjs.mjs/text/text.js +1 -1
  110. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  111. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  112. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  113. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  114. package/dist/melonjs.mjs/tweens/tween.js +2 -2
  115. package/dist/melonjs.mjs/utils/agent.js +1 -1
  116. package/dist/melonjs.mjs/utils/array.js +1 -1
  117. package/dist/melonjs.mjs/utils/file.js +1 -1
  118. package/dist/melonjs.mjs/utils/function.js +2 -3
  119. package/dist/melonjs.mjs/utils/string.js +1 -1
  120. package/dist/melonjs.mjs/utils/utils.js +1 -1
  121. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +5 -18
  122. package/dist/melonjs.mjs/video/renderer.js +17 -30
  123. package/dist/melonjs.mjs/video/texture/atlas.js +13 -13
  124. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  125. package/dist/melonjs.mjs/video/texture/canvas_texture.js +15 -15
  126. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  127. package/dist/melonjs.mjs/video/video.js +5 -29
  128. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +3 -3
  129. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +13 -14
  130. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
  131. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +2 -3
  132. package/dist/melonjs.mjs/video/webgl/glshader.js +2 -2
  133. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  138. package/dist/melonjs.mjs/video/webgl/utils/precision.js +4 -4
  139. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  141. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  142. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +62 -67
  143. package/dist/melonjs.module.js +1272 -1713
  144. package/dist/types/application/application.d.ts +32 -31
  145. package/dist/types/application/header.d.ts +2 -2
  146. package/dist/types/application/settings.d.ts +80 -16
  147. package/dist/types/audio/audio.d.ts +4 -6
  148. package/dist/types/camera/camera2d.d.ts +13 -16
  149. package/dist/types/entity/entity.d.ts +0 -1
  150. package/dist/types/geometries/ellipse.d.ts +18 -50
  151. package/dist/types/geometries/path2d.d.ts +1 -1
  152. package/dist/types/geometries/point.d.ts +5 -13
  153. package/dist/types/geometries/poly.d.ts +26 -75
  154. package/dist/types/geometries/rectangle.d.ts +12 -58
  155. package/dist/types/geometries/roundrect.d.ts +2 -11
  156. package/dist/types/index.d.ts +3 -3
  157. package/dist/types/input/gamepad.d.ts +31 -31
  158. package/dist/types/input/keyboard.d.ts +105 -105
  159. package/dist/types/input/pointer.d.ts +21 -21
  160. package/dist/types/input/pointerevent.d.ts +6 -6
  161. package/dist/types/level/tiled/TMXLayer.d.ts +1 -1
  162. package/dist/types/level/tiled/TMXUtils.d.ts +4 -6
  163. package/dist/types/math/matrix2.d.ts +9 -63
  164. package/dist/types/math/matrix3.d.ts +9 -68
  165. package/dist/types/math/observable_vector2.d.ts +2 -2
  166. package/dist/types/math/observable_vector3.d.ts +2 -2
  167. package/dist/types/math/vector2.d.ts +8 -92
  168. package/dist/types/math/vector3.d.ts +8 -92
  169. package/dist/types/particles/settings.d.ts +29 -29
  170. package/dist/types/physics/body.d.ts +10 -8
  171. package/dist/types/physics/bounds.d.ts +24 -30
  172. package/dist/types/physics/collision.d.ts +12 -12
  173. package/dist/types/physics/detector.d.ts +1 -1
  174. package/dist/types/physics/world.d.ts +4 -7
  175. package/dist/types/renderable/container.d.ts +19 -19
  176. package/dist/types/renderable/imagelayer.d.ts +6 -6
  177. package/dist/types/renderable/light2d.d.ts +7 -7
  178. package/dist/types/renderable/renderable.d.ts +10 -18
  179. package/dist/types/renderable/text/bitmaptext.d.ts +151 -0
  180. package/dist/types/renderable/text/bitmaptextdata.d.ts +35 -0
  181. package/dist/types/renderable/text/glyph.d.ts +28 -0
  182. package/dist/types/renderable/text/text.d.ts +159 -0
  183. package/dist/types/renderable/text/textmetrics.d.ts +47 -0
  184. package/dist/types/renderable/text/textstyle.d.ts +5 -0
  185. package/dist/types/renderable/ui/uibaseelement.d.ts +0 -1
  186. package/dist/types/renderable/ui/uispriteelement.d.ts +0 -1
  187. package/dist/types/renderable/ui/uitextbutton.d.ts +2 -7
  188. package/dist/types/state/stage.d.ts +3 -2
  189. package/dist/types/state/state.d.ts +11 -11
  190. package/dist/types/system/device.d.ts +16 -9
  191. package/dist/types/system/event.d.ts +40 -0
  192. package/dist/types/system/platform.d.ts +17 -17
  193. package/dist/types/utils/function.d.ts +1 -2
  194. package/dist/types/video/canvas/canvas_renderer.d.ts +0 -23
  195. package/dist/types/video/renderer.d.ts +16 -43
  196. package/dist/types/video/texture/canvas_texture.d.ts +14 -14
  197. package/dist/types/video/video.d.ts +4 -38
  198. package/dist/types/video/webgl/buffer/vertex.d.ts +2 -2
  199. package/dist/types/video/webgl/compositors/compositor.d.ts +24 -13
  200. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +0 -1
  201. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +0 -1
  202. package/dist/types/video/webgl/utils/precision.d.ts +1 -1
  203. package/dist/types/video/webgl/webgl_renderer.d.ts +48 -84
  204. package/package.json +15 -15
  205. package/src/application/application.js +73 -21
  206. package/src/application/header.js +1 -1
  207. package/src/application/resize.js +11 -9
  208. package/src/application/settings.js +36 -0
  209. package/src/audio/audio.js +3 -5
  210. package/src/camera/camera2d.js +11 -13
  211. package/src/entity/entity.js +2 -3
  212. package/src/geometries/ellipse.js +25 -58
  213. package/src/geometries/line.js +17 -24
  214. package/src/geometries/path2d.js +15 -12
  215. package/src/geometries/point.js +7 -15
  216. package/src/geometries/poly.js +39 -96
  217. package/src/geometries/rectangle.js +36 -90
  218. package/src/geometries/roundrect.js +25 -34
  219. package/src/index.js +4 -4
  220. package/src/input/keyboard.js +2 -2
  221. package/src/input/pointer.js +3 -3
  222. package/src/input/pointerevent.js +5 -6
  223. package/src/lang/deprecated.js +1 -1
  224. package/src/level/tiled/TMXLayer.js +15 -32
  225. package/src/level/tiled/TMXObject.js +2 -3
  226. package/src/level/tiled/TMXTile.js +3 -3
  227. package/src/level/tiled/TMXTileMap.js +2 -2
  228. package/src/level/tiled/TMXTileset.js +3 -6
  229. package/src/level/tiled/TMXTilesetGroup.js +1 -1
  230. package/src/level/tiled/TMXUtils.js +36 -46
  231. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
  232. package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  233. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  234. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  235. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  236. package/src/loader/parser.js +3 -4
  237. package/src/math/color.js +4 -4
  238. package/src/math/matrix2.js +4 -58
  239. package/src/math/matrix3.js +81 -140
  240. package/src/math/observable_vector2.js +6 -6
  241. package/src/math/observable_vector3.js +4 -4
  242. package/src/math/vector2.js +6 -90
  243. package/src/math/vector3.js +5 -89
  244. package/src/particles/emitter.js +1 -1
  245. package/src/particles/particle.js +1 -1
  246. package/src/physics/body.js +21 -19
  247. package/src/physics/bounds.js +26 -32
  248. package/src/physics/collision.js +4 -4
  249. package/src/physics/detector.js +9 -9
  250. package/src/physics/quadtree.js +4 -4
  251. package/src/physics/sat.js +2 -3
  252. package/src/physics/world.js +5 -8
  253. package/src/polyfill/roundrect.js +163 -163
  254. package/src/renderable/collectable.js +1 -1
  255. package/src/renderable/colorlayer.js +3 -3
  256. package/src/renderable/container.js +24 -24
  257. package/src/renderable/imagelayer.js +3 -3
  258. package/src/renderable/light2d.js +2 -2
  259. package/src/renderable/nineslicesprite.js +1 -1
  260. package/src/renderable/renderable.js +30 -38
  261. package/src/renderable/sprite.js +2 -2
  262. package/src/{text → renderable/text}/bitmaptext.js +8 -8
  263. package/src/{text → renderable/text}/bitmaptextdata.js +4 -7
  264. package/src/{text → renderable/text}/glyph.js +1 -1
  265. package/src/{text → renderable/text}/text.js +16 -17
  266. package/src/{text → renderable/text}/textmetrics.js +2 -2
  267. package/src/renderable/trigger.js +9 -9
  268. package/src/renderable/ui/uibaseelement.js +6 -6
  269. package/src/renderable/ui/uispriteelement.js +6 -6
  270. package/src/renderable/ui/uitextbutton.js +2 -2
  271. package/src/state/stage.js +12 -13
  272. package/src/state/state.js +2 -61
  273. package/src/system/device.js +50 -9
  274. package/src/system/event.js +44 -0
  275. package/src/system/platform.js +18 -18
  276. package/src/system/pooling.js +9 -9
  277. package/src/tweens/tween.js +1 -1
  278. package/src/utils/function.js +1 -2
  279. package/src/video/canvas/canvas_renderer.js +4 -17
  280. package/src/video/renderer.js +16 -29
  281. package/src/video/texture/atlas.js +12 -12
  282. package/src/video/texture/canvas_texture.js +14 -14
  283. package/src/video/video.js +7 -28
  284. package/src/video/webgl/buffer/vertex.js +2 -2
  285. package/src/video/webgl/compositors/compositor.js +12 -13
  286. package/src/video/webgl/compositors/primitive_compositor.js +4 -4
  287. package/src/video/webgl/compositors/quad_compositor.js +1 -2
  288. package/src/video/webgl/glshader.js +1 -1
  289. package/src/video/webgl/utils/precision.js +3 -3
  290. package/src/video/webgl/webgl_renderer.js +61 -66
  291. /package/src/{text → renderable/text}/textstyle.js +0 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -17,7 +17,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
17
17
  * Use this for example if you want to display a panel that contains text, images or other UI elements.
18
18
  * @augments Container
19
19
  */
20
- class UIBaseElement extends Container {
20
+ class UIBaseElement extends Container {
21
21
  /**
22
22
  *
23
23
  * @param {number} x - The x position of the container
@@ -95,7 +95,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
95
95
  clicked(event) {
96
96
  // Check if left mouse button is pressed
97
97
  if (event.button === 0 && this.isClickable) {
98
- this.dirty = true;
98
+ this.isDirty = true;
99
99
  this.released = false;
100
100
  if (this.isHoldable) {
101
101
  timer.clearTimeout(this.holdTimeout);
@@ -129,7 +129,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
129
129
  */
130
130
  enter(event) {
131
131
  this.hover = true;
132
- this.dirty = true;
132
+ this.isDirty = true;
133
133
  if (this.isDraggable === true) {
134
134
  on(POINTERMOVE, this.pointerMove, this);
135
135
  // to memorize where we grab the object
@@ -175,7 +175,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
175
175
  */
176
176
  leave(event) {
177
177
  this.hover = false;
178
- this.dirty = true;
178
+ this.isDirty = true;
179
179
  if (this.isDraggable === true) {
180
180
  // unregister on the global pointermove event
181
181
  off(POINTERMOVE, this.pointerMove);
@@ -201,7 +201,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
201
201
  release(event) {
202
202
  if (this.released === false) {
203
203
  this.released = true;
204
- this.dirty = true;
204
+ this.isDirty = true;
205
205
  timer.clearTimeout(this.holdTimeout);
206
206
  this.holdTimeout = -1;
207
207
  return this.onRelease(event);
@@ -223,7 +223,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
223
223
  hold() {
224
224
  timer.clearTimeout(this.holdTimeout);
225
225
  this.holdTimeout = -1;
226
- this.dirty = true;
226
+ this.isDirty = true;
227
227
  if (!this.released) {
228
228
  this.onHold();
229
229
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -14,7 +14,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
14
14
  * This is a basic sprite based button which you can use in your Game UI.
15
15
  * @augments Sprite
16
16
  */
17
- class UISpriteElement extends Sprite {
17
+ class UISpriteElement extends Sprite {
18
18
  /**
19
19
  * @param {number} x - the x coordinate of the UISpriteElement Object
20
20
  * @param {number} y - the y coordinate of the UISpriteElement Object
@@ -100,7 +100,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
100
100
  clicked(event) {
101
101
  // Check if left mouse button is pressed
102
102
  if (event.button === 0 && this.isClickable) {
103
- this.dirty = true;
103
+ this.isDirty = true;
104
104
  this.released = false;
105
105
  if (this.isHoldable) {
106
106
  timer.clearTimeout(this.holdTimeout);
@@ -126,7 +126,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
126
126
  */
127
127
  enter(event) {
128
128
  this.hover = true;
129
- this.dirty = true;
129
+ this.isDirty = true;
130
130
  return this.onOver(event);
131
131
  }
132
132
 
@@ -144,7 +144,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
144
144
  */
145
145
  leave(event) {
146
146
  this.hover = false;
147
- this.dirty = true;
147
+ this.isDirty = true;
148
148
  this.release(event);
149
149
  return this.onOut(event);
150
150
  }
@@ -164,7 +164,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
164
164
  release(event) {
165
165
  if (this.released === false) {
166
166
  this.released = true;
167
- this.dirty = true;
167
+ this.isDirty = true;
168
168
  timer.clearTimeout(this.holdTimeout);
169
169
  this.holdTimeout = -1;
170
170
  return this.onRelease(event);
@@ -186,7 +186,7 @@ import { registerPointerEvent, releasePointerEvent } from '../../input/pointerev
186
186
  hold() {
187
187
  timer.clearTimeout(this.holdTimeout);
188
188
  this.holdTimeout = -1;
189
- this.dirty = true;
189
+ this.isDirty = true;
190
190
  if (!this.released) {
191
191
  this.onHold();
192
192
  }
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
6
6
  * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
7
  */
8
- import BitmapText from '../../text/bitmaptext.js';
8
+ import BitmapText from '../text/bitmaptext.js';
9
9
  import RoundRect from '../../geometries/roundrect.js';
10
10
  import UIBaseElement from './uibaseelement.js';
11
11
 
@@ -14,7 +14,7 @@ import UIBaseElement from './uibaseelement.js';
14
14
  * This is a basic base text button which you can use in your Game UI.
15
15
  * @augments UIBaseElement
16
16
  */
17
- class UITextButton extends UIBaseElement {
17
+ class UITextButton extends UIBaseElement {
18
18
  /**
19
19
  * A Bitmap Text Button with an outlined background border, filled with background color.
20
20
  * It uses a RoundRect as background and changes the background color on hovering over.
@@ -1,12 +1,12 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
6
6
  * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
7
  */
8
8
  import { renderer } from '../video/video.js';
9
- import { game } from '../index.js';
9
+ import { emit, STAGE_RESET } from '../system/event.js';
10
10
  import Camera2d from '../camera/camera2d.js';
11
11
  import Color from '../math/color.js';
12
12
 
@@ -25,7 +25,7 @@ let default_settings = {
25
25
  * through the state manager must inherit from this base class.
26
26
  * @see state
27
27
  */
28
- class Stage {
28
+ class Stage {
29
29
 
30
30
  /**
31
31
  * @param {object} [settings] - The stage` parameters
@@ -94,7 +94,6 @@ let default_settings = {
94
94
  * @ignore
95
95
  */
96
96
  reset() {
97
-
98
97
  // add all defined cameras
99
98
  this.settings.cameras.forEach((camera) => {
100
99
  this.cameras.set(camera.name, camera);
@@ -112,7 +111,7 @@ let default_settings = {
112
111
  }
113
112
 
114
113
  // reset the game
115
- game.reset();
114
+ emit(STAGE_RESET, this);
116
115
 
117
116
  // call the onReset Function
118
117
  this.onResetEvent.apply(this, arguments);
@@ -127,8 +126,7 @@ let default_settings = {
127
126
  * @returns {boolean}
128
127
  */
129
128
  update(dt) {
130
- // update all objects (and pass the elapsed time since last frame)
131
- let isDirty = game.world.update(dt);
129
+ let isDirty = false;
132
130
 
133
131
  // update the camera/viewport
134
132
  // iterate through all cameras
@@ -153,13 +151,15 @@ let default_settings = {
153
151
  * @name draw
154
152
  * @memberof Stage
155
153
  * @ignore
156
- * @param {CanvasRenderer|WebGLRenderer} renderer - a renderer object
154
+ * @param {Renderer} renderer - the renderer object to draw with
155
+ * @param {World} world - the world object to draw
157
156
  */
158
- draw(renderer) {
157
+ draw(renderer, world) {
158
+
159
159
  // iterate through all cameras
160
160
  this.cameras.forEach((camera) => {
161
161
  // render the root container
162
- camera.draw(renderer, game.world);
162
+ camera.draw(renderer, world);
163
163
 
164
164
  // render the ambient light
165
165
  if (this.ambientLight.alpha !== 0) {
@@ -179,9 +179,9 @@ let default_settings = {
179
179
 
180
180
  // render all lights
181
181
  this.lights.forEach((light) => {
182
- light.preDraw(renderer, game.world);
183
- light.draw(renderer, game.world);
184
- light.postDraw(renderer, game.world);
182
+ light.preDraw(renderer, world);
183
+ light.draw(renderer, world);
184
+ light.postDraw(renderer, world);
185
185
  });
186
186
  });
187
187
  }
@@ -216,7 +216,6 @@ let default_settings = {
216
216
  if (typeof this.settings.onResetEvent === "function") {
217
217
  this.settings.onResetEvent.apply(this, arguments);
218
218
  }
219
-
220
219
  }
221
220
 
222
221
  /**
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -7,9 +7,8 @@
7
7
  */
8
8
  import { pauseTrack, resumeTrack } from '../audio/audio.js';
9
9
  import { defer } from '../utils/function.js';
10
- import { on, VIDEO_INIT, BOOT, emit, STATE_STOP, STATE_PAUSE, STATE_RESTART, STATE_RESUME, STATE_CHANGE } from '../system/event.js';
10
+ import { on, VIDEO_INIT, BOOT, emit, STATE_STOP, STATE_PAUSE, STATE_RESTART, STATE_RESUME, STATE_CHANGE, TICK } from '../system/event.js';
11
11
  import { game } from '../index.js';
12
- import { focus } from '../system/device.js';
13
12
  import Stage from './stage.js';
14
13
  import DefaultLoadingScreen from '../loader/loadingscreen.js';
15
14
 
@@ -78,11 +77,7 @@ function _pauseRunLoop() {
78
77
  * @ignore
79
78
  */
80
79
  function _renderFrame(time) {
81
- let stage = _stages[_state].stage;
82
- // update all game objects
83
- game.update(time, stage);
84
- // render all game objects
85
- game.draw(stage);
80
+ emit(TICK, time);
86
81
  // schedule the next frame update
87
82
  if (_animFrameId !== -1) {
88
83
  _animFrameId = globalThis.requestAnimationFrame(_renderFrame);
@@ -131,9 +126,6 @@ function _switchState(state) {
131
126
  if (_onSwitchComplete) {
132
127
  _onSwitchComplete();
133
128
  }
134
-
135
- // force repaint
136
- game.repaint();
137
129
  }
138
130
  }
139
131
 
@@ -147,42 +139,6 @@ on(BOOT, () => {
147
139
  on(VIDEO_INIT, () => {
148
140
  state.change(state.DEFAULT, true);
149
141
  });
150
-
151
- if (typeof globalThis.addEventListener === "function") {
152
- // set pause/stop action on losing focus
153
- globalThis.addEventListener("blur", () => {
154
- {
155
- state.pause(true);
156
- }
157
- }, false);
158
- // set restart/resume action on gaining focus
159
- globalThis.addEventListener("focus", () => {
160
- {
161
- state.resume(true);
162
- }
163
- // force focus if autofocus is on
164
- {
165
- focus();
166
- }
167
- }, false);
168
- }
169
-
170
- if (typeof globalThis.document !== "undefined") {
171
- if (typeof globalThis.document.addEventListener === "function") {
172
- // register on the visibilitychange event if supported
173
- globalThis.document.addEventListener("visibilitychange", () => {
174
- if (globalThis.document.visibilityState === "visible") {
175
- {
176
- state.resume(true);
177
- }
178
- } else {
179
- {
180
- state.pause(true);
181
- }
182
- }
183
- }, false );
184
- }
185
- }
186
142
  });
187
143
 
188
144
  /**
@@ -267,7 +223,7 @@ let state = {
267
223
  * default state ID for the default Stage
268
224
  * (the default stage is the one running as soon as melonJS is started)
269
225
  * @constant
270
- * @name SETTINGS
226
+ * @name DEFAULT
271
227
  * @memberof state
272
228
  */
273
229
  DEFAULT : 9,
@@ -355,9 +311,6 @@ let state = {
355
311
  // calculate the elpased time
356
312
  _pauseTime = globalThis.performance.now() - _pauseTime;
357
313
 
358
- // force repaint
359
- game.repaint();
360
-
361
314
  // publish the restart notification
362
315
  emit(STATE_RESTART, _pauseTime);
363
316
  }
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { getParent } from '../video/video.js';
9
9
  import save from './save.js';
10
+ import { emit, BLUR, FOCUS } from './event.js';
10
11
  import { prefixed } from '../utils/agent.js';
11
12
  import { DOMContentLoaded } from './dom.js';
12
13
  import * as platform$1 from './platform.js';
@@ -52,6 +53,7 @@ function hasOffscreenCanvas() {
52
53
 
53
54
  /**
54
55
  * used by [un]watchAccelerometer()
56
+ * @ignore
55
57
  */
56
58
  function onDeviceMotion(e) {
57
59
  // Accelerometer information
@@ -62,6 +64,7 @@ function onDeviceMotion(e) {
62
64
 
63
65
  /**
64
66
  * used by [un]watchDeviceOrientation()
67
+ * @ignore
65
68
  */
66
69
  function onDeviceRotate(e) {
67
70
  gamma = e.gamma;
@@ -354,6 +357,8 @@ let alpha = 0;
354
357
  * Specify whether to pause the game when losing focus
355
358
  * @name pauseOnBlur
356
359
  * @memberof device
360
+ * @deprecated since 15.4.0
361
+ * @see Application.pauseOnBlur
357
362
  * @type {boolean}
358
363
  * @public
359
364
  * @default true
@@ -364,6 +369,8 @@ let pauseOnBlur = true;
364
369
  * Specify whether to unpause the game when gaining focus
365
370
  * @name resumeOnFocus
366
371
  * @memberof device
372
+ * @deprecated since 15.4.0
373
+ * @see Application.resumeOnFocus
367
374
  * @type {boolean}
368
375
  * @public
369
376
  * @default true
@@ -371,25 +378,27 @@ let pauseOnBlur = true;
371
378
  let resumeOnFocus = true;
372
379
 
373
380
  /**
374
- * Specify whether to automatically bring the window to the front
375
- * @name autoFocus
381
+ * Specify whether to stop the game when losing focus or not.
382
+ * The engine restarts on focus if this is enabled.
383
+ * @name stopOnBlur
376
384
  * @memberof device
385
+ * @deprecated since 15.4.0
386
+ * @see Application.stopOnBlur
377
387
  * @type {boolean}
378
388
  * @public
379
- * @default true
389
+ * @default false
380
390
  */
381
- let autoFocus = true;
391
+ let stopOnBlur = false;
382
392
 
383
393
  /**
384
- * Specify whether to stop the game when losing focus or not.
385
- * The engine restarts on focus if this is enabled.
386
- * @name stopOnBlur
394
+ * Specify whether to automatically bring the window to the front
395
+ * @name autoFocus
387
396
  * @memberof device
388
397
  * @type {boolean}
389
398
  * @public
390
- * @default false
399
+ * @default true
391
400
  */
392
- let stopOnBlur = false;
401
+ let autoFocus = true;
393
402
 
394
403
  /**
395
404
  * specify a function to execute when the Device is fully loaded and ready
@@ -437,6 +446,38 @@ let stopOnBlur = false;
437
446
  * });
438
447
  */
439
448
  function onReady(fn) {
449
+ // register on blur/focus and visibility event handlers
450
+ if (typeof globalThis.addEventListener === "function") {
451
+ // set pause/stop action on losing focus
452
+ globalThis.addEventListener("blur", () => {
453
+ emit(BLUR);
454
+ }, false);
455
+ // set restart/resume action on gaining focus
456
+ globalThis.addEventListener("focus", () => {
457
+ emit(FOCUS);
458
+ // force focus if autofocus is on
459
+ {
460
+ focus();
461
+ }
462
+ }, false);
463
+ }
464
+ if (typeof globalThis.document !== "undefined") {
465
+ if (typeof globalThis.document.addEventListener === "function") {
466
+ // register on the visibilitychange event if supported
467
+ globalThis.document.addEventListener("visibilitychange", () => {
468
+ if (globalThis.document.visibilityState === "visible") {
469
+ emit(FOCUS);
470
+ // force focus if autofocus is on
471
+ {
472
+ focus();
473
+ }
474
+ } else {
475
+ emit(BLUR);
476
+ }
477
+ }, false );
478
+ }
479
+ }
480
+ // call the supplied function
440
481
  DOMContentLoaded(fn);
441
482
  }
442
483
 
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -37,6 +37,39 @@ const DOM_READY = "dom_ready";
37
37
  */
38
38
  const BOOT = "me.boot";
39
39
 
40
+ /**
41
+ * event generated when the system update the engine and the renderer by one step
42
+ * @public
43
+ * @constant
44
+ * @type {string}
45
+ * @name TICK
46
+ * @memberof event
47
+ * @see event.on
48
+ */
49
+ const TICK = "me.tick";
50
+
51
+ /**
52
+ * event generated when the main browser or window is losing focus
53
+ * @public
54
+ * @constant
55
+ * @type {string}
56
+ * @name BLUR
57
+ * @memberof event
58
+ * @see event.on
59
+ */
60
+ const BLUR = "me.blur";
61
+
62
+ /**
63
+ * event generated when the main browser or window is gaining back focus
64
+ * @public
65
+ * @constant
66
+ * @type {string}
67
+ * @name FOCUS
68
+ * @memberof event
69
+ * @see event.on
70
+ */
71
+ const FOCUS = "me.focus";
72
+
40
73
  /**
41
74
  * event when the game is paused <br>
42
75
  * Data passed : none <br>
@@ -96,6 +129,17 @@ const STATE_RESTART = "me.state.onRestart";
96
129
  */
97
130
  const STATE_CHANGE = "me.state.onChange";
98
131
 
132
+ /**
133
+ * event for when a stage is resetted
134
+ * @public
135
+ * @constant
136
+ * @type {string}
137
+ * @name STAGE_RESET
138
+ * @memberof event
139
+ * @see event.on
140
+ */
141
+ const STAGE_RESET = "me.stage.onReset";
142
+
99
143
  /**
100
144
  * event for when the video is initialized<br>
101
145
  * Data passed : none <br>
@@ -534,4 +578,4 @@ function off(eventName, listener) {
534
578
  return eventEmitter.off(eventName, listener);
535
579
  }
536
580
 
537
- export { BOOT, CANVAS_ONRESIZE, DOM_READY, DRAGEND, DRAGSTART, GAMEPAD_CONNECTED, GAMEPAD_DISCONNECTED, GAMEPAD_UPDATE, GAME_AFTER_DRAW, GAME_AFTER_UPDATE, GAME_BEFORE_DRAW, GAME_BEFORE_UPDATE, GAME_INIT, GAME_RESET, GAME_UPDATE, KEYDOWN, KEYUP, LEVEL_LOADED, LOADER_COMPLETE, LOADER_PROGRESS, ONCONTEXT_LOST, ONCONTEXT_RESTORED, POINTERLOCKCHANGE, POINTERMOVE, STATE_CHANGE, STATE_PAUSE, STATE_RESTART, STATE_RESUME, STATE_STOP, VIDEO_INIT, VIEWPORT_ONCHANGE, VIEWPORT_ONRESIZE, WINDOW_ONORIENTATION_CHANGE, WINDOW_ONRESIZE, WINDOW_ONSCROLL, emit, off, on, once };
581
+ export { BLUR, BOOT, CANVAS_ONRESIZE, DOM_READY, DRAGEND, DRAGSTART, FOCUS, GAMEPAD_CONNECTED, GAMEPAD_DISCONNECTED, GAMEPAD_UPDATE, GAME_AFTER_DRAW, GAME_AFTER_UPDATE, GAME_BEFORE_DRAW, GAME_BEFORE_UPDATE, GAME_INIT, GAME_RESET, GAME_UPDATE, KEYDOWN, KEYUP, LEVEL_LOADED, LOADER_COMPLETE, LOADER_PROGRESS, ONCONTEXT_LOST, ONCONTEXT_RESTORED, POINTERLOCKCHANGE, POINTERMOVE, STAGE_RESET, STATE_CHANGE, STATE_PAUSE, STATE_RESTART, STATE_RESUME, STATE_STOP, TICK, VIDEO_INIT, VIEWPORT_ONCHANGE, VIEWPORT_ONRESIZE, WINDOW_ONORIENTATION_CHANGE, WINDOW_ONRESIZE, WINDOW_ONSCROLL, emit, off, on, once };
@@ -1,28 +1,28 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
6
6
  * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
7
  */
8
8
  /**
9
- * The device platform type
10
- * @namespace platform
11
- * @memberof device
12
- * @property {string} ua the user agent string for the current device
13
- * @property {boolean} iOS `true` if the device is an iOS platform
14
- * @property {boolean} android `true` if the device is an Android platform
15
- * @property {boolean} android2 `true` if the device is an Android 2.x platform
16
- * @property {boolean} linux `true` if the device is a Linux platform
17
- * @property {boolean} chromeOS `true` if the device is running on ChromeOS.
18
- * @property {boolean} wp `true` if the device is a Windows Phone platform
19
- * @property {boolean} BlackBerry`true` if the device is a BlackBerry platform
20
- * @property {boolean} Kindle`true` if the device is a Kindle platform
21
- * @property {boolean} ejecta `true` if running under Ejecta
22
- * @property {boolean} isWeixin `true` if running under Wechat
23
- * @property {boolean} nodeJS `true` if running under node.js
24
- * @property {boolean} isMobile `true` if a mobile device
25
- */
9
+ * The device platform type
10
+ * @namespace platform
11
+ * @memberof device
12
+ * @property {string} ua the user agent string for the current device
13
+ * @property {boolean} iOS `true` if the device is an iOS platform
14
+ * @property {boolean} android `true` if the device is an Android platform
15
+ * @property {boolean} android2 `true` if the device is an Android 2.x platform
16
+ * @property {boolean} linux `true` if the device is a Linux platform
17
+ * @property {boolean} chromeOS `true` if the device is running on ChromeOS.
18
+ * @property {boolean} wp `true` if the device is a Windows Phone platform
19
+ * @property {boolean} BlackBerry`true` if the device is a BlackBerry platform
20
+ * @property {boolean} Kindle`true` if the device is a Kindle platform
21
+ * @property {boolean} ejecta `true` if running under Ejecta
22
+ * @property {boolean} isWeixin `true` if running under Wechat
23
+ * @property {boolean} nodeJS `true` if running under node.js
24
+ * @property {boolean} isMobile `true` if a mobile device
25
+ */
26
26
 
27
27
  const ua = typeof globalThis.navigator !== "undefined" ? globalThis.navigator.userAgent : "";
28
28
  const iOS = /iPhone|iPad|iPod/i.test(ua);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -45,15 +45,15 @@ class ObjectPool {
45
45
  * me.pool.register("cherrysprite", Cherry, true);
46
46
  */
47
47
  register(className, classObj, recycling = false) {
48
- if (typeof (classObj) !== "undefined") {
49
- this.objectClass[className] = {
50
- "class" : classObj,
51
- "pool" : (recycling ? [] : undefined)
52
- };
53
- } else {
54
- throw new Error("Cannot register object '" + className + "', invalid class");
55
- }
56
- }
48
+ if (typeof (classObj) !== "undefined") {
49
+ this.objectClass[className] = {
50
+ "class" : classObj,
51
+ "pool" : (recycling ? [] : undefined)
52
+ };
53
+ } else {
54
+ throw new Error("Cannot register object '" + className + "', invalid class");
55
+ }
56
+ }
57
57
 
58
58
  /**
59
59
  * Pull a new instance of the requested object (if added into the object pool)
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -123,14 +123,11 @@ function createSpaceGlyph(glyphs) {
123
123
  this.lineHeight = parseFloat(getValueFromPair(lines[1], /lineHeight\=\d+/g));
124
124
 
125
125
  let baseLine = parseFloat(getValueFromPair(lines[1], /base\=\d+/g));
126
-
127
126
  let padY = this.padTop + this.padBottom;
128
-
129
127
  let glyph = null;
130
128
 
131
- let i;
132
129
 
133
- for (i = 4; i < lines.length; i++) {
130
+ for (let i = 4; i < lines.length; i++) {
134
131
  let line = lines[i];
135
132
  let characterValues = line.split(/=|\s+/);
136
133
  if (!line || /^kernings/.test(line)) {
@@ -171,7 +168,7 @@ function createSpaceGlyph(glyphs) {
171
168
  createSpaceGlyph(this.glyphs);
172
169
 
173
170
  let capGlyph = null;
174
- for (i = 0; i < capChars.length; i++) {
171
+ for (let i = 0; i < capChars.length; i++) {
175
172
  let capChar = capChars[i];
176
173
  capGlyph = this.glyphs[capChar.charCodeAt(0)];
177
174
  if (capGlyph) {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.2.1
2
+ * melonJS Game Engine - v15.4.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license