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
@@ -32,11 +32,8 @@ export default class RoundRect extends Rect {
32
32
 
33
33
  /**
34
34
  * the radius of the rounded corner
35
- * @public
36
35
  * @type {number}
37
36
  * @default 20
38
- * @name radius
39
- * @memberof RoundRect
40
37
  */
41
38
  get radius() {
42
39
  return this._radius;
@@ -54,8 +51,6 @@ export default class RoundRect extends Rect {
54
51
 
55
52
  /**
56
53
  * copy the position, size and radius of the given rounded rectangle into this one
57
- * @name copy
58
- * @memberof RoundRect
59
54
  * @param {RoundRect} rrect - source rounded rectangle
60
55
  * @returns {RoundRect} new rectangle
61
56
  */
@@ -66,38 +61,38 @@ export default class RoundRect extends Rect {
66
61
  }
67
62
 
68
63
  /**
69
- * Returns true if the rounded rectangle contains the given point
70
- * @name contains
71
- * @memberof RoundRect
72
- * @method
73
- * @param {number} x - x coordinate
74
- * @param {number} y - y coordinate
75
- * @returns {boolean} true if contains
76
- */
77
-
78
- /**
79
- * Returns true if the rounded rectangle contains the given point
80
- * @name contains
81
- * @memberof RoundRect
82
- * @param {Vector2d} point
83
- * @returns {boolean} true if contains
64
+ * Returns true if the rounded rectangle contains the given point or rectangle
65
+ * @param {number|Vector2d|Rect} x - x coordinate or a vector point, or a Rect to test
66
+ * @param {number} [y] - y coordinate
67
+ * @returns {boolean} True if the rounded rectangle contain the given point or rectangle, otherwise false
68
+ * @example
69
+ * if (rect.contains(10, 10)) {
70
+ * // do something
71
+ * }
72
+ * // or
73
+ * if (rect.contains(myVector2d)) {
74
+ * // do something
75
+ * }
76
+ * if (rect.contains(myRect)) {
77
+ * // do something
78
+ * }
84
79
  */
85
80
  contains() {
86
81
  let arg0 = arguments[0];
87
82
  let _x, _y;
88
83
  if (arguments.length === 2) {
89
- // x, y
90
- _x = arg0;
91
- _y = arguments[1];
92
- } else {
93
- if (arg0 instanceof Rect) {
94
- // good enough
95
- return super.contains(arg0);
96
- } else {
97
- // vector
84
+ // x, y
85
+ _x = arg0;
86
+ _y = arguments[1];
87
+ } else {
88
+ if ((typeof arg0.radius === "undefined") && (typeof arg0.bottom === "number")) {
89
+ // it's a rect
90
+ return super.contains(arg0);
91
+ } else {
92
+ // else a vector or point
98
93
  _x = arg0.x;
99
94
  _y = arg0.y;
100
- }
95
+ }
101
96
  }
102
97
 
103
98
  // check whether point is outside the bounding box
@@ -137,8 +132,6 @@ export default class RoundRect extends Rect {
137
132
 
138
133
  /**
139
134
  * check if this RoundRect is identical to the specified one
140
- * @name equals
141
- * @memberof RoundRect
142
135
  * @param {RoundRect} rrect
143
136
  * @returns {boolean} true if equals
144
137
  */
@@ -148,8 +141,6 @@ export default class RoundRect extends Rect {
148
141
 
149
142
  /**
150
143
  * clone this RoundRect
151
- * @name clone
152
- * @memberof RoundRect
153
144
  * @returns {RoundRect} new RoundRect
154
145
  */
155
146
  clone() {
package/src/index.js CHANGED
@@ -39,9 +39,9 @@ import UISpriteElement from "./renderable/ui/uispriteelement.js";
39
39
  import Collectable from "./renderable/collectable.js";
40
40
  import Trigger from "./renderable/trigger.js";
41
41
  import Light2d from "./renderable/light2d.js";
42
- import Text from "./text/text.js";
43
- import BitmapText from "./text/bitmaptext.js";
44
- import BitmapTextData from "./text/bitmaptextdata.js";
42
+ import Text from "./renderable/text/text.js";
43
+ import BitmapText from "./renderable/text/bitmaptext.js";
44
+ import BitmapTextData from "./renderable/text/bitmaptextdata.js";
45
45
  import { Draggable } from "./renderable/draggable.js";
46
46
  import { DropTarget } from "./renderable/dragndrop.js";
47
47
  import TMXRenderer from "./level/tiled/renderer/TMXRenderer.js";
@@ -310,6 +310,6 @@ export function boot() {
310
310
  // call the library init function when ready
311
311
  device.onReady(() => {
312
312
  if (skipAutoInit === false) {
313
- boot();
313
+ boot();
314
314
  }
315
315
  });
@@ -95,14 +95,14 @@ let keyUpEvent = function (e, keyCode, mouseButton) {
95
95
  * PUBLIC STUFF
96
96
  */
97
97
 
98
- /**
98
+ /**
99
99
  * the default target element for keyboard events (usually the window element in which the game is running)
100
100
  * @public
101
101
  * @type {EventTarget}
102
102
  * @name keyBoardEventTarget
103
103
  * @memberof input
104
104
  */
105
- export let keyBoardEventTarget = null;
105
+ export let keyBoardEventTarget = null;
106
106
 
107
107
  /**
108
108
  * standard keyboard constants
@@ -130,7 +130,7 @@ class Pointer extends Bounds {
130
130
  */
131
131
  this.clientX = 0;
132
132
 
133
- /**
133
+ /**
134
134
  * the vertical coordinate within the application's client area at which the event occurred
135
135
  * @public
136
136
  * @type {number}
@@ -150,7 +150,7 @@ class Pointer extends Bounds {
150
150
  */
151
151
  this.movementX = 0;
152
152
 
153
- /**
153
+ /**
154
154
  * the difference in the Y coordinate of the pointer since the previous move event
155
155
  * @public
156
156
  * @type {number}
@@ -274,7 +274,7 @@ class Pointer extends Bounds {
274
274
  */
275
275
  this.gameLocalY = 0;
276
276
 
277
- /**
277
+ /**
278
278
  * The unique identifier of the contact for a touch, mouse or pen
279
279
  * @public
280
280
  * @type {number}
@@ -158,10 +158,9 @@ function enablePointerEvent() {
158
158
  }
159
159
 
160
160
  // if time interval <= 16, disable the feature
161
- let i;
162
161
  let events = findAllActiveEvents(activeEventList, POINTER_MOVE);
163
162
  if (throttlingInterval < 17) {
164
- for (i = 0; i < events.length; i++) {
163
+ for (let i = 0; i < events.length; i++) {
165
164
  if (activeEventList.indexOf(events[i]) !== -1) {
166
165
  pointerEventTarget.addEventListener(
167
166
  events[i],
@@ -173,7 +172,7 @@ function enablePointerEvent() {
173
172
  }
174
173
  }
175
174
  else {
176
- for (i = 0; i < events.length; i++) {
175
+ for (let i = 0; i < events.length; i++) {
177
176
  if (activeEventList.indexOf(events[i]) !== -1) {
178
177
  pointerEventTarget.addEventListener(
179
178
  events[i],
@@ -483,14 +482,14 @@ function onPointerEvent(e) {
483
482
  * PUBLIC STUFF
484
483
  */
485
484
 
486
- /**
485
+ /**
487
486
  * the default target element for pointer events (usually the canvas element in which the game is rendered)
488
487
  * @public
489
488
  * @type {EventTarget}
490
489
  * @name pointerEventTarget
491
490
  * @memberof input
492
491
  */
493
- export let pointerEventTarget = null;
492
+ export let pointerEventTarget = null;
494
493
 
495
494
  /**
496
495
  * Pointer information (current position and size)
@@ -613,7 +612,7 @@ export function unbindPointer(button) {
613
612
  // clear the event status
614
613
  pointer.bind[
615
614
  typeof(button) === "undefined" ?
616
- pointer.LEFT : button
615
+ pointer.LEFT : button
617
616
  ] = null;
618
617
  }
619
618
 
@@ -100,7 +100,7 @@ Renderer.prototype.getScreenContext = function() {
100
100
  * @deprecated since 14.0.0
101
101
  * @see UISpriteElement
102
102
  */
103
- export class GUI_Object extends UISpriteElement {
103
+ export class GUI_Object extends UISpriteElement {
104
104
  /**
105
105
  * @param {number} x - the x coordinate of the GUI Object
106
106
  * @param {number} y - the y coordinate of the GUI Object
@@ -4,7 +4,6 @@ import * as TMXUtils from "./TMXUtils.js";
4
4
  import Tile from "./TMXTile.js";
5
5
  import Renderable from "./../../renderable/renderable.js";
6
6
  import CanvasRenderer from "./../../video/canvas/canvas_renderer";
7
- import { game } from "../../index.js";
8
7
 
9
8
  /**
10
9
  * Create required arrays for the given layer object
@@ -52,32 +51,13 @@ function setLayerData(layer, bounds, data) {
52
51
  }
53
52
  }
54
53
 
55
- /**
56
- * preRender a tile layer using the given renderer
57
- * @ignore
58
- */
59
- function preRenderLayer(layer, renderer) {
60
- // set everything
61
- for (let y = 0; y < layer.rows; y++) {
62
- for (let x = 0; x < layer.cols; x++) {
63
- // get the value of the gid
64
- const tile = layer.layerData[x][y];
65
- // draw the tile if defined
66
- if (tile instanceof Tile) {
67
- // add a new tile to the layer
68
- layer.getRenderer().drawTile(renderer, x, y, tile);
69
- }
70
- }
71
- }
72
- }
73
-
74
54
  /**
75
55
  * @classdesc
76
56
  * a TMX Tile Layer Object
77
57
  * Tiled QT 0.7.x format
78
58
  * @augments Renderable
79
59
  */
80
- export default class TMXLayer extends Renderable {
60
+ export default class TMXLayer extends Renderable {
81
61
  /**
82
62
  * @param {object} map - layer data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#layer})
83
63
  * @param {object} data - layer data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#layer})
@@ -192,11 +172,6 @@ function preRenderLayer(layer, renderer) {
192
172
  // check if we have any user-defined properties
193
173
  TMXUtils.applyTMXProperties(this, data);
194
174
 
195
- // check for the correct rendering method
196
- if (typeof (this.preRender) === "undefined") {
197
- this.preRender = game.world.preRender;
198
- }
199
-
200
175
  // set a renderer
201
176
  this.setRenderer(map.getRenderer());
202
177
 
@@ -251,8 +226,11 @@ function preRenderLayer(layer, renderer) {
251
226
 
252
227
  this.isAnimated = this.animatedTilesets.length > 0;
253
228
 
254
- // Force pre-render off when tileset animation is used
255
- if (this.isAnimated) {
229
+ // check for the correct rendering method
230
+ if (typeof this.preRender === "undefined" && this.isAnimated === false) {
231
+ this.preRender = this.ancestor.getRootAncestor().preRender;
232
+ } else {
233
+ // Force pre-render off when tileset animation is used
256
234
  this.preRender = false;
257
235
  }
258
236
 
@@ -264,8 +242,11 @@ function preRenderLayer(layer, renderer) {
264
242
  heigth : this.height,
265
243
  transparent : true
266
244
  });
267
- preRenderLayer(this, this.canvasRenderer);
245
+ // pre render the layer on the canvas
246
+ this.getRenderer().drawTileLayer(this.canvasRenderer, this, this);
268
247
  }
248
+
249
+ this.isDirty = true;
269
250
  }
270
251
 
271
252
  // called when the layer is removed from the game world or a container
@@ -285,6 +266,7 @@ function preRenderLayer(layer, renderer) {
285
266
  */
286
267
  setRenderer(renderer) {
287
268
  this.renderer = renderer;
269
+ this.isDirty = true;
288
270
  }
289
271
 
290
272
  /**
@@ -337,6 +319,7 @@ function preRenderLayer(layer, renderer) {
337
319
  */
338
320
  setTile(tile, x, y) {
339
321
  this.layerData[x][y] = tile;
322
+ this.isDirty = true;
340
323
  return tile;
341
324
  }
342
325
 
@@ -395,6 +378,7 @@ function preRenderLayer(layer, renderer) {
395
378
  if (this.preRender) {
396
379
  this.canvasRenderer.clearRect(x * this.tilewidth, y * this.tileheight, this.tilewidth, this.tileheight);
397
380
  }
381
+ this.isDirty = true;
398
382
  }
399
383
 
400
384
  /**
@@ -402,14 +386,13 @@ function preRenderLayer(layer, renderer) {
402
386
  * @ignore
403
387
  */
404
388
  update(dt) {
389
+ let result = this.isDirty;
405
390
  if (this.isAnimated) {
406
- let result = false;
407
391
  for (let i = 0; i < this.animatedTilesets.length; i++) {
408
392
  result = this.animatedTilesets[i].update(dt) || result;
409
393
  }
410
- return result;
411
394
  }
412
- return false;
395
+ return result;
413
396
  }
414
397
 
415
398
  /**
@@ -209,7 +209,6 @@ export default class TMXObject {
209
209
  * @returns {Polygon[]|Line[]|Ellipse[]} an array of shape objects
210
210
  */
211
211
  parseTMXShapes() {
212
- let i = 0;
213
212
  let shapes = [];
214
213
 
215
214
  // add an ellipse shape
@@ -237,7 +236,7 @@ export default class TMXObject {
237
236
  let p = this.points;
238
237
  let p1, p2;
239
238
  let segments = p.length - 1;
240
- for (i = 0; i < segments; i++) {
239
+ for (let i = 0; i < segments; i++) {
241
240
  // clone the value before, as [i + 1]
242
241
  // is reused later by the next segment
243
242
  p1 = pool.pull("Vector2d", p[i].x, p[i].y);
@@ -264,7 +263,7 @@ export default class TMXObject {
264
263
 
265
264
  // Apply isometric projection
266
265
  if (this.orientation === "isometric") {
267
- for (i = 0; i < shapes.length; i++) {
266
+ for (let i = 0; i < shapes.length; i++) {
268
267
  if (typeof shapes[i].toIso === "function") {
269
268
  shapes[i].toIso();
270
269
  }
@@ -8,7 +8,7 @@ import { TMX_FLIP_V, TMX_FLIP_H, TMX_FLIP_AD, TMX_CLEAR_BIT_MASK } from "./const
8
8
  * a basic tile object
9
9
  * @augments Bounds
10
10
  */
11
- export default class Tile extends Bounds {
11
+ export default class Tile extends Bounds {
12
12
  /**
13
13
  * @param {number} x - x index of the Tile in the map
14
14
  * @param {number} y - y index of the Tile in the map
@@ -108,8 +108,8 @@ import { TMX_FLIP_V, TMX_FLIP_H, TMX_FLIP_AD, TMX_CLEAR_BIT_MASK } from "./const
108
108
  }
109
109
  if (this.flippedY) {
110
110
  transform.scale(
111
- this.flippedAD ? -1 : 1, this.flippedAD ? 1 : -1
112
- );
111
+ this.flippedAD ? -1 : 1, this.flippedAD ? 1 : -1
112
+ );
113
113
  }
114
114
  transform.translate(-this.width / 2, -this.height / 2);
115
115
  }
@@ -74,7 +74,7 @@ function readObjectGroup(map, data, z) {
74
74
  * a TMX Tile Map Object
75
75
  * Tiled QT +0.7.x format
76
76
  */
77
- export default class TMXTileMap {
77
+ export default class TMXTileMap {
78
78
  /**
79
79
  * @param {string} levelId - name of TMX map
80
80
  * @param {object} data - TMX map in JSON format
@@ -269,7 +269,7 @@ function readObjectGroup(map, data, z) {
269
269
  image : this.background_image,
270
270
  z : zOrder++
271
271
  }
272
- ));
272
+ ));
273
273
  }
274
274
 
275
275
  data.layers.forEach((layer) => {
@@ -8,14 +8,11 @@ import { getTMX, getImage } from "./../../loader/loader.js";
8
8
  * @classdesc
9
9
  * a TMX Tile Set Object
10
10
  */
11
- export default class TMXTileset {
11
+ export default class TMXTileset {
12
12
  /**
13
13
  * @param {object} tileset - tileset data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#tileset})
14
14
  */
15
15
  constructor(tileset) {
16
- let i = 0;
17
- // first gid
18
-
19
16
  // tile properties (collidable, etc..)
20
17
  this.TileProperties = [];
21
18
 
@@ -77,7 +74,7 @@ import { getTMX, getImage } from "./../../loader/loader.js";
77
74
  this._lastUpdate = 0;
78
75
 
79
76
  let tiles = tileset.tiles;
80
- for (i in tiles) {
77
+ for (let i in tiles) {
81
78
  if (tiles.hasOwnProperty(i)) {
82
79
  if ("animation" in tiles[i]) {
83
80
  this.isAnimated = true;
@@ -121,7 +118,7 @@ import { getTMX, getImage } from "./../../loader/loader.js";
121
118
  // set tile properties, if any (JSON old format)
122
119
  let tileInfo = tileset.tileproperties;
123
120
  if (tileInfo) {
124
- for (i in tileInfo) {
121
+ for (let i in tileInfo) {
125
122
  if (tileInfo.hasOwnProperty(i)) {
126
123
  this.setTileProperty(+i + this.firstgid, tileInfo[i]);
127
124
  }
@@ -4,7 +4,7 @@ import { TMX_CLEAR_BIT_MASK } from "./constants";
4
4
  * @classdesc
5
5
  * an object containing all tileset
6
6
  */
7
- export default class TMXTilesetGroup {
7
+ export default class TMXTilesetGroup {
8
8
 
9
9
  constructor() {
10
10
  this.tilesets = [];
@@ -1,11 +1,5 @@
1
1
  import { isBoolean, isNumeric } from "../../utils/string.js";
2
2
 
3
- /**
4
- * a collection of utility functions for parsing TMX maps
5
- * @namespace TMXUtils
6
- */
7
-
8
-
9
3
  /**
10
4
  * the function used to decompress zlib/gzip data
11
5
  * @ignore
@@ -115,8 +109,8 @@ function normalize(obj, item) {
115
109
  let nodeName = item.nodeName;
116
110
 
117
111
  switch (nodeName) {
118
- case "data":
119
- var data = parse(item); // <= "Unexpected lexical declaration in case block" if using let
112
+ case "data": {
113
+ let data = parse(item);
120
114
 
121
115
  data.encoding = data.encoding || "xml";
122
116
 
@@ -144,7 +138,7 @@ function normalize(obj, item) {
144
138
  obj.encoding = "none";
145
139
  }
146
140
  break;
147
-
141
+ }
148
142
  case "chunk":
149
143
  obj.chunks = obj.chunks || [];
150
144
  obj.chunks.push(parse(item));
@@ -153,8 +147,8 @@ function normalize(obj, item) {
153
147
  case "imagelayer":
154
148
  case "layer":
155
149
  case "objectgroup":
156
- case "group":
157
- var layer = parse(item); // // <= "Unexpected lexical declaration in case block" if using let
150
+ case "group": {
151
+ let layer = parse(item);
158
152
  layer.type = (nodeName === "layer" ? "tilelayer" : nodeName);
159
153
  if (layer.image) {
160
154
  layer.image = layer.image.source;
@@ -163,20 +157,20 @@ function normalize(obj, item) {
163
157
  obj.layers = obj.layers || [];
164
158
  obj.layers.push(layer);
165
159
  break;
166
-
160
+ }
167
161
  case "animation":
168
162
  obj.animation = parse(item).frames;
169
163
  break;
170
164
 
171
165
  case "frame":
172
- case "object":
173
- var name = nodeName + "s"; // <= "Unexpected lexical declaration in case block" if using let
166
+ case "object": {
167
+ const name = nodeName + "s";
174
168
  obj[name] = obj[name] || [];
175
169
  obj[name].push(parse(item));
176
170
  break;
177
-
178
- case "tile":
179
- var tile = parse(item); // <= "Unexpected lexical declaration in case block" if using let
171
+ }
172
+ case "tile": {
173
+ let tile = parse(item);
180
174
  if (tile.image) {
181
175
  tile.imagewidth = tile.image.width;
182
176
  tile.imageheight = tile.image.height;
@@ -185,9 +179,9 @@ function normalize(obj, item) {
185
179
  obj.tiles = obj.tiles || {};
186
180
  obj.tiles[tile.id] = tile;
187
181
  break;
188
-
189
- case "tileset":
190
- var tileset = parse(item); // <= "Unexpected lexical declaration in case block" if using let
182
+ }
183
+ case "tileset": {
184
+ let tileset = parse(item);
191
185
  if (tileset.image) {
192
186
  tileset.imagewidth = tileset.image.width;
193
187
  tileset.imageheight = tileset.image.height;
@@ -197,13 +191,13 @@ function normalize(obj, item) {
197
191
  obj.tilesets = obj.tilesets || [];
198
192
  obj.tilesets.push(tileset);
199
193
  break;
200
-
194
+ }
201
195
  case "polygon":
202
- case "polyline":
196
+ case "polyline": {
203
197
  obj[nodeName] = [];
204
198
 
205
199
  // Get a point array
206
- var points = parse(item).points.split(" "); // <= "Unexpected lexical declaration in case block" if using let
200
+ let points = parse(item).points.split(" ");
207
201
 
208
202
  // And normalize them into an array of vectors
209
203
  for (let i = 0; i < points.length; i++) {
@@ -215,15 +209,15 @@ function normalize(obj, item) {
215
209
  }
216
210
 
217
211
  break;
218
-
212
+ }
219
213
  case "properties":
220
214
  obj.properties = parse(item);
221
215
  break;
222
216
 
223
- case "property":
224
- var property = parse(item); // <= "Unexpected lexical declaration in case block" if using let
217
+ case "property": {
218
+ const property = parse(item);
225
219
  // for custom properties, text is used
226
- var value = (typeof property.value !== "undefined") ? property.value : property.text;
220
+ const value = (typeof property.value !== "undefined") ? property.value : property.text;
227
221
 
228
222
  obj[property.name] = setTMXValue(
229
223
  property.name,
@@ -232,18 +226,21 @@ function normalize(obj, item) {
232
226
  value
233
227
  );
234
228
  break;
235
-
229
+ }
236
230
  default:
237
231
  obj[nodeName] = parse(item);
238
232
  break;
239
233
  }
240
234
  }
241
235
 
236
+ /**
237
+ * a collection of utility functions for parsing TMX maps
238
+ * @namespace TMXUtils
239
+ */
242
240
 
243
241
  /**
244
242
  * decompress and decode zlib/gzip data
245
- * @name decompress
246
- * @memberOf TMXUtils
243
+ * @memberof TMXUtils
247
244
  * @param {string} input - Base64 encoded and compressed data
248
245
  * @param {string} format - compressed data format ("gzip","zlib", "zstd")
249
246
  * @returns {Uint32Array} Decoded and decompress data
@@ -258,8 +255,7 @@ function decompress(data, format) {
258
255
 
259
256
  /**
260
257
  * Decode a CSV encoded array into a binary array
261
- * @name decodeCSV
262
- * @memberOf TMXUtils
258
+ * @memberof TMXUtils
263
259
  * @param {string} input- - CSV formatted data (only numbers, everything else will be converted to NaN)
264
260
  * @returns {number[]} Decoded data
265
261
  */
@@ -275,22 +271,18 @@ function decodeCSV(input) {
275
271
 
276
272
  /**
277
273
  * Decode a base64 encoded string into a byte array
278
- * @name decodeBase64AsArray
279
- * @memberOf TMXUtils
274
+ * @memberof TMXUtils
280
275
  * @param {string} input - Base64 encoded data
281
276
  * @param {number} [bytes] - number of bytes per array entry
282
277
  * @returns {Uint32Array} Decoded data
283
278
  */
284
- function decodeBase64AsArray(input, bytes) {
285
- bytes = bytes || 1;
286
-
287
- let i, j, len;
279
+ function decodeBase64AsArray(input, bytes = 1) {
288
280
  let dec = globalThis.atob(input.replace(/[^A-Za-z0-9\+\/\=]/g, ""));
289
281
  let ar = new Uint32Array(dec.length / bytes);
290
282
 
291
- for (i = 0, len = dec.length / bytes; i < len; i++) {
283
+ for (let i = 0, len = dec.length / bytes; i < len; i++) {
292
284
  ar[i] = 0;
293
- for (j = bytes - 1; j >= 0; --j) {
285
+ for (let j = bytes - 1; j >= 0; --j) {
294
286
  ar[i] += dec.charCodeAt((i * bytes) + j) << (j << 3);
295
287
  }
296
288
  }
@@ -299,6 +291,7 @@ function decodeBase64AsArray(input, bytes) {
299
291
 
300
292
  /**
301
293
  * set the function used to inflate gzip/zlib data
294
+ * @memberof TMXUtils
302
295
  * @param {Func} fn - inflate function
303
296
  */
304
297
  export function setInflateFunction(fn) {
@@ -307,8 +300,7 @@ export function setInflateFunction(fn) {
307
300
 
308
301
  /**
309
302
  * Decode a encoded array into a binary array
310
- * @name decodeCSV
311
- * @memberOf TMXUtils
303
+ * @memberof TMXUtils
312
304
  * @param {string} data - data to be decoded
313
305
  * @param {string} [encoding="none"] - data encoding ("csv", "base64", "xml")
314
306
  * @returns {number[]} Decoded data
@@ -342,8 +334,7 @@ export function decode(data, encoding, compression) {
342
334
 
343
335
  /**
344
336
  * Parse a XML TMX object and returns the corresponding javascript object
345
- * @name parse
346
- * @memberOf TMXUtils
337
+ * @memberof TMXUtils
347
338
  * @param {Document} xml - XML TMX object
348
339
  * @returns {object} Javascript object
349
340
  */
@@ -383,8 +374,7 @@ export function parse(xml) {
383
374
 
384
375
  /**
385
376
  * Apply TMX Properties to the given object
386
- * @name applyTMXProperties
387
- * @memberOf TMXUtils
377
+ * @memberof TMXUtils
388
378
  * @param {object} obj - object to apply the properties to
389
379
  * @param {object} data - TMX data object
390
380
  * @returns {object} obj