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.
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
- package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
- package/dist/melonjs.mjs/_virtual/howler.js +1 -1
- package/dist/melonjs.mjs/_virtual/index.js +1 -1
- package/dist/melonjs.mjs/application/application.js +53 -5
- package/dist/melonjs.mjs/application/header.js +2 -2
- package/dist/melonjs.mjs/application/resize.js +4 -8
- package/dist/melonjs.mjs/application/settings.js +5 -5
- package/dist/melonjs.mjs/audio/audio.js +4 -6
- package/dist/melonjs.mjs/camera/camera2d.js +12 -14
- package/dist/melonjs.mjs/const.js +1 -1
- package/dist/melonjs.mjs/entity/entity.js +3 -4
- package/dist/melonjs.mjs/geometries/ellipse.js +26 -59
- package/dist/melonjs.mjs/geometries/line.js +18 -25
- package/dist/melonjs.mjs/geometries/path2d.js +16 -13
- package/dist/melonjs.mjs/geometries/point.js +8 -16
- package/dist/melonjs.mjs/geometries/poly.js +40 -97
- package/dist/melonjs.mjs/geometries/rectangle.js +37 -91
- package/dist/melonjs.mjs/geometries/roundrect.js +26 -35
- package/dist/melonjs.mjs/index.js +6 -6
- package/dist/melonjs.mjs/input/gamepad.js +1 -1
- package/dist/melonjs.mjs/input/input.js +1 -1
- package/dist/melonjs.mjs/input/keyboard.js +3 -3
- package/dist/melonjs.mjs/input/pointer.js +4 -4
- package/dist/melonjs.mjs/input/pointerevent.js +6 -7
- package/dist/melonjs.mjs/lang/console.js +1 -1
- package/dist/melonjs.mjs/lang/deprecated.js +2 -2
- package/dist/melonjs.mjs/level/level.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +16 -33
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +3 -4
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +4 -4
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +4 -7
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +2 -2
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +26 -29
- package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +3 -3
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +2 -2
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -2
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +2 -2
- package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
- package/dist/melonjs.mjs/loader/cache.js +1 -1
- package/dist/melonjs.mjs/loader/loader.js +1 -1
- package/dist/melonjs.mjs/loader/loadingscreen.js +1 -1
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
- package/dist/melonjs.mjs/loader/parser.js +4 -5
- package/dist/melonjs.mjs/loader/settings.js +1 -1
- package/dist/melonjs.mjs/math/color.js +2 -2
- package/dist/melonjs.mjs/math/math.js +1 -1
- package/dist/melonjs.mjs/math/matrix2.js +5 -59
- package/dist/melonjs.mjs/math/matrix3.js +82 -141
- package/dist/melonjs.mjs/math/observable_vector2.js +7 -7
- package/dist/melonjs.mjs/math/observable_vector3.js +5 -5
- package/dist/melonjs.mjs/math/vector2.js +7 -91
- package/dist/melonjs.mjs/math/vector3.js +6 -90
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
- package/dist/melonjs.mjs/particles/emitter.js +2 -2
- package/dist/melonjs.mjs/particles/particle.js +2 -2
- package/dist/melonjs.mjs/particles/settings.js +1 -1
- package/dist/melonjs.mjs/physics/body.js +22 -20
- package/dist/melonjs.mjs/physics/bounds.js +27 -33
- package/dist/melonjs.mjs/physics/collision.js +5 -5
- package/dist/melonjs.mjs/physics/detector.js +10 -10
- package/dist/melonjs.mjs/physics/quadtree.js +5 -5
- package/dist/melonjs.mjs/physics/response.js +1 -1
- package/dist/melonjs.mjs/physics/sat.js +3 -4
- package/dist/melonjs.mjs/physics/world.js +6 -9
- package/dist/melonjs.mjs/plugin/plugin.js +3 -3
- package/dist/melonjs.mjs/renderable/collectable.js +2 -2
- package/dist/melonjs.mjs/renderable/colorlayer.js +4 -4
- package/dist/melonjs.mjs/renderable/container.js +25 -25
- package/dist/melonjs.mjs/renderable/draggable.js +1 -1
- package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
- package/dist/melonjs.mjs/renderable/imagelayer.js +4 -4
- package/dist/melonjs.mjs/renderable/light2d.js +3 -3
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +2 -2
- package/dist/melonjs.mjs/renderable/renderable.js +26 -26
- package/dist/melonjs.mjs/renderable/sprite.js +3 -3
- package/dist/melonjs.mjs/renderable/text/bitmaptext.js +421 -0
- package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +195 -0
- package/dist/melonjs.mjs/renderable/text/glyph.js +65 -0
- package/dist/melonjs.mjs/renderable/text/text.js +422 -0
- package/dist/melonjs.mjs/renderable/text/textmetrics.js +175 -0
- package/dist/melonjs.mjs/renderable/text/textstyle.js +21 -0
- package/dist/melonjs.mjs/renderable/trigger.js +10 -10
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +7 -7
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +7 -7
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +3 -3
- package/dist/melonjs.mjs/state/stage.js +2 -2
- package/dist/melonjs.mjs/state/state.js +1 -38
- package/dist/melonjs.mjs/system/device.js +49 -10
- package/dist/melonjs.mjs/system/dom.js +1 -1
- package/dist/melonjs.mjs/system/event.js +24 -2
- package/dist/melonjs.mjs/system/platform.js +18 -18
- package/dist/melonjs.mjs/system/pooling.js +10 -10
- package/dist/melonjs.mjs/system/save.js +1 -1
- package/dist/melonjs.mjs/system/timer.js +1 -1
- package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
- package/dist/melonjs.mjs/text/bitmaptextdata.js +3 -6
- package/dist/melonjs.mjs/text/glyph.js +1 -1
- package/dist/melonjs.mjs/text/text.js +1 -1
- package/dist/melonjs.mjs/text/textmetrics.js +1 -1
- package/dist/melonjs.mjs/text/textstyle.js +1 -1
- package/dist/melonjs.mjs/tweens/easing.js +1 -1
- package/dist/melonjs.mjs/tweens/interpolation.js +1 -1
- package/dist/melonjs.mjs/tweens/tween.js +2 -2
- package/dist/melonjs.mjs/utils/agent.js +1 -1
- package/dist/melonjs.mjs/utils/array.js +1 -1
- package/dist/melonjs.mjs/utils/file.js +1 -1
- package/dist/melonjs.mjs/utils/function.js +2 -3
- package/dist/melonjs.mjs/utils/string.js +1 -1
- package/dist/melonjs.mjs/utils/utils.js +1 -1
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +3 -7
- package/dist/melonjs.mjs/video/renderer.js +16 -16
- package/dist/melonjs.mjs/video/texture/atlas.js +13 -13
- package/dist/melonjs.mjs/video/texture/cache.js +1 -1
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +15 -15
- package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
- package/dist/melonjs.mjs/video/video.js +4 -4
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +3 -3
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +13 -14
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +2 -3
- package/dist/melonjs.mjs/video/webgl/glshader.js +2 -2
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +4 -4
- package/dist/melonjs.mjs/video/webgl/utils/program.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +1 -1
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +50 -52
- package/dist/melonjs.module.js +1137 -1576
- package/dist/types/application/application.d.ts +28 -4
- package/dist/types/application/header.d.ts +2 -2
- package/dist/types/application/settings.d.ts +23 -23
- package/dist/types/audio/audio.d.ts +4 -6
- package/dist/types/camera/camera2d.d.ts +13 -16
- package/dist/types/entity/entity.d.ts +0 -1
- package/dist/types/geometries/ellipse.d.ts +18 -50
- package/dist/types/geometries/path2d.d.ts +1 -1
- package/dist/types/geometries/point.d.ts +5 -13
- package/dist/types/geometries/poly.d.ts +26 -75
- package/dist/types/geometries/rectangle.d.ts +12 -58
- package/dist/types/geometries/roundrect.d.ts +2 -11
- package/dist/types/index.d.ts +3 -3
- package/dist/types/input/gamepad.d.ts +31 -31
- package/dist/types/input/keyboard.d.ts +105 -105
- package/dist/types/input/pointer.d.ts +21 -21
- package/dist/types/input/pointerevent.d.ts +6 -6
- package/dist/types/level/tiled/TMXLayer.d.ts +1 -1
- package/dist/types/math/matrix2.d.ts +9 -63
- package/dist/types/math/matrix3.d.ts +9 -68
- package/dist/types/math/observable_vector2.d.ts +2 -2
- package/dist/types/math/observable_vector3.d.ts +2 -2
- package/dist/types/math/vector2.d.ts +8 -92
- package/dist/types/math/vector3.d.ts +8 -92
- package/dist/types/particles/settings.d.ts +29 -29
- package/dist/types/physics/body.d.ts +10 -8
- package/dist/types/physics/bounds.d.ts +24 -30
- package/dist/types/physics/collision.d.ts +12 -12
- package/dist/types/physics/detector.d.ts +1 -1
- package/dist/types/physics/world.d.ts +4 -7
- package/dist/types/renderable/container.d.ts +19 -19
- package/dist/types/renderable/imagelayer.d.ts +6 -6
- package/dist/types/renderable/light2d.d.ts +7 -7
- package/dist/types/renderable/renderable.d.ts +9 -16
- package/dist/types/renderable/text/bitmaptext.d.ts +151 -0
- package/dist/types/renderable/text/bitmaptextdata.d.ts +35 -0
- package/dist/types/renderable/text/glyph.d.ts +28 -0
- package/dist/types/renderable/text/text.d.ts +159 -0
- package/dist/types/renderable/text/textmetrics.d.ts +47 -0
- package/dist/types/renderable/text/textstyle.d.ts +5 -0
- package/dist/types/renderable/ui/uibaseelement.d.ts +0 -1
- package/dist/types/renderable/ui/uispriteelement.d.ts +0 -1
- package/dist/types/renderable/ui/uitextbutton.d.ts +2 -7
- package/dist/types/state/state.d.ts +11 -11
- package/dist/types/system/device.d.ts +15 -9
- package/dist/types/system/event.d.ts +20 -0
- package/dist/types/system/platform.d.ts +17 -17
- package/dist/types/utils/function.d.ts +1 -2
- package/dist/types/video/renderer.d.ts +13 -13
- package/dist/types/video/texture/canvas_texture.d.ts +14 -14
- package/dist/types/video/video.d.ts +2 -2
- package/dist/types/video/webgl/buffer/vertex.d.ts +2 -2
- package/dist/types/video/webgl/compositors/compositor.d.ts +24 -13
- package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +0 -1
- package/dist/types/video/webgl/compositors/quad_compositor.d.ts +0 -1
- package/dist/types/video/webgl/utils/precision.d.ts +1 -1
- package/dist/types/video/webgl/webgl_renderer.d.ts +47 -50
- package/package.json +15 -15
- package/src/application/application.js +51 -3
- package/src/application/header.js +1 -1
- package/src/application/resize.js +3 -7
- package/src/application/settings.js +4 -4
- package/src/audio/audio.js +3 -5
- package/src/camera/camera2d.js +11 -13
- package/src/entity/entity.js +2 -3
- package/src/geometries/ellipse.js +25 -58
- package/src/geometries/line.js +17 -24
- package/src/geometries/path2d.js +15 -12
- package/src/geometries/point.js +7 -15
- package/src/geometries/poly.js +39 -96
- package/src/geometries/rectangle.js +36 -90
- package/src/geometries/roundrect.js +25 -34
- package/src/index.js +4 -4
- package/src/input/keyboard.js +2 -2
- package/src/input/pointer.js +3 -3
- package/src/input/pointerevent.js +5 -6
- package/src/lang/deprecated.js +1 -1
- package/src/level/tiled/TMXLayer.js +15 -32
- package/src/level/tiled/TMXObject.js +2 -3
- package/src/level/tiled/TMXTile.js +3 -3
- package/src/level/tiled/TMXTileMap.js +2 -2
- package/src/level/tiled/TMXTileset.js +3 -6
- package/src/level/tiled/TMXTilesetGroup.js +1 -1
- package/src/level/tiled/TMXUtils.js +25 -28
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +2 -2
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
- package/src/loader/parser.js +3 -4
- package/src/math/color.js +1 -1
- package/src/math/matrix2.js +4 -58
- package/src/math/matrix3.js +81 -140
- package/src/math/observable_vector2.js +6 -6
- package/src/math/observable_vector3.js +4 -4
- package/src/math/vector2.js +6 -90
- package/src/math/vector3.js +5 -89
- package/src/particles/emitter.js +1 -1
- package/src/particles/particle.js +1 -1
- package/src/physics/body.js +21 -19
- package/src/physics/bounds.js +26 -32
- package/src/physics/collision.js +4 -4
- package/src/physics/detector.js +9 -9
- package/src/physics/quadtree.js +4 -4
- package/src/physics/sat.js +2 -3
- package/src/physics/world.js +5 -8
- package/src/polyfill/roundrect.js +163 -163
- package/src/renderable/collectable.js +1 -1
- package/src/renderable/colorlayer.js +3 -3
- package/src/renderable/container.js +24 -24
- package/src/renderable/imagelayer.js +3 -3
- package/src/renderable/light2d.js +2 -2
- package/src/renderable/nineslicesprite.js +1 -1
- package/src/renderable/renderable.js +25 -25
- package/src/renderable/sprite.js +2 -2
- package/src/{text → renderable/text}/bitmaptext.js +8 -8
- package/src/{text → renderable/text}/bitmaptextdata.js +4 -7
- package/src/{text → renderable/text}/glyph.js +1 -1
- package/src/{text → renderable/text}/text.js +16 -17
- package/src/{text → renderable/text}/textmetrics.js +2 -2
- package/src/renderable/trigger.js +9 -9
- package/src/renderable/ui/uibaseelement.js +6 -6
- package/src/renderable/ui/uispriteelement.js +6 -6
- package/src/renderable/ui/uitextbutton.js +2 -2
- package/src/state/stage.js +1 -1
- package/src/state/state.js +0 -49
- package/src/system/device.js +48 -9
- package/src/system/event.js +22 -0
- package/src/system/platform.js +18 -18
- package/src/system/pooling.js +9 -9
- package/src/tweens/tween.js +1 -1
- package/src/utils/function.js +1 -2
- package/src/video/canvas/canvas_renderer.js +2 -6
- package/src/video/renderer.js +15 -15
- package/src/video/texture/atlas.js +12 -12
- package/src/video/texture/canvas_texture.js +14 -14
- package/src/video/video.js +3 -3
- package/src/video/webgl/buffer/vertex.js +2 -2
- package/src/video/webgl/compositors/compositor.js +12 -13
- package/src/video/webgl/compositors/primitive_compositor.js +4 -4
- package/src/video/webgl/compositors/quad_compositor.js +1 -2
- package/src/video/webgl/glshader.js +1 -1
- package/src/video/webgl/utils/precision.js +3 -3
- package/src/video/webgl/webgl_renderer.js +49 -51
- /package/src/{text → renderable/text}/textstyle.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -11,7 +11,6 @@ import { applyTMXProperties, decode } from './TMXUtils.js';
|
|
|
11
11
|
import Tile from './TMXTile.js';
|
|
12
12
|
import Renderable from '../../renderable/renderable.js';
|
|
13
13
|
import CanvasRenderer from '../../video/canvas/canvas_renderer.js';
|
|
14
|
-
import { game } from '../../index.js';
|
|
15
14
|
|
|
16
15
|
/**
|
|
17
16
|
* Create required arrays for the given layer object
|
|
@@ -59,32 +58,13 @@ function setLayerData(layer, bounds, data) {
|
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
|
|
62
|
-
/**
|
|
63
|
-
* preRender a tile layer using the given renderer
|
|
64
|
-
* @ignore
|
|
65
|
-
*/
|
|
66
|
-
function preRenderLayer(layer, renderer) {
|
|
67
|
-
// set everything
|
|
68
|
-
for (let y = 0; y < layer.rows; y++) {
|
|
69
|
-
for (let x = 0; x < layer.cols; x++) {
|
|
70
|
-
// get the value of the gid
|
|
71
|
-
const tile = layer.layerData[x][y];
|
|
72
|
-
// draw the tile if defined
|
|
73
|
-
if (tile instanceof Tile) {
|
|
74
|
-
// add a new tile to the layer
|
|
75
|
-
layer.getRenderer().drawTile(renderer, x, y, tile);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
61
|
/**
|
|
82
62
|
* @classdesc
|
|
83
63
|
* a TMX Tile Layer Object
|
|
84
64
|
* Tiled QT 0.7.x format
|
|
85
65
|
* @augments Renderable
|
|
86
66
|
*/
|
|
87
|
-
|
|
67
|
+
class TMXLayer extends Renderable {
|
|
88
68
|
/**
|
|
89
69
|
* @param {object} map - layer data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#layer})
|
|
90
70
|
* @param {object} data - layer data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#layer})
|
|
@@ -199,11 +179,6 @@ function preRenderLayer(layer, renderer) {
|
|
|
199
179
|
// check if we have any user-defined properties
|
|
200
180
|
applyTMXProperties(this, data);
|
|
201
181
|
|
|
202
|
-
// check for the correct rendering method
|
|
203
|
-
if (typeof (this.preRender) === "undefined") {
|
|
204
|
-
this.preRender = game.world.preRender;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
182
|
// set a renderer
|
|
208
183
|
this.setRenderer(map.getRenderer());
|
|
209
184
|
|
|
@@ -258,8 +233,11 @@ function preRenderLayer(layer, renderer) {
|
|
|
258
233
|
|
|
259
234
|
this.isAnimated = this.animatedTilesets.length > 0;
|
|
260
235
|
|
|
261
|
-
//
|
|
262
|
-
if (this.isAnimated) {
|
|
236
|
+
// check for the correct rendering method
|
|
237
|
+
if (typeof this.preRender === "undefined" && this.isAnimated === false) {
|
|
238
|
+
this.preRender = this.ancestor.getRootAncestor().preRender;
|
|
239
|
+
} else {
|
|
240
|
+
// Force pre-render off when tileset animation is used
|
|
263
241
|
this.preRender = false;
|
|
264
242
|
}
|
|
265
243
|
|
|
@@ -271,8 +249,11 @@ function preRenderLayer(layer, renderer) {
|
|
|
271
249
|
heigth : this.height,
|
|
272
250
|
transparent : true
|
|
273
251
|
});
|
|
274
|
-
|
|
252
|
+
// pre render the layer on the canvas
|
|
253
|
+
this.getRenderer().drawTileLayer(this.canvasRenderer, this, this);
|
|
275
254
|
}
|
|
255
|
+
|
|
256
|
+
this.isDirty = true;
|
|
276
257
|
}
|
|
277
258
|
|
|
278
259
|
// called when the layer is removed from the game world or a container
|
|
@@ -292,6 +273,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
292
273
|
*/
|
|
293
274
|
setRenderer(renderer) {
|
|
294
275
|
this.renderer = renderer;
|
|
276
|
+
this.isDirty = true;
|
|
295
277
|
}
|
|
296
278
|
|
|
297
279
|
/**
|
|
@@ -344,6 +326,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
344
326
|
*/
|
|
345
327
|
setTile(tile, x, y) {
|
|
346
328
|
this.layerData[x][y] = tile;
|
|
329
|
+
this.isDirty = true;
|
|
347
330
|
return tile;
|
|
348
331
|
}
|
|
349
332
|
|
|
@@ -402,6 +385,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
402
385
|
if (this.preRender) {
|
|
403
386
|
this.canvasRenderer.clearRect(x * this.tilewidth, y * this.tileheight, this.tilewidth, this.tileheight);
|
|
404
387
|
}
|
|
388
|
+
this.isDirty = true;
|
|
405
389
|
}
|
|
406
390
|
|
|
407
391
|
/**
|
|
@@ -409,14 +393,13 @@ function preRenderLayer(layer, renderer) {
|
|
|
409
393
|
* @ignore
|
|
410
394
|
*/
|
|
411
395
|
update(dt) {
|
|
396
|
+
let result = this.isDirty;
|
|
412
397
|
if (this.isAnimated) {
|
|
413
|
-
let result = false;
|
|
414
398
|
for (let i = 0; i < this.animatedTilesets.length; i++) {
|
|
415
399
|
result = this.animatedTilesets[i].update(dt) || result;
|
|
416
400
|
}
|
|
417
|
-
return result;
|
|
418
401
|
}
|
|
419
|
-
return
|
|
402
|
+
return result;
|
|
420
403
|
}
|
|
421
404
|
|
|
422
405
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -216,7 +216,6 @@ class TMXObject {
|
|
|
216
216
|
* @returns {Polygon[]|Line[]|Ellipse[]} an array of shape objects
|
|
217
217
|
*/
|
|
218
218
|
parseTMXShapes() {
|
|
219
|
-
let i = 0;
|
|
220
219
|
let shapes = [];
|
|
221
220
|
|
|
222
221
|
// add an ellipse shape
|
|
@@ -244,7 +243,7 @@ class TMXObject {
|
|
|
244
243
|
let p = this.points;
|
|
245
244
|
let p1, p2;
|
|
246
245
|
let segments = p.length - 1;
|
|
247
|
-
for (i = 0; i < segments; i++) {
|
|
246
|
+
for (let i = 0; i < segments; i++) {
|
|
248
247
|
// clone the value before, as [i + 1]
|
|
249
248
|
// is reused later by the next segment
|
|
250
249
|
p1 = pool.pull("Vector2d", p[i].x, p[i].y);
|
|
@@ -271,7 +270,7 @@ class TMXObject {
|
|
|
271
270
|
|
|
272
271
|
// Apply isometric projection
|
|
273
272
|
if (this.orientation === "isometric") {
|
|
274
|
-
for (i = 0; i < shapes.length; i++) {
|
|
273
|
+
for (let i = 0; i < shapes.length; i++) {
|
|
275
274
|
if (typeof shapes[i].toIso === "function") {
|
|
276
275
|
shapes[i].toIso();
|
|
277
276
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -15,7 +15,7 @@ import { TMX_CLEAR_BIT_MASK, TMX_FLIP_H, TMX_FLIP_V, TMX_FLIP_AD } from './const
|
|
|
15
15
|
* a basic tile object
|
|
16
16
|
* @augments Bounds
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
class Tile extends Bounds {
|
|
19
19
|
/**
|
|
20
20
|
* @param {number} x - x index of the Tile in the map
|
|
21
21
|
* @param {number} y - y index of the Tile in the map
|
|
@@ -115,8 +115,8 @@ import { TMX_CLEAR_BIT_MASK, TMX_FLIP_H, TMX_FLIP_V, TMX_FLIP_AD } from './const
|
|
|
115
115
|
}
|
|
116
116
|
if (this.flippedY) {
|
|
117
117
|
transform.scale(
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
this.flippedAD ? -1 : 1, this.flippedAD ? 1 : -1
|
|
119
|
+
);
|
|
120
120
|
}
|
|
121
121
|
transform.translate(-this.width / 2, -this.height / 2);
|
|
122
122
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -81,7 +81,7 @@ function readObjectGroup(map, data, z) {
|
|
|
81
81
|
* a TMX Tile Map Object
|
|
82
82
|
* Tiled QT +0.7.x format
|
|
83
83
|
*/
|
|
84
|
-
|
|
84
|
+
class TMXTileMap {
|
|
85
85
|
/**
|
|
86
86
|
* @param {string} levelId - name of TMX map
|
|
87
87
|
* @param {object} data - TMX map in JSON format
|
|
@@ -276,7 +276,7 @@ function readObjectGroup(map, data, z) {
|
|
|
276
276
|
image : this.background_image,
|
|
277
277
|
z : zOrder++
|
|
278
278
|
}
|
|
279
|
-
|
|
279
|
+
));
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
data.layers.forEach((layer) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -15,14 +15,11 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
15
15
|
* @classdesc
|
|
16
16
|
* a TMX Tile Set Object
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
class TMXTileset {
|
|
19
19
|
/**
|
|
20
20
|
* @param {object} tileset - tileset data in JSON format ({@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#tileset})
|
|
21
21
|
*/
|
|
22
22
|
constructor(tileset) {
|
|
23
|
-
let i = 0;
|
|
24
|
-
// first gid
|
|
25
|
-
|
|
26
23
|
// tile properties (collidable, etc..)
|
|
27
24
|
this.TileProperties = [];
|
|
28
25
|
|
|
@@ -84,7 +81,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
84
81
|
this._lastUpdate = 0;
|
|
85
82
|
|
|
86
83
|
let tiles = tileset.tiles;
|
|
87
|
-
for (i in tiles) {
|
|
84
|
+
for (let i in tiles) {
|
|
88
85
|
if (tiles.hasOwnProperty(i)) {
|
|
89
86
|
if ("animation" in tiles[i]) {
|
|
90
87
|
this.isAnimated = true;
|
|
@@ -128,7 +125,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
128
125
|
// set tile properties, if any (JSON old format)
|
|
129
126
|
let tileInfo = tileset.tileproperties;
|
|
130
127
|
if (tileInfo) {
|
|
131
|
-
for (i in tileInfo) {
|
|
128
|
+
for (let i in tileInfo) {
|
|
132
129
|
if (tileInfo.hasOwnProperty(i)) {
|
|
133
130
|
this.setTileProperty(+i + this.firstgid, tileInfo[i]);
|
|
134
131
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -11,7 +11,7 @@ import { TMX_CLEAR_BIT_MASK } from './constants.js';
|
|
|
11
11
|
* @classdesc
|
|
12
12
|
* an object containing all tileset
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
class TMXTilesetGroup {
|
|
15
15
|
|
|
16
16
|
constructor() {
|
|
17
17
|
this.tilesets = [];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -116,8 +116,8 @@ function normalize(obj, item) {
|
|
|
116
116
|
let nodeName = item.nodeName;
|
|
117
117
|
|
|
118
118
|
switch (nodeName) {
|
|
119
|
-
case "data":
|
|
120
|
-
|
|
119
|
+
case "data": {
|
|
120
|
+
let data = parse(item);
|
|
121
121
|
|
|
122
122
|
data.encoding = data.encoding || "xml";
|
|
123
123
|
|
|
@@ -145,7 +145,7 @@ function normalize(obj, item) {
|
|
|
145
145
|
obj.encoding = "none";
|
|
146
146
|
}
|
|
147
147
|
break;
|
|
148
|
-
|
|
148
|
+
}
|
|
149
149
|
case "chunk":
|
|
150
150
|
obj.chunks = obj.chunks || [];
|
|
151
151
|
obj.chunks.push(parse(item));
|
|
@@ -154,8 +154,8 @@ function normalize(obj, item) {
|
|
|
154
154
|
case "imagelayer":
|
|
155
155
|
case "layer":
|
|
156
156
|
case "objectgroup":
|
|
157
|
-
case "group":
|
|
158
|
-
|
|
157
|
+
case "group": {
|
|
158
|
+
let layer = parse(item);
|
|
159
159
|
layer.type = (nodeName === "layer" ? "tilelayer" : nodeName);
|
|
160
160
|
if (layer.image) {
|
|
161
161
|
layer.image = layer.image.source;
|
|
@@ -164,20 +164,20 @@ function normalize(obj, item) {
|
|
|
164
164
|
obj.layers = obj.layers || [];
|
|
165
165
|
obj.layers.push(layer);
|
|
166
166
|
break;
|
|
167
|
-
|
|
167
|
+
}
|
|
168
168
|
case "animation":
|
|
169
169
|
obj.animation = parse(item).frames;
|
|
170
170
|
break;
|
|
171
171
|
|
|
172
172
|
case "frame":
|
|
173
|
-
case "object":
|
|
174
|
-
|
|
173
|
+
case "object": {
|
|
174
|
+
const name = nodeName + "s";
|
|
175
175
|
obj[name] = obj[name] || [];
|
|
176
176
|
obj[name].push(parse(item));
|
|
177
177
|
break;
|
|
178
|
-
|
|
179
|
-
case "tile":
|
|
180
|
-
|
|
178
|
+
}
|
|
179
|
+
case "tile": {
|
|
180
|
+
let tile = parse(item);
|
|
181
181
|
if (tile.image) {
|
|
182
182
|
tile.imagewidth = tile.image.width;
|
|
183
183
|
tile.imageheight = tile.image.height;
|
|
@@ -186,9 +186,9 @@ function normalize(obj, item) {
|
|
|
186
186
|
obj.tiles = obj.tiles || {};
|
|
187
187
|
obj.tiles[tile.id] = tile;
|
|
188
188
|
break;
|
|
189
|
-
|
|
190
|
-
case "tileset":
|
|
191
|
-
|
|
189
|
+
}
|
|
190
|
+
case "tileset": {
|
|
191
|
+
let tileset = parse(item);
|
|
192
192
|
if (tileset.image) {
|
|
193
193
|
tileset.imagewidth = tileset.image.width;
|
|
194
194
|
tileset.imageheight = tileset.image.height;
|
|
@@ -198,13 +198,13 @@ function normalize(obj, item) {
|
|
|
198
198
|
obj.tilesets = obj.tilesets || [];
|
|
199
199
|
obj.tilesets.push(tileset);
|
|
200
200
|
break;
|
|
201
|
-
|
|
201
|
+
}
|
|
202
202
|
case "polygon":
|
|
203
|
-
case "polyline":
|
|
203
|
+
case "polyline": {
|
|
204
204
|
obj[nodeName] = [];
|
|
205
205
|
|
|
206
206
|
// Get a point array
|
|
207
|
-
|
|
207
|
+
let points = parse(item).points.split(" ");
|
|
208
208
|
|
|
209
209
|
// And normalize them into an array of vectors
|
|
210
210
|
for (let i = 0; i < points.length; i++) {
|
|
@@ -216,15 +216,15 @@ function normalize(obj, item) {
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
break;
|
|
219
|
-
|
|
219
|
+
}
|
|
220
220
|
case "properties":
|
|
221
221
|
obj.properties = parse(item);
|
|
222
222
|
break;
|
|
223
223
|
|
|
224
|
-
case "property":
|
|
225
|
-
|
|
224
|
+
case "property": {
|
|
225
|
+
const property = parse(item);
|
|
226
226
|
// for custom properties, text is used
|
|
227
|
-
|
|
227
|
+
const value = (typeof property.value !== "undefined") ? property.value : property.text;
|
|
228
228
|
|
|
229
229
|
obj[property.name] = setTMXValue(
|
|
230
230
|
property.name,
|
|
@@ -233,7 +233,7 @@ function normalize(obj, item) {
|
|
|
233
233
|
value
|
|
234
234
|
);
|
|
235
235
|
break;
|
|
236
|
-
|
|
236
|
+
}
|
|
237
237
|
default:
|
|
238
238
|
obj[nodeName] = parse(item);
|
|
239
239
|
break;
|
|
@@ -283,16 +283,13 @@ function decodeCSV(input) {
|
|
|
283
283
|
* @param {number} [bytes] - number of bytes per array entry
|
|
284
284
|
* @returns {Uint32Array} Decoded data
|
|
285
285
|
*/
|
|
286
|
-
function decodeBase64AsArray(input, bytes) {
|
|
287
|
-
bytes = bytes || 1;
|
|
288
|
-
|
|
289
|
-
let i, j, len;
|
|
286
|
+
function decodeBase64AsArray(input, bytes = 1) {
|
|
290
287
|
let dec = globalThis.atob(input.replace(/[^A-Za-z0-9\+\/\=]/g, ""));
|
|
291
288
|
let ar = new Uint32Array(dec.length / bytes);
|
|
292
289
|
|
|
293
|
-
for (i = 0, len = dec.length / bytes; i < len; i++) {
|
|
290
|
+
for (let i = 0, len = dec.length / bytes; i < len; i++) {
|
|
294
291
|
ar[i] = 0;
|
|
295
|
-
for (j = bytes - 1; j >= 0; --j) {
|
|
292
|
+
for (let j = bytes - 1; j >= 0; --j) {
|
|
296
293
|
ar[i] += dec.charCodeAt((i * bytes) + j) << (j << 3);
|
|
297
294
|
}
|
|
298
295
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -29,7 +29,7 @@ const offsetsStaggerY = [
|
|
|
29
29
|
* an Hexagonal Map Renderder
|
|
30
30
|
* @augments TMXRenderer
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
class TMXHexagonalRenderer extends TMXRenderer {
|
|
33
33
|
/**
|
|
34
34
|
* @param {TMXTileMap} map - the TMX map
|
|
35
35
|
*/
|
|
@@ -395,7 +395,7 @@ const offsetsStaggerY = [
|
|
|
395
395
|
let rowTile = startTile.clone();
|
|
396
396
|
let rowPos = startPos.clone();
|
|
397
397
|
|
|
398
|
-
|
|
398
|
+
/* Determine in which half of the tile the top-left corner of the area we
|
|
399
399
|
* need to draw is. If we're in the upper half, we need to start one row
|
|
400
400
|
* up due to those tiles being visible as well. How we go up one row
|
|
401
401
|
* depends on whether we're in the left or right half of the tile.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -15,7 +15,7 @@ import TMXLayer from '../TMXLayer.js';
|
|
|
15
15
|
* an Isometric Map Renderder
|
|
16
16
|
* @augments TMXRenderer
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
class TMXIsometricRenderer extends TMXRenderer {
|
|
19
19
|
/**
|
|
20
20
|
* @param {TMXTileMap} map - the TMX map
|
|
21
21
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -14,7 +14,7 @@ import TMXRenderer from './TMXRenderer.js';
|
|
|
14
14
|
* an Orthogonal Map Renderder
|
|
15
15
|
* @augments TMXRenderer
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
class TMXOrthogonalRenderer extends TMXRenderer {
|
|
18
18
|
/**
|
|
19
19
|
* @param {TMXTileMap} map - the TMX map
|
|
20
20
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -16,7 +16,7 @@ import Bounds from '../../../physics/bounds.js';
|
|
|
16
16
|
* @classdesc
|
|
17
17
|
* The map renderer base class
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
class TMXRenderer {
|
|
20
20
|
/**
|
|
21
21
|
* @param {number} cols - width of the tilemap in tiles
|
|
22
22
|
* @param {number} rows - height of the tilemap in tiles
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -15,7 +15,7 @@ import { degToRad } from '../../../math/math.js';
|
|
|
15
15
|
* a Staggered Map Renderder
|
|
16
16
|
* @augments TMXHexagonalRenderer
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
class TMXStaggeredRenderer extends TMXHexagonalRenderer {
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* return true if the renderer can render the specified layer
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -128,7 +128,7 @@ function preloadTMX(tmxData, onload, onerror) {
|
|
|
128
128
|
switch (format) {
|
|
129
129
|
case "xml":
|
|
130
130
|
case "tmx":
|
|
131
|
-
case "tsx":
|
|
131
|
+
case "tsx": {
|
|
132
132
|
// ie9 does not fully implement the responseXML
|
|
133
133
|
if (ua.match(/msie/i) || !xmlhttp.responseXML) {
|
|
134
134
|
if (globalThis.DOMParser) {
|
|
@@ -142,7 +142,7 @@ function preloadTMX(tmxData, onload, onerror) {
|
|
|
142
142
|
result = xmlhttp.responseXML;
|
|
143
143
|
}
|
|
144
144
|
// converts to a JS object
|
|
145
|
-
|
|
145
|
+
const data = parse(result);
|
|
146
146
|
switch (format) {
|
|
147
147
|
case "tmx":
|
|
148
148
|
result = data.map;
|
|
@@ -152,9 +152,8 @@ function preloadTMX(tmxData, onload, onerror) {
|
|
|
152
152
|
result = data.tilesets[0];
|
|
153
153
|
break;
|
|
154
154
|
}
|
|
155
|
-
|
|
156
155
|
break;
|
|
157
|
-
|
|
156
|
+
}
|
|
158
157
|
case "json":
|
|
159
158
|
case "tmj":
|
|
160
159
|
case "tsj":
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.
|
|
2
|
+
* melonJS Game Engine - v15.4.0
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
@@ -189,7 +189,7 @@ let cssToRGB = new Map();
|
|
|
189
189
|
* @classdesc
|
|
190
190
|
* A color manipulation object.
|
|
191
191
|
*/
|
|
192
|
-
|
|
192
|
+
class Color {
|
|
193
193
|
/**
|
|
194
194
|
* @param {number} [r=0] - red component or array of color components
|
|
195
195
|
* @param {number} [g=0] - green component
|