melonjs 15.3.0 → 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 (287) hide show
  1. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  2. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/index.js +1 -1
  5. package/dist/melonjs.mjs/application/application.js +53 -5
  6. package/dist/melonjs.mjs/application/header.js +2 -2
  7. package/dist/melonjs.mjs/application/resize.js +4 -8
  8. package/dist/melonjs.mjs/application/settings.js +5 -5
  9. package/dist/melonjs.mjs/audio/audio.js +4 -6
  10. package/dist/melonjs.mjs/camera/camera2d.js +12 -14
  11. package/dist/melonjs.mjs/const.js +1 -1
  12. package/dist/melonjs.mjs/entity/entity.js +3 -4
  13. package/dist/melonjs.mjs/geometries/ellipse.js +26 -59
  14. package/dist/melonjs.mjs/geometries/line.js +18 -25
  15. package/dist/melonjs.mjs/geometries/path2d.js +16 -13
  16. package/dist/melonjs.mjs/geometries/point.js +8 -16
  17. package/dist/melonjs.mjs/geometries/poly.js +40 -97
  18. package/dist/melonjs.mjs/geometries/rectangle.js +37 -91
  19. package/dist/melonjs.mjs/geometries/roundrect.js +26 -35
  20. package/dist/melonjs.mjs/index.js +6 -6
  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 +3 -3
  24. package/dist/melonjs.mjs/input/pointer.js +4 -4
  25. package/dist/melonjs.mjs/input/pointerevent.js +6 -7
  26. package/dist/melonjs.mjs/lang/console.js +1 -1
  27. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  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 +16 -33
  31. package/dist/melonjs.mjs/level/tiled/TMXObject.js +3 -4
  32. package/dist/melonjs.mjs/level/tiled/TMXTile.js +4 -4
  33. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
  34. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +4 -7
  35. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +2 -2
  36. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +26 -29
  37. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  38. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +3 -3
  39. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
  40. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -2
  41. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  42. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +2 -2
  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 +1 -1
  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/parser.js +4 -5
  49. package/dist/melonjs.mjs/loader/settings.js +1 -1
  50. package/dist/melonjs.mjs/math/color.js +2 -2
  51. package/dist/melonjs.mjs/math/math.js +1 -1
  52. package/dist/melonjs.mjs/math/matrix2.js +5 -59
  53. package/dist/melonjs.mjs/math/matrix3.js +82 -141
  54. package/dist/melonjs.mjs/math/observable_vector2.js +7 -7
  55. package/dist/melonjs.mjs/math/observable_vector3.js +5 -5
  56. package/dist/melonjs.mjs/math/vector2.js +7 -91
  57. package/dist/melonjs.mjs/math/vector3.js +6 -90
  58. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
  59. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
  60. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  61. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
  62. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  63. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  64. package/dist/melonjs.mjs/particles/emitter.js +2 -2
  65. package/dist/melonjs.mjs/particles/particle.js +2 -2
  66. package/dist/melonjs.mjs/particles/settings.js +1 -1
  67. package/dist/melonjs.mjs/physics/body.js +22 -20
  68. package/dist/melonjs.mjs/physics/bounds.js +27 -33
  69. package/dist/melonjs.mjs/physics/collision.js +5 -5
  70. package/dist/melonjs.mjs/physics/detector.js +10 -10
  71. package/dist/melonjs.mjs/physics/quadtree.js +5 -5
  72. package/dist/melonjs.mjs/physics/response.js +1 -1
  73. package/dist/melonjs.mjs/physics/sat.js +3 -4
  74. package/dist/melonjs.mjs/physics/world.js +6 -9
  75. package/dist/melonjs.mjs/plugin/plugin.js +3 -3
  76. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  77. package/dist/melonjs.mjs/renderable/colorlayer.js +4 -4
  78. package/dist/melonjs.mjs/renderable/container.js +25 -25
  79. package/dist/melonjs.mjs/renderable/draggable.js +1 -1
  80. package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
  81. package/dist/melonjs.mjs/renderable/imagelayer.js +4 -4
  82. package/dist/melonjs.mjs/renderable/light2d.js +3 -3
  83. package/dist/melonjs.mjs/renderable/nineslicesprite.js +2 -2
  84. package/dist/melonjs.mjs/renderable/renderable.js +26 -26
  85. package/dist/melonjs.mjs/renderable/sprite.js +3 -3
  86. package/dist/melonjs.mjs/renderable/text/bitmaptext.js +421 -0
  87. package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +195 -0
  88. package/dist/melonjs.mjs/renderable/text/glyph.js +65 -0
  89. package/dist/melonjs.mjs/renderable/text/text.js +422 -0
  90. package/dist/melonjs.mjs/renderable/text/textmetrics.js +175 -0
  91. package/dist/melonjs.mjs/renderable/text/textstyle.js +21 -0
  92. package/dist/melonjs.mjs/renderable/trigger.js +10 -10
  93. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +7 -7
  94. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +7 -7
  95. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +3 -3
  96. package/dist/melonjs.mjs/state/stage.js +2 -2
  97. package/dist/melonjs.mjs/state/state.js +1 -38
  98. package/dist/melonjs.mjs/system/device.js +49 -10
  99. package/dist/melonjs.mjs/system/dom.js +1 -1
  100. package/dist/melonjs.mjs/system/event.js +24 -2
  101. package/dist/melonjs.mjs/system/platform.js +18 -18
  102. package/dist/melonjs.mjs/system/pooling.js +10 -10
  103. package/dist/melonjs.mjs/system/save.js +1 -1
  104. package/dist/melonjs.mjs/system/timer.js +1 -1
  105. package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
  106. package/dist/melonjs.mjs/text/bitmaptextdata.js +3 -6
  107. package/dist/melonjs.mjs/text/glyph.js +1 -1
  108. package/dist/melonjs.mjs/text/text.js +1 -1
  109. package/dist/melonjs.mjs/text/textmetrics.js +1 -1
  110. package/dist/melonjs.mjs/text/textstyle.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 +2 -2
  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 +2 -3
  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 +3 -7
  121. package/dist/melonjs.mjs/video/renderer.js +16 -16
  122. package/dist/melonjs.mjs/video/texture/atlas.js +13 -13
  123. package/dist/melonjs.mjs/video/texture/cache.js +1 -1
  124. package/dist/melonjs.mjs/video/texture/canvas_texture.js +15 -15
  125. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  126. package/dist/melonjs.mjs/video/video.js +4 -4
  127. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +3 -3
  128. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +13 -14
  129. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
  130. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +2 -3
  131. package/dist/melonjs.mjs/video/webgl/glshader.js +2 -2
  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 +4 -4
  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 +50 -52
  142. package/dist/melonjs.module.js +1137 -1576
  143. package/dist/types/application/application.d.ts +28 -4
  144. package/dist/types/application/header.d.ts +2 -2
  145. package/dist/types/application/settings.d.ts +23 -23
  146. package/dist/types/audio/audio.d.ts +4 -6
  147. package/dist/types/camera/camera2d.d.ts +13 -16
  148. package/dist/types/entity/entity.d.ts +0 -1
  149. package/dist/types/geometries/ellipse.d.ts +18 -50
  150. package/dist/types/geometries/path2d.d.ts +1 -1
  151. package/dist/types/geometries/point.d.ts +5 -13
  152. package/dist/types/geometries/poly.d.ts +26 -75
  153. package/dist/types/geometries/rectangle.d.ts +12 -58
  154. package/dist/types/geometries/roundrect.d.ts +2 -11
  155. package/dist/types/index.d.ts +3 -3
  156. package/dist/types/input/gamepad.d.ts +31 -31
  157. package/dist/types/input/keyboard.d.ts +105 -105
  158. package/dist/types/input/pointer.d.ts +21 -21
  159. package/dist/types/input/pointerevent.d.ts +6 -6
  160. package/dist/types/level/tiled/TMXLayer.d.ts +1 -1
  161. package/dist/types/math/matrix2.d.ts +9 -63
  162. package/dist/types/math/matrix3.d.ts +9 -68
  163. package/dist/types/math/observable_vector2.d.ts +2 -2
  164. package/dist/types/math/observable_vector3.d.ts +2 -2
  165. package/dist/types/math/vector2.d.ts +8 -92
  166. package/dist/types/math/vector3.d.ts +8 -92
  167. package/dist/types/particles/settings.d.ts +29 -29
  168. package/dist/types/physics/body.d.ts +10 -8
  169. package/dist/types/physics/bounds.d.ts +24 -30
  170. package/dist/types/physics/collision.d.ts +12 -12
  171. package/dist/types/physics/detector.d.ts +1 -1
  172. package/dist/types/physics/world.d.ts +4 -7
  173. package/dist/types/renderable/container.d.ts +19 -19
  174. package/dist/types/renderable/imagelayer.d.ts +6 -6
  175. package/dist/types/renderable/light2d.d.ts +7 -7
  176. package/dist/types/renderable/renderable.d.ts +9 -16
  177. package/dist/types/renderable/text/bitmaptext.d.ts +151 -0
  178. package/dist/types/renderable/text/bitmaptextdata.d.ts +35 -0
  179. package/dist/types/renderable/text/glyph.d.ts +28 -0
  180. package/dist/types/renderable/text/text.d.ts +159 -0
  181. package/dist/types/renderable/text/textmetrics.d.ts +47 -0
  182. package/dist/types/renderable/text/textstyle.d.ts +5 -0
  183. package/dist/types/renderable/ui/uibaseelement.d.ts +0 -1
  184. package/dist/types/renderable/ui/uispriteelement.d.ts +0 -1
  185. package/dist/types/renderable/ui/uitextbutton.d.ts +2 -7
  186. package/dist/types/state/state.d.ts +11 -11
  187. package/dist/types/system/device.d.ts +15 -9
  188. package/dist/types/system/event.d.ts +20 -0
  189. package/dist/types/system/platform.d.ts +17 -17
  190. package/dist/types/utils/function.d.ts +1 -2
  191. package/dist/types/video/renderer.d.ts +13 -13
  192. package/dist/types/video/texture/canvas_texture.d.ts +14 -14
  193. package/dist/types/video/video.d.ts +2 -2
  194. package/dist/types/video/webgl/buffer/vertex.d.ts +2 -2
  195. package/dist/types/video/webgl/compositors/compositor.d.ts +24 -13
  196. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +0 -1
  197. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +0 -1
  198. package/dist/types/video/webgl/utils/precision.d.ts +1 -1
  199. package/dist/types/video/webgl/webgl_renderer.d.ts +47 -50
  200. package/package.json +15 -15
  201. package/src/application/application.js +51 -3
  202. package/src/application/header.js +1 -1
  203. package/src/application/resize.js +3 -7
  204. package/src/application/settings.js +4 -4
  205. package/src/audio/audio.js +3 -5
  206. package/src/camera/camera2d.js +11 -13
  207. package/src/entity/entity.js +2 -3
  208. package/src/geometries/ellipse.js +25 -58
  209. package/src/geometries/line.js +17 -24
  210. package/src/geometries/path2d.js +15 -12
  211. package/src/geometries/point.js +7 -15
  212. package/src/geometries/poly.js +39 -96
  213. package/src/geometries/rectangle.js +36 -90
  214. package/src/geometries/roundrect.js +25 -34
  215. package/src/index.js +4 -4
  216. package/src/input/keyboard.js +2 -2
  217. package/src/input/pointer.js +3 -3
  218. package/src/input/pointerevent.js +5 -6
  219. package/src/lang/deprecated.js +1 -1
  220. package/src/level/tiled/TMXLayer.js +15 -32
  221. package/src/level/tiled/TMXObject.js +2 -3
  222. package/src/level/tiled/TMXTile.js +3 -3
  223. package/src/level/tiled/TMXTileMap.js +2 -2
  224. package/src/level/tiled/TMXTileset.js +3 -6
  225. package/src/level/tiled/TMXTilesetGroup.js +1 -1
  226. package/src/level/tiled/TMXUtils.js +25 -28
  227. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
  228. package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
  229. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
  230. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  231. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
  232. package/src/loader/parser.js +3 -4
  233. package/src/math/color.js +1 -1
  234. package/src/math/matrix2.js +4 -58
  235. package/src/math/matrix3.js +81 -140
  236. package/src/math/observable_vector2.js +6 -6
  237. package/src/math/observable_vector3.js +4 -4
  238. package/src/math/vector2.js +6 -90
  239. package/src/math/vector3.js +5 -89
  240. package/src/particles/emitter.js +1 -1
  241. package/src/particles/particle.js +1 -1
  242. package/src/physics/body.js +21 -19
  243. package/src/physics/bounds.js +26 -32
  244. package/src/physics/collision.js +4 -4
  245. package/src/physics/detector.js +9 -9
  246. package/src/physics/quadtree.js +4 -4
  247. package/src/physics/sat.js +2 -3
  248. package/src/physics/world.js +5 -8
  249. package/src/polyfill/roundrect.js +163 -163
  250. package/src/renderable/collectable.js +1 -1
  251. package/src/renderable/colorlayer.js +3 -3
  252. package/src/renderable/container.js +24 -24
  253. package/src/renderable/imagelayer.js +3 -3
  254. package/src/renderable/light2d.js +2 -2
  255. package/src/renderable/nineslicesprite.js +1 -1
  256. package/src/renderable/renderable.js +25 -25
  257. package/src/renderable/sprite.js +2 -2
  258. package/src/{text → renderable/text}/bitmaptext.js +8 -8
  259. package/src/{text → renderable/text}/bitmaptextdata.js +4 -7
  260. package/src/{text → renderable/text}/glyph.js +1 -1
  261. package/src/{text → renderable/text}/text.js +16 -17
  262. package/src/{text → renderable/text}/textmetrics.js +2 -2
  263. package/src/renderable/trigger.js +9 -9
  264. package/src/renderable/ui/uibaseelement.js +6 -6
  265. package/src/renderable/ui/uispriteelement.js +6 -6
  266. package/src/renderable/ui/uitextbutton.js +2 -2
  267. package/src/state/stage.js +1 -1
  268. package/src/state/state.js +0 -49
  269. package/src/system/device.js +48 -9
  270. package/src/system/event.js +22 -0
  271. package/src/system/platform.js +18 -18
  272. package/src/system/pooling.js +9 -9
  273. package/src/tweens/tween.js +1 -1
  274. package/src/utils/function.js +1 -2
  275. package/src/video/canvas/canvas_renderer.js +2 -6
  276. package/src/video/renderer.js +15 -15
  277. package/src/video/texture/atlas.js +12 -12
  278. package/src/video/texture/canvas_texture.js +14 -14
  279. package/src/video/video.js +3 -3
  280. package/src/video/webgl/buffer/vertex.js +2 -2
  281. package/src/video/webgl/compositors/compositor.js +12 -13
  282. package/src/video/webgl/compositors/primitive_compositor.js +4 -4
  283. package/src/video/webgl/compositors/quad_compositor.js +1 -2
  284. package/src/video/webgl/glshader.js +1 -1
  285. package/src/video/webgl/utils/precision.js +3 -3
  286. package/src/video/webgl/webgl_renderer.js +49 -51
  287. /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 = [];
@@ -109,8 +109,8 @@ function normalize(obj, item) {
109
109
  let nodeName = item.nodeName;
110
110
 
111
111
  switch (nodeName) {
112
- case "data":
113
- var data = parse(item); // <= "Unexpected lexical declaration in case block" if using let
112
+ case "data": {
113
+ let data = parse(item);
114
114
 
115
115
  data.encoding = data.encoding || "xml";
116
116
 
@@ -138,7 +138,7 @@ function normalize(obj, item) {
138
138
  obj.encoding = "none";
139
139
  }
140
140
  break;
141
-
141
+ }
142
142
  case "chunk":
143
143
  obj.chunks = obj.chunks || [];
144
144
  obj.chunks.push(parse(item));
@@ -147,8 +147,8 @@ function normalize(obj, item) {
147
147
  case "imagelayer":
148
148
  case "layer":
149
149
  case "objectgroup":
150
- case "group":
151
- var layer = parse(item); // // <= "Unexpected lexical declaration in case block" if using let
150
+ case "group": {
151
+ let layer = parse(item);
152
152
  layer.type = (nodeName === "layer" ? "tilelayer" : nodeName);
153
153
  if (layer.image) {
154
154
  layer.image = layer.image.source;
@@ -157,20 +157,20 @@ function normalize(obj, item) {
157
157
  obj.layers = obj.layers || [];
158
158
  obj.layers.push(layer);
159
159
  break;
160
-
160
+ }
161
161
  case "animation":
162
162
  obj.animation = parse(item).frames;
163
163
  break;
164
164
 
165
165
  case "frame":
166
- case "object":
167
- var name = nodeName + "s"; // <= "Unexpected lexical declaration in case block" if using let
166
+ case "object": {
167
+ const name = nodeName + "s";
168
168
  obj[name] = obj[name] || [];
169
169
  obj[name].push(parse(item));
170
170
  break;
171
-
172
- case "tile":
173
- var tile = parse(item); // <= "Unexpected lexical declaration in case block" if using let
171
+ }
172
+ case "tile": {
173
+ let tile = parse(item);
174
174
  if (tile.image) {
175
175
  tile.imagewidth = tile.image.width;
176
176
  tile.imageheight = tile.image.height;
@@ -179,9 +179,9 @@ function normalize(obj, item) {
179
179
  obj.tiles = obj.tiles || {};
180
180
  obj.tiles[tile.id] = tile;
181
181
  break;
182
-
183
- case "tileset":
184
- var tileset = parse(item); // <= "Unexpected lexical declaration in case block" if using let
182
+ }
183
+ case "tileset": {
184
+ let tileset = parse(item);
185
185
  if (tileset.image) {
186
186
  tileset.imagewidth = tileset.image.width;
187
187
  tileset.imageheight = tileset.image.height;
@@ -191,13 +191,13 @@ function normalize(obj, item) {
191
191
  obj.tilesets = obj.tilesets || [];
192
192
  obj.tilesets.push(tileset);
193
193
  break;
194
-
194
+ }
195
195
  case "polygon":
196
- case "polyline":
196
+ case "polyline": {
197
197
  obj[nodeName] = [];
198
198
 
199
199
  // Get a point array
200
- var points = parse(item).points.split(" "); // <= "Unexpected lexical declaration in case block" if using let
200
+ let points = parse(item).points.split(" ");
201
201
 
202
202
  // And normalize them into an array of vectors
203
203
  for (let i = 0; i < points.length; i++) {
@@ -209,15 +209,15 @@ function normalize(obj, item) {
209
209
  }
210
210
 
211
211
  break;
212
-
212
+ }
213
213
  case "properties":
214
214
  obj.properties = parse(item);
215
215
  break;
216
216
 
217
- case "property":
218
- var property = parse(item); // <= "Unexpected lexical declaration in case block" if using let
217
+ case "property": {
218
+ const property = parse(item);
219
219
  // for custom properties, text is used
220
- var value = (typeof property.value !== "undefined") ? property.value : property.text;
220
+ const value = (typeof property.value !== "undefined") ? property.value : property.text;
221
221
 
222
222
  obj[property.name] = setTMXValue(
223
223
  property.name,
@@ -226,7 +226,7 @@ function normalize(obj, item) {
226
226
  value
227
227
  );
228
228
  break;
229
-
229
+ }
230
230
  default:
231
231
  obj[nodeName] = parse(item);
232
232
  break;
@@ -276,16 +276,13 @@ function decodeCSV(input) {
276
276
  * @param {number} [bytes] - number of bytes per array entry
277
277
  * @returns {Uint32Array} Decoded data
278
278
  */
279
- function decodeBase64AsArray(input, bytes) {
280
- bytes = bytes || 1;
281
-
282
- let i, j, len;
279
+ function decodeBase64AsArray(input, bytes = 1) {
283
280
  let dec = globalThis.atob(input.replace(/[^A-Za-z0-9\+\/\=]/g, ""));
284
281
  let ar = new Uint32Array(dec.length / bytes);
285
282
 
286
- for (i = 0, len = dec.length / bytes; i < len; i++) {
283
+ for (let i = 0, len = dec.length / bytes; i < len; i++) {
287
284
  ar[i] = 0;
288
- for (j = bytes - 1; j >= 0; --j) {
285
+ for (let j = bytes - 1; j >= 0; --j) {
289
286
  ar[i] += dec.charCodeAt((i * bytes) + j) << (j << 3);
290
287
  }
291
288
  }
@@ -24,7 +24,7 @@ const offsetsStaggerY = [
24
24
  * an Hexagonal Map Renderder
25
25
  * @augments TMXRenderer
26
26
  */
27
- export default class TMXHexagonalRenderer extends TMXRenderer {
27
+ export default class TMXHexagonalRenderer extends TMXRenderer {
28
28
  /**
29
29
  * @param {TMXTileMap} map - the TMX map
30
30
  */
@@ -390,7 +390,7 @@ const offsetsStaggerY = [
390
390
  let rowTile = startTile.clone();
391
391
  let rowPos = startPos.clone();
392
392
 
393
- /* Determine in which half of the tile the top-left corner of the area we
393
+ /* Determine in which half of the tile the top-left corner of the area we
394
394
  * need to draw is. If we're in the upper half, we need to start one row
395
395
  * up due to those tiles being visible as well. How we go up one row
396
396
  * depends on whether we're in the left or right half of the tile.
@@ -9,7 +9,7 @@ import TMXLayer from "./../TMXLayer.js";
9
9
  * an Isometric Map Renderder
10
10
  * @augments TMXRenderer
11
11
  */
12
- export default class TMXIsometricRenderer extends TMXRenderer {
12
+ export default class TMXIsometricRenderer extends TMXRenderer {
13
13
  /**
14
14
  * @param {TMXTileMap} map - the TMX map
15
15
  */
@@ -7,7 +7,7 @@ import TMXRenderer from "./TMXRenderer.js";
7
7
  * an Orthogonal Map Renderder
8
8
  * @augments TMXRenderer
9
9
  */
10
- export default class TMXOrthogonalRenderer extends TMXRenderer {
10
+ export default class TMXOrthogonalRenderer extends TMXRenderer {
11
11
  /**
12
12
  * @param {TMXTileMap} map - the TMX map
13
13
  */
@@ -8,7 +8,7 @@ import Bounds from "./../../../physics/bounds.js";
8
8
  * @classdesc
9
9
  * The map renderer base class
10
10
  */
11
- export default class TMXRenderer {
11
+ export default class TMXRenderer {
12
12
  /**
13
13
  * @param {number} cols - width of the tilemap in tiles
14
14
  * @param {number} rows - height of the tilemap in tiles
@@ -9,7 +9,7 @@ import { degToRad } from "./../../../math/math.js";
9
9
  * a Staggered Map Renderder
10
10
  * @augments TMXHexagonalRenderer
11
11
  */
12
- export default class TMXStaggeredRenderer extends TMXHexagonalRenderer {
12
+ export default class TMXStaggeredRenderer extends TMXHexagonalRenderer {
13
13
 
14
14
  /**
15
15
  * return true if the renderer can render the specified layer