melonjs 15.12.0 → 15.14.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 (153) 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 +1 -1
  7. package/dist/melonjs.mjs/application/header.js +1 -1
  8. package/dist/melonjs.mjs/application/resize.js +1 -1
  9. package/dist/melonjs.mjs/application/settings.js +1 -1
  10. package/dist/melonjs.mjs/audio/audio.js +1 -1
  11. package/dist/melonjs.mjs/camera/camera2d.js +1 -1
  12. package/dist/melonjs.mjs/const.js +1 -1
  13. package/dist/melonjs.mjs/geometries/ellipse.js +1 -1
  14. package/dist/melonjs.mjs/geometries/line.js +1 -1
  15. package/dist/melonjs.mjs/geometries/path2d.js +1 -1
  16. package/dist/melonjs.mjs/geometries/point.js +1 -1
  17. package/dist/melonjs.mjs/geometries/poly.js +1 -1
  18. package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
  19. package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
  20. package/dist/melonjs.mjs/index.js +2 -2
  21. package/dist/melonjs.mjs/input/gamepad.js +1 -1
  22. package/dist/melonjs.mjs/input/input.js +1 -1
  23. package/dist/melonjs.mjs/input/keyboard.js +1 -1
  24. package/dist/melonjs.mjs/input/pointer.js +1 -1
  25. package/dist/melonjs.mjs/input/pointerevent.js +1 -1
  26. package/dist/melonjs.mjs/lang/console.js +1 -1
  27. package/dist/melonjs.mjs/lang/deprecated.js +1 -1
  28. package/dist/melonjs.mjs/level/level.js +1 -1
  29. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
  30. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -1
  31. package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
  32. package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
  33. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +1 -1
  34. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
  35. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
  36. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +1 -1
  37. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  38. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  43. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  44. package/dist/melonjs.mjs/loader/cache.js +1 -1
  45. package/dist/melonjs.mjs/loader/loader.js +55 -3
  46. package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
  47. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  48. package/dist/melonjs.mjs/loader/parsers/binary.js +1 -1
  49. package/dist/melonjs.mjs/loader/parsers/fontface.js +1 -1
  50. package/dist/melonjs.mjs/loader/parsers/image.js +6 -1
  51. package/dist/melonjs.mjs/loader/parsers/json.js +6 -1
  52. package/dist/melonjs.mjs/loader/parsers/script.js +1 -1
  53. package/dist/melonjs.mjs/loader/parsers/tmx.js +6 -1
  54. package/dist/melonjs.mjs/loader/settings.js +1 -1
  55. package/dist/melonjs.mjs/math/color.js +1 -1
  56. package/dist/melonjs.mjs/math/math.js +1 -1
  57. package/dist/melonjs.mjs/math/matrix2.js +1 -1
  58. package/dist/melonjs.mjs/math/matrix3.js +1 -1
  59. package/dist/melonjs.mjs/math/observable_vector2.js +1 -1
  60. package/dist/melonjs.mjs/math/observable_vector3.js +1 -1
  61. package/dist/melonjs.mjs/math/vector2.js +1 -1
  62. package/dist/melonjs.mjs/math/vector3.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  64. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  65. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  66. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  67. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  68. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  69. package/dist/melonjs.mjs/particles/emitter.js +1 -1
  70. package/dist/melonjs.mjs/particles/particle.js +1 -1
  71. package/dist/melonjs.mjs/particles/settings.js +1 -1
  72. package/dist/melonjs.mjs/physics/body.js +1 -1
  73. package/dist/melonjs.mjs/physics/bounds.js +1 -1
  74. package/dist/melonjs.mjs/physics/collision.js +1 -1
  75. package/dist/melonjs.mjs/physics/detector.js +1 -1
  76. package/dist/melonjs.mjs/physics/quadtree.js +1 -1
  77. package/dist/melonjs.mjs/physics/response.js +1 -1
  78. package/dist/melonjs.mjs/physics/sat.js +1 -1
  79. package/dist/melonjs.mjs/physics/world.js +1 -1
  80. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  81. package/dist/melonjs.mjs/renderable/collectable.js +1 -1
  82. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  83. package/dist/melonjs.mjs/renderable/container.js +1 -1
  84. package/dist/melonjs.mjs/renderable/draggable.js +1 -1
  85. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  86. package/dist/melonjs.mjs/renderable/entity/entity.js +1 -1
  87. package/dist/melonjs.mjs/renderable/imagelayer.js +1 -1
  88. package/dist/melonjs.mjs/renderable/light2d.js +1 -1
  89. package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
  90. package/dist/melonjs.mjs/renderable/renderable.js +1 -1
  91. package/dist/melonjs.mjs/renderable/sprite.js +1 -1
  92. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +3 -3
  93. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +1 -1
  94. package/dist/melonjs.mjs/renderable/text/glyph.js +1 -1
  95. package/dist/melonjs.mjs/renderable/text/text.js +1 -1
  96. package/dist/melonjs.mjs/renderable/text/textmetrics.js +1 -1
  97. package/dist/melonjs.mjs/renderable/text/textstyle.js +1 -1
  98. package/dist/melonjs.mjs/renderable/trigger.js +1 -1
  99. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
  100. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
  101. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +12 -11
  102. package/dist/melonjs.mjs/state/stage.js +1 -1
  103. package/dist/melonjs.mjs/state/state.js +1 -1
  104. package/dist/melonjs.mjs/system/device.js +1 -1
  105. package/dist/melonjs.mjs/system/dom.js +1 -1
  106. package/dist/melonjs.mjs/system/event.js +14 -2
  107. package/dist/melonjs.mjs/system/platform.js +1 -1
  108. package/dist/melonjs.mjs/system/pooling.js +1 -1
  109. package/dist/melonjs.mjs/system/save.js +1 -1
  110. package/dist/melonjs.mjs/system/timer.js +1 -1
  111. package/dist/melonjs.mjs/tweens/easing.js +1 -1
  112. package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
  113. package/dist/melonjs.mjs/tweens/tween.js +1 -1
  114. package/dist/melonjs.mjs/utils/agent.js +1 -1
  115. package/dist/melonjs.mjs/utils/array.js +1 -1
  116. package/dist/melonjs.mjs/utils/file.js +1 -1
  117. package/dist/melonjs.mjs/utils/function.js +1 -1
  118. package/dist/melonjs.mjs/utils/string.js +1 -1
  119. package/dist/melonjs.mjs/utils/utils.js +1 -1
  120. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -1
  121. package/dist/melonjs.mjs/video/renderer.js +1 -1
  122. package/dist/melonjs.mjs/video/texture/atlas.js +1 -1
  123. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  124. package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
  125. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  126. package/dist/melonjs.mjs/video/video.js +1 -1
  127. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
  128. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +1 -1
  129. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +1 -1
  130. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +1 -1
  131. package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
  132. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  133. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  134. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  138. package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
  139. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
  141. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1 -1
  142. package/dist/melonjs.module.js +111 -28
  143. package/dist/types/loader/loader.d.ts +28 -0
  144. package/dist/types/renderable/ui/uitextbutton.d.ts +10 -3
  145. package/dist/types/system/event.d.ts +11 -0
  146. package/package.json +12 -12
  147. package/src/loader/loader.js +52 -0
  148. package/src/loader/parsers/image.js +5 -0
  149. package/src/loader/parsers/json.js +5 -0
  150. package/src/loader/parsers/tmx.js +5 -0
  151. package/src/renderable/text/bitmaptext.js +2 -2
  152. package/src/renderable/ui/uitextbutton.js +11 -10
  153. package/src/system/event.js +12 -0
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v15.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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.12.0
2
+ * melonJS Game Engine - v15.14.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
@@ -205,7 +205,7 @@ var $TypeError$5 = TypeError;
205
205
  // `RequireObjectCoercible` abstract operation
206
206
  // https://tc39.es/ecma262/#sec-requireobjectcoercible
207
207
  var requireObjectCoercible$3 = function (it) {
208
- if (isNullOrUndefined$1(it)) throw $TypeError$5("Can't call method on " + it);
208
+ if (isNullOrUndefined$1(it)) throw new $TypeError$5("Can't call method on " + it);
209
209
  return it;
210
210
  };
211
211
 
@@ -393,7 +393,7 @@ var $TypeError$4 = TypeError;
393
393
  // `Assert: IsCallable(argument) is true`
394
394
  var aCallable$1 = function (argument) {
395
395
  if (isCallable$7(argument)) return argument;
396
- throw $TypeError$4(tryToString(argument) + ' is not a function');
396
+ throw new $TypeError$4(tryToString(argument) + ' is not a function');
397
397
  };
398
398
 
399
399
  var aCallable$2 = /*@__PURE__*/getDefaultExportFromCjs(aCallable$1);
@@ -425,7 +425,7 @@ var ordinaryToPrimitive$1 = function (input, pref) {
425
425
  if (pref === 'string' && isCallable$6(fn = input.toString) && !isObject$4(val = call$2(fn, input))) return val;
426
426
  if (isCallable$6(fn = input.valueOf) && !isObject$4(val = call$2(fn, input))) return val;
427
427
  if (pref !== 'string' && isCallable$6(fn = input.toString) && !isObject$4(val = call$2(fn, input))) return val;
428
- throw $TypeError$3("Can't convert object to primitive value");
428
+ throw new $TypeError$3("Can't convert object to primitive value");
429
429
  };
430
430
 
431
431
  var ordinaryToPrimitive$2 = /*@__PURE__*/getDefaultExportFromCjs(ordinaryToPrimitive$1);
@@ -473,10 +473,10 @@ var store$2 = sharedStore;
473
473
  (shared$5.exports = function (key, value) {
474
474
  return store$2[key] || (store$2[key] = value !== undefined ? value : {});
475
475
  })('versions', []).push({
476
- version: '3.32.2',
476
+ version: '3.33.0',
477
477
  mode: IS_PURE ? 'pure' : 'global',
478
478
  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',
479
- license: 'https://github.com/zloirock/core-js/blob/v3.32.2/LICENSE',
479
+ license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',
480
480
  source: 'https://github.com/zloirock/core-js'
481
481
  });
482
482
 
@@ -567,7 +567,7 @@ var toPrimitive$1 = function (input, pref) {
567
567
  if (pref === undefined) pref = 'default';
568
568
  result = call$1(exoticToPrim, input, pref);
569
569
  if (!isObject$3(result) || isSymbol$1(result)) return result;
570
- throw $TypeError$2("Can't convert object to primitive value");
570
+ throw new $TypeError$2("Can't convert object to primitive value");
571
571
  }
572
572
  if (pref === undefined) pref = 'number';
573
573
  return ordinaryToPrimitive(input, pref);
@@ -668,7 +668,7 @@ var $TypeError$1 = TypeError;
668
668
  // `Assert: Type(argument) is Object`
669
669
  var anObject$2 = function (argument) {
670
670
  if (isObject$1(argument)) return argument;
671
- throw $TypeError$1($String$2(argument) + ' is not an object');
671
+ throw new $TypeError$1($String$2(argument) + ' is not an object');
672
672
  };
673
673
 
674
674
  var anObject$3 = /*@__PURE__*/getDefaultExportFromCjs(anObject$2);
@@ -713,7 +713,7 @@ var f$2 = objectDefineProperty.f = DESCRIPTORS$3 ? V8_PROTOTYPE_DEFINE_BUG ? fun
713
713
  if (IE8_DOM_DEFINE) try {
714
714
  return $defineProperty(O, P, Attributes);
715
715
  } catch (error) { /* empty */ }
716
- if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');
716
+ if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');
717
717
  if ('value' in Attributes) O[P] = Attributes.value;
718
718
  return O;
719
719
  };
@@ -823,7 +823,7 @@ var getterFor = function (TYPE) {
823
823
  return function (it) {
824
824
  var state;
825
825
  if (!isObject(it) || (state = get$1(it)).type !== TYPE) {
826
- throw TypeError$1('Incompatible receiver, ' + TYPE + ' required');
826
+ throw new TypeError$1('Incompatible receiver, ' + TYPE + ' required');
827
827
  } return state;
828
828
  };
829
829
  };
@@ -836,7 +836,7 @@ if (NATIVE_WEAK_MAP || shared.state) {
836
836
  store.set = store.set;
837
837
  /* eslint-enable no-self-assign -- prototype methods protection */
838
838
  set = function (it, metadata) {
839
- if (store.has(it)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED);
839
+ if (store.has(it)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED);
840
840
  metadata.facade = it;
841
841
  store.set(it, metadata);
842
842
  return metadata;
@@ -851,7 +851,7 @@ if (NATIVE_WEAK_MAP || shared.state) {
851
851
  var STATE = sharedKey('state');
852
852
  hiddenKeys$2[STATE] = true;
853
853
  set = function (it, metadata) {
854
- if (hasOwn$3(it, STATE)) throw TypeError$1(OBJECT_ALREADY_INITIALIZED);
854
+ if (hasOwn$3(it, STATE)) throw new TypeError$1(OBJECT_ALREADY_INITIALIZED);
855
855
  metadata.facade = it;
856
856
  createNonEnumerableProperty$1(it, STATE, metadata);
857
857
  return metadata;
@@ -1326,7 +1326,7 @@ var classof = classof$1;
1326
1326
  var $String = String;
1327
1327
 
1328
1328
  var toString$2 = function (argument) {
1329
- if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
1329
+ if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
1330
1330
  return $String(argument);
1331
1331
  };
1332
1332
 
@@ -9407,6 +9407,18 @@ const LOADER_COMPLETE = "me.loader.onload";
9407
9407
  */
9408
9408
  const LOADER_PROGRESS = "me.loader.onProgress";
9409
9409
 
9410
+ /**
9411
+ * Event for when an error occur during preloading <br>
9412
+ * Data passed : {Resource} resource object<br>
9413
+ * @public
9414
+ * @constant
9415
+ * @type {string}
9416
+ * @name LOADER_ERROR
9417
+ * @memberof event
9418
+ * @see event.on
9419
+ */
9420
+ const LOADER_ERROR = "me.loader.onError";
9421
+
9410
9422
  /**
9411
9423
  * Event for pressing a binded key <br>
9412
9424
  * Data passed : {string} user-defined action, {number} keyCode,
@@ -9735,6 +9747,7 @@ var event = {
9735
9747
  KEYUP: KEYUP,
9736
9748
  LEVEL_LOADED: LEVEL_LOADED,
9737
9749
  LOADER_COMPLETE: LOADER_COMPLETE,
9750
+ LOADER_ERROR: LOADER_ERROR,
9738
9751
  LOADER_PROGRESS: LOADER_PROGRESS,
9739
9752
  ONCONTEXT_LOST: ONCONTEXT_LOST,
9740
9753
  ONCONTEXT_RESTORED: ONCONTEXT_RESTORED,
@@ -19188,6 +19201,11 @@ let jsonList = {};
19188
19201
  * ]);
19189
19202
  */
19190
19203
  function preloadImage(img, onload, onerror) {
19204
+ if (typeof imgList[img.name] !== "undefined") {
19205
+ // already loaded
19206
+ return 0;
19207
+ }
19208
+
19191
19209
  // create new Image object and add to list
19192
19210
  imgList[img.name] = new Image();
19193
19211
  if (typeof onload === "function") {
@@ -26527,6 +26545,11 @@ let level = {
26527
26545
  * @ignore
26528
26546
  */
26529
26547
  function preloadTMX(tmxData, onload, onerror) {
26548
+ if (typeof tmxList[tmxData.name] !== "undefined") {
26549
+ // already loaded
26550
+ return 0;
26551
+ }
26552
+
26530
26553
  /**
26531
26554
  * @ignore
26532
26555
  */
@@ -26642,6 +26665,11 @@ function preloadTMX(tmxData, onload, onerror) {
26642
26665
  * @ignore
26643
26666
  */
26644
26667
  function preloadJSON(data, onload, onerror) {
26668
+ if (typeof jsonList[data.name] !== "undefined") {
26669
+ // already loaded
26670
+ return 0;
26671
+ }
26672
+
26645
26673
  let xmlhttp = new XMLHttpRequest();
26646
26674
 
26647
26675
  if (xmlhttp.overrideMimeType) {
@@ -26810,6 +26838,18 @@ let onload;
26810
26838
  */
26811
26839
  let onProgress;
26812
26840
 
26841
+ /**
26842
+ * onError callback<br>
26843
+ * each time a resource loading is failed, the loader will fire the specified function giving the actual asset as argument.
26844
+ * @default undefined
26845
+ * @memberof loader
26846
+ * @type {function}
26847
+ * @example
26848
+ * // set a callback for error notification
26849
+ * me.loader.onError = this.loaderError.bind(this);
26850
+ */
26851
+ let onError;
26852
+
26813
26853
  /**
26814
26854
  * list of parser function for supported format type
26815
26855
  */
@@ -26825,6 +26865,10 @@ let resourceCount = 0;
26825
26865
  let loadCount = 0;
26826
26866
  let timerId = 0;
26827
26867
 
26868
+ /**
26869
+ * Assets uploaded with an error
26870
+ */
26871
+ const failureLoadedAssets = {};
26828
26872
 
26829
26873
  /**
26830
26874
  * init all supported parsers
@@ -26876,6 +26920,7 @@ function checkLoadStatus(onloadcb) {
26876
26920
  * @ignore
26877
26921
  */
26878
26922
  function onResourceLoaded(res) {
26923
+ delete failureLoadedAssets[res.src];
26879
26924
  // increment the loading counter
26880
26925
  loadCount++;
26881
26926
 
@@ -26892,9 +26937,15 @@ function onResourceLoaded(res) {
26892
26937
 
26893
26938
  /**
26894
26939
  * on error callback for image loading
26940
+ * @param {loader.Asset} asset - asset that loaded with failure
26895
26941
  * @ignore
26896
26942
  */
26897
26943
  function onLoadingError(res) {
26944
+ failureLoadedAssets[res.src] = res;
26945
+ if (this.onError) {
26946
+ this.onError(res);
26947
+ }
26948
+ emit(LOADER_ERROR, res);
26898
26949
  throw new Error("Failed loading resource " + res.src);
26899
26950
  }
26900
26951
 
@@ -27032,6 +27083,35 @@ function preload(assets, onloadcb, switchToLoadState = true) {
27032
27083
  checkLoadStatus(onload);
27033
27084
  }
27034
27085
 
27086
+ /**
27087
+ * retry loading assets after a loading failure
27088
+ * @memberof loader
27089
+ * @param {string} src - src of asset to reload
27090
+ * @example
27091
+ * event.on(
27092
+ * event.LOADER_ERROR,
27093
+ * (res) => {
27094
+ * // custom function
27095
+ * showErrorNotification({
27096
+ * text: `Error during loading content: ${res.name}`,
27097
+ * done: loader.reload(res.src);
27098
+ * })
27099
+ * }
27100
+ * );
27101
+ **/
27102
+ function reload(src) {
27103
+ const assetToReload = failureLoadedAssets[src];
27104
+ this.unload(assetToReload);
27105
+ resourceCount -= 1;
27106
+ resourceCount += this.load(
27107
+ assetToReload,
27108
+ this.onResourceLoaded.bind(this, assetToReload),
27109
+ this.onLoadingError.bind(this, assetToReload)
27110
+ );
27111
+ // check load status
27112
+ checkLoadStatus(this.onload);
27113
+ }
27114
+
27035
27115
  /**
27036
27116
  * Load a single asset (to be used if you need to load additional asset(s) during the game)
27037
27117
  * @memberof loader
@@ -27255,9 +27335,11 @@ var loader = {
27255
27335
  getTMX: getTMX,
27256
27336
  load: load,
27257
27337
  get nocache () { return nocache; },
27338
+ onError: onError,
27258
27339
  onProgress: onProgress,
27259
27340
  get onload () { return onload; },
27260
27341
  preload: preload,
27342
+ reload: reload,
27261
27343
  setBaseURL: setBaseURL,
27262
27344
  setNocache: setNocache,
27263
27345
  setParser: setParser,
@@ -34432,7 +34514,7 @@ class BitmapText extends Renderable {
34432
34514
  break;
34433
34515
 
34434
34516
  default :
34435
- ax = this.metrics.width * 0.0;
34517
+ ax = 0; //this.metrics.width * 0.0;
34436
34518
  break;
34437
34519
  }
34438
34520
 
@@ -34449,7 +34531,7 @@ class BitmapText extends Renderable {
34449
34531
  break;
34450
34532
 
34451
34533
  default :
34452
- ay = this.metrics.height * 0.0;
34534
+ ay = 0; //this.metrics.height * 0.0;
34453
34535
  break;
34454
34536
  }
34455
34537
 
@@ -34660,8 +34742,8 @@ class UITextButton extends UIBaseElement {
34660
34742
  * @param {number} [settings.size=1] - The scale factor of the BitmapText
34661
34743
  * @param {string} [settings.text] - The text to display
34662
34744
  * @param {string} [settings.bindKey] - The key to bind the action to (default: none)
34663
- * @param {string} [settings.backgroundColor="#00aa0080"] - The css value of a background color
34664
- * @param {string} [settings.hoverColor="#00ff00ff"] - The css value of a color to be used if the pointer hovers over the button
34745
+ * @param {string} [settings.hoverOffColor="#00aa0080"] - The css value of a color to be used if the pointer is not hovering over the button
34746
+ * @param {string} [settings.hoverOnColor="#00ff00ff"] - The css value of a color to be used if the pointer hovers over the button
34665
34747
  * @param {string} [settings.borderStrokeColor="#000000"] - The css value of a color to be used to draw the border
34666
34748
  * @param {string} [settings.fillStyle] - The css value of a tint color to be used to tint the BitmapText
34667
34749
  * @param {string} [settings.textAlign="center"] - horizontal text alignment
@@ -34678,6 +34760,8 @@ class UITextButton extends UIBaseElement {
34678
34760
  * // if you omit the next two, size is calculated by the size of the text
34679
34761
  * borderWidth: 200,
34680
34762
  * borderHeight: 20,
34763
+ * backgroundColor: '#00aa0080',
34764
+ * hoverColor: '#00ff00ff'
34681
34765
  * });
34682
34766
  * }
34683
34767
  *
@@ -34698,16 +34782,18 @@ class UITextButton extends UIBaseElement {
34698
34782
  this.bindKey = settings.bindKey || -1;
34699
34783
 
34700
34784
  /**
34701
- * The css value of a background color
34785
+ * The css value of a color to be used if the pointer is nothovering over the button
34702
34786
  * @type {string}
34703
34787
  */
34704
- this.backgroundColor = settings.backgroundColor || "#00aa0080";
34788
+ // keep settings.backgroundColor for backward compatibility
34789
+ this.hoverOffColor = settings.hoverOffColor || settings.backgroundColor || "#00aa0080";
34705
34790
 
34706
34791
  /**
34707
34792
  * The css value of a color to be used if the pointer hovers over the button
34708
34793
  * @type {string}
34709
34794
  */
34710
- this.hoverColor = settings.hoverColor || "#00ff00ff";
34795
+ // keep settings.hoverColor for backward compatibility
34796
+ this.hoverOnColor = settings.hoverOnColor || settings.hoverColor || "#00ff00ff";
34711
34797
 
34712
34798
  /**
34713
34799
  * The css value of a color to be used to draw the border
@@ -34762,16 +34848,13 @@ class UITextButton extends UIBaseElement {
34762
34848
 
34763
34849
  draw(renderer) {
34764
34850
  if (this.hover === true) {
34765
- renderer.setColor(this.hoverColor);
34851
+ renderer.setColor(this.hoverOnColor);
34766
34852
  } else {
34767
- renderer.setColor(this.backgroundColor);
34853
+ renderer.setColor(this.hoverOffColor);
34768
34854
  }
34769
34855
  renderer.fill(this.border);
34770
34856
  renderer.setColor(this.borderStrokeColor);
34771
34857
  renderer.stroke(this.border);
34772
- this.bitmapText.preDraw(renderer);
34773
- this.bitmapText.draw(renderer);
34774
- this.bitmapText.postDraw(renderer);
34775
34858
  super.draw(renderer);
34776
34859
  }
34777
34860
  }
@@ -38353,9 +38436,9 @@ class BasePlugin {
38353
38436
  * define the minimum required version of melonJS<br>
38354
38437
  * this can be overridden by the plugin
38355
38438
  * @type {string}
38356
- * @default "15.12.0"
38439
+ * @default "15.14.0"
38357
38440
  */
38358
- this.version = "15.12.0";
38441
+ this.version = "15.14.0";
38359
38442
 
38360
38443
  /**
38361
38444
  * a reference to the app/game that registered this plugin
@@ -38637,7 +38720,7 @@ Renderer.prototype.getHeight = function() {
38637
38720
  * @name version
38638
38721
  * @type {string}
38639
38722
  */
38640
- const version = "15.12.0";
38723
+ const version = "15.14.0";
38641
38724
 
38642
38725
  /**
38643
38726
  * a flag indicating that melonJS is fully initialized
@@ -98,6 +98,23 @@ export function setParser(type: string, parserFn: Function): void;
98
98
  * me.loader.preload(game.assets, () => this.loaded());
99
99
  */
100
100
  export function preload(assets: loader.Asset[], onloadcb?: Function | undefined, switchToLoadState?: boolean | undefined): void;
101
+ /**
102
+ * retry loading assets after a loading failure
103
+ * @memberof loader
104
+ * @param {string} src - src of asset to reload
105
+ * @example
106
+ * event.on(
107
+ * event.LOADER_ERROR,
108
+ * (res) => {
109
+ * // custom function
110
+ * showErrorNotification({
111
+ * text: `Error during loading content: ${res.name}`,
112
+ * done: loader.reload(res.src);
113
+ * })
114
+ * }
115
+ * );
116
+ **/
117
+ export function reload(src: string): void;
101
118
  /**
102
119
  * Load a single asset (to be used if you need to load additional asset(s) during the game)
103
120
  * @memberof loader
@@ -185,6 +202,17 @@ export let onload: Function;
185
202
  * me.loader.onProgress = this.updateProgress.bind(this);
186
203
  */
187
204
  export let onProgress: Function;
205
+ /**
206
+ * onError callback<br>
207
+ * each time a resource loading is failed, the loader will fire the specified function giving the actual asset as argument.
208
+ * @default undefined
209
+ * @memberof loader
210
+ * @type {function}
211
+ * @example
212
+ * // set a callback for error notification
213
+ * me.loader.onError = this.loaderError.bind(this);
214
+ */
215
+ export let onError: Function;
188
216
  export namespace loader {
189
217
  /**
190
218
  * an asset definition to be used with the loader
@@ -15,8 +15,8 @@ export default class UITextButton extends UIBaseElement {
15
15
  * @param {number} [settings.size=1] - The scale factor of the BitmapText
16
16
  * @param {string} [settings.text] - The text to display
17
17
  * @param {string} [settings.bindKey] - The key to bind the action to (default: none)
18
- * @param {string} [settings.backgroundColor="#00aa0080"] - The css value of a background color
19
- * @param {string} [settings.hoverColor="#00ff00ff"] - The css value of a color to be used if the pointer hovers over the button
18
+ * @param {string} [settings.hoverOffColor="#00aa0080"] - The css value of a color to be used if the pointer is not hovering over the button
19
+ * @param {string} [settings.hoverOnColor="#00ff00ff"] - The css value of a color to be used if the pointer hovers over the button
20
20
  * @param {string} [settings.borderStrokeColor="#000000"] - The css value of a color to be used to draw the border
21
21
  * @param {string} [settings.fillStyle] - The css value of a tint color to be used to tint the BitmapText
22
22
  * @param {string} [settings.textAlign="center"] - horizontal text alignment
@@ -33,6 +33,8 @@ export default class UITextButton extends UIBaseElement {
33
33
  * // if you omit the next two, size is calculated by the size of the text
34
34
  * borderWidth: 200,
35
35
  * borderHeight: 20,
36
+ * backgroundColor: '#00aa0080',
37
+ * hoverColor: '#00ff00ff'
36
38
  * });
37
39
  * }
38
40
  *
@@ -49,11 +51,16 @@ export default class UITextButton extends UIBaseElement {
49
51
  * @type {string}
50
52
  */
51
53
  bindKey: string;
54
+ /**
55
+ * The css value of a color to be used if the pointer is nothovering over the button
56
+ * @type {string}
57
+ */
58
+ hoverOffColor: string;
52
59
  /**
53
60
  * The css value of a color to be used if the pointer hovers over the button
54
61
  * @type {string}
55
62
  */
56
- hoverColor: string;
63
+ hoverOnColor: string;
57
64
  /**
58
65
  * The css value of a color to be used to draw the border
59
66
  * @type {string}
@@ -290,6 +290,17 @@ export const LOADER_COMPLETE: string;
290
290
  * @see event.on
291
291
  */
292
292
  export const LOADER_PROGRESS: string;
293
+ /**
294
+ * Event for when an error occur during preloading <br>
295
+ * Data passed : {Resource} resource object<br>
296
+ * @public
297
+ * @constant
298
+ * @type {string}
299
+ * @name LOADER_ERROR
300
+ * @memberof event
301
+ * @see event.on
302
+ */
303
+ export const LOADER_ERROR: string;
293
304
  /**
294
305
  * Event for pressing a binded key <br>
295
306
  * Data passed : {string} user-defined action, {number} keyCode,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "melonjs",
3
- "version": "15.12.0",
3
+ "version": "15.14.0",
4
4
  "description": "melonJS Game Engine",
5
5
  "homepage": "http://www.melonjs.org/",
6
6
  "type": "module",
@@ -53,7 +53,7 @@
53
53
  ],
54
54
  "dependencies": {
55
55
  "@teppeis/multimaps": "^3.0.0",
56
- "core-js": "^3.32.2",
56
+ "core-js": "^3.33.0",
57
57
  "earcut": "2.2.4",
58
58
  "eventemitter3": "^5.0.1",
59
59
  "howler": "2.2.4"
@@ -63,26 +63,26 @@
63
63
  "@babel/plugin-syntax-import-assertions": "^7.22.5",
64
64
  "@fastify/static": "^6.11.2",
65
65
  "@melonjs/webdoc-theme": "^1.1.1",
66
- "@rollup/plugin-commonjs": "^25.0.4",
67
- "@rollup/plugin-image": "^3.0.2",
68
- "@rollup/plugin-node-resolve": "^15.2.1",
69
- "@rollup/plugin-replace": "^5.0.2",
66
+ "@rollup/plugin-commonjs": "^25.0.7",
67
+ "@rollup/plugin-image": "^3.0.3",
68
+ "@rollup/plugin-node-resolve": "^15.2.3",
69
+ "@rollup/plugin-replace": "^5.0.4",
70
70
  "@webdoc/cli": "^2.2.0",
71
- "chromedriver": "^117.0.2",
71
+ "chromedriver": "^118.0.0",
72
72
  "cross-env": "^7.0.3",
73
73
  "del-cli": "^5.1.0",
74
- "eslint": "^8.50.0",
74
+ "eslint": "^8.51.0",
75
75
  "eslint-plugin-jsdoc": "^46.8.2",
76
76
  "expect": "^29.7.0",
77
77
  "expect-mocha-image-snapshot": "^3.0.15",
78
- "fastify": "^4.23.2",
78
+ "fastify": "^4.24.2",
79
79
  "mocha": "^10.2.0",
80
80
  "npm-self-link": "^1.1.7",
81
- "puppeteer": "^21.3.4",
82
- "rollup": "^3.29.2",
81
+ "puppeteer": "^21.3.8",
82
+ "rollup": "^4.1.3",
83
83
  "rollup-plugin-bundle-size": "^1.0.3",
84
84
  "rollup-plugin-string": "^3.0.0",
85
- "terser": "^5.20.0",
85
+ "terser": "^5.21.0",
86
86
  "typescript": "^5.2.2"
87
87
  },
88
88
  "scripts": {