melonjs 14.5.0 → 15.1.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/LICENSE.md +1 -1
- package/README.md +6 -6
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
- package/dist/melonjs.mjs/_virtual/arraymultimap.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 +7 -3
- package/dist/melonjs.mjs/_virtual/index2.js +1 -1
- package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
- package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
- package/dist/melonjs.mjs/application/application.js +27 -17
- package/dist/melonjs.mjs/application/header.js +6 -5
- package/dist/melonjs.mjs/application/resize.js +20 -20
- package/dist/melonjs.mjs/application/settings.js +1 -1
- package/dist/melonjs.mjs/audio/audio.js +18 -20
- package/dist/melonjs.mjs/camera/camera2d.js +10 -10
- package/dist/melonjs.mjs/const.js +1 -1
- package/dist/melonjs.mjs/entity/entity.js +4 -4
- package/dist/melonjs.mjs/geometries/ellipse.js +6 -6
- package/dist/melonjs.mjs/geometries/line.js +9 -9
- package/dist/melonjs.mjs/geometries/path2d.js +56 -56
- package/dist/melonjs.mjs/geometries/point.js +2 -2
- package/dist/melonjs.mjs/geometries/poly.js +29 -29
- package/dist/melonjs.mjs/geometries/rectangle.js +8 -8
- package/dist/melonjs.mjs/geometries/roundrect.js +6 -6
- package/dist/melonjs.mjs/index.js +8 -6
- package/dist/melonjs.mjs/input/gamepad.js +30 -30
- package/dist/melonjs.mjs/input/input.js +2 -2
- package/dist/melonjs.mjs/input/keyboard.js +15 -15
- package/dist/melonjs.mjs/input/pointer.js +2 -2
- package/dist/melonjs.mjs/input/pointerevent.js +59 -59
- package/dist/melonjs.mjs/lang/console.js +3 -3
- package/dist/melonjs.mjs/lang/deprecated.js +2 -2
- package/dist/melonjs.mjs/level/level.js +9 -9
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +31 -31
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +8 -8
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +8 -8
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +19 -19
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +15 -15
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +46 -41
- package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +30 -30
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +21 -21
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +10 -10
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +6 -6
- 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 +7 -7
- package/dist/melonjs.mjs/loader/loadingscreen.js +2 -2
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
- package/dist/melonjs.mjs/loader/parser.js +13 -13
- package/dist/melonjs.mjs/loader/settings.js +3 -3
- package/dist/melonjs.mjs/math/color.js +25 -24
- package/dist/melonjs.mjs/math/math.js +2 -2
- package/dist/melonjs.mjs/math/matrix2.js +22 -22
- package/dist/melonjs.mjs/math/matrix3.js +52 -52
- package/dist/melonjs.mjs/math/observable_vector2.js +12 -12
- package/dist/melonjs.mjs/math/observable_vector3.js +22 -22
- package/dist/melonjs.mjs/math/vector2.js +11 -11
- package/dist/melonjs.mjs/math/vector3.js +21 -21
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +45 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +130 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +2 -2
- 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 +5 -5
- package/dist/melonjs.mjs/particles/particle.js +8 -8
- package/dist/melonjs.mjs/particles/settings.js +3 -3
- package/dist/melonjs.mjs/physics/body.js +17 -17
- package/dist/melonjs.mjs/physics/bounds.js +12 -12
- package/dist/melonjs.mjs/physics/collision.js +3 -3
- package/dist/melonjs.mjs/physics/detector.js +14 -14
- package/dist/melonjs.mjs/physics/quadtree.js +19 -19
- package/dist/melonjs.mjs/physics/response.js +1 -1
- package/dist/melonjs.mjs/physics/sat.js +60 -60
- package/dist/melonjs.mjs/physics/world.js +4 -4
- package/dist/melonjs.mjs/plugin/plugin.js +11 -11
- package/dist/melonjs.mjs/renderable/collectable.js +2 -2
- package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
- package/dist/melonjs.mjs/renderable/container.js +77 -59
- package/dist/melonjs.mjs/renderable/dragndrop.js +5 -5
- package/dist/melonjs.mjs/renderable/imagelayer.js +7 -6
- package/dist/melonjs.mjs/renderable/light2d.js +6 -6
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +12 -12
- package/dist/melonjs.mjs/renderable/renderable.js +35 -13
- package/dist/melonjs.mjs/renderable/sprite.js +25 -25
- package/dist/melonjs.mjs/renderable/trigger.js +11 -9
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +97 -27
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +25 -25
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +83 -65
- package/dist/melonjs.mjs/state/stage.js +7 -7
- package/dist/melonjs.mjs/state/state.js +15 -15
- package/dist/melonjs.mjs/system/device.js +3 -3
- package/dist/melonjs.mjs/system/dom.js +1 -1
- package/dist/melonjs.mjs/system/event.js +2 -2
- package/dist/melonjs.mjs/system/platform.js +1 -1
- package/dist/melonjs.mjs/system/pooling.js +9 -9
- package/dist/melonjs.mjs/system/save.js +6 -6
- package/dist/melonjs.mjs/system/timer.js +16 -12
- package/dist/melonjs.mjs/text/bitmaptext.js +20 -20
- package/dist/melonjs.mjs/text/bitmaptextdata.js +22 -22
- package/dist/melonjs.mjs/text/glyph.js +3 -3
- package/dist/melonjs.mjs/text/text.js +63 -92
- package/dist/melonjs.mjs/text/textmetrics.js +15 -15
- package/dist/melonjs.mjs/text/textstyle.js +4 -6
- package/dist/melonjs.mjs/tweens/easing.js +4 -4
- package/dist/melonjs.mjs/tweens/interpolation.js +8 -8
- package/dist/melonjs.mjs/tweens/tween.js +11 -11
- package/dist/melonjs.mjs/utils/agent.js +6 -6
- package/dist/melonjs.mjs/utils/array.js +4 -4
- package/dist/melonjs.mjs/utils/file.js +1 -1
- package/dist/melonjs.mjs/utils/function.js +5 -5
- package/dist/melonjs.mjs/utils/string.js +3 -3
- package/dist/melonjs.mjs/utils/utils.js +16 -16
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +41 -119
- package/dist/melonjs.mjs/video/renderer.js +70 -14
- package/dist/melonjs.mjs/video/texture/atlas.js +39 -45
- package/dist/melonjs.mjs/video/texture/cache.js +9 -10
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +63 -3
- package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
- package/dist/melonjs.mjs/video/video.js +2 -2
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +23 -19
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +80 -80
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +77 -0
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +252 -0
- package/dist/melonjs.mjs/video/webgl/compositors/webgl_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/glshader.js +7 -7
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +2 -2
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +2 -2
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +2 -2
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/program.js +7 -7
- package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +4 -4
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +188 -181
- package/dist/melonjs.module.js +25040 -25193
- package/dist/types/application/application.d.ts +11 -8
- package/dist/types/audio/audio.d.ts +3 -3
- package/dist/types/entity/entity.d.ts +1 -1
- package/dist/types/index.d.ts +7 -4
- package/dist/types/input/input.d.ts +1 -1
- package/dist/types/input/keyboard.d.ts +1 -1
- package/dist/types/input/pointerevent.d.ts +6 -6
- package/dist/types/level/level.d.ts +2 -2
- package/dist/types/level/tiled/TMXLayer.d.ts +4 -4
- package/dist/types/level/tiled/TMXTileMap.d.ts +2 -2
- package/dist/types/level/tiled/TMXUtils.d.ts +5 -4
- package/dist/types/loader/loader.d.ts +2 -2
- package/dist/types/loader/settings.d.ts +2 -2
- package/dist/types/particles/emitter.d.ts +1 -1
- package/dist/types/physics/collision.d.ts +1 -1
- package/dist/types/physics/detector.d.ts +1 -1
- package/dist/types/plugin/plugin.d.ts +2 -2
- package/dist/types/renderable/container.d.ts +21 -17
- package/dist/types/renderable/renderable.d.ts +6 -0
- package/dist/types/renderable/sprite.d.ts +11 -11
- package/dist/types/renderable/trigger.d.ts +1 -1
- package/dist/types/renderable/ui/uibaseelement.d.ts +28 -6
- package/dist/types/renderable/ui/uispriteelement.d.ts +12 -14
- package/dist/types/renderable/ui/uitextbutton.d.ts +52 -12
- package/dist/types/state/stage.d.ts +1 -1
- package/dist/types/system/device.d.ts +1 -1
- package/dist/types/system/pooling.d.ts +3 -3
- package/dist/types/system/timer.d.ts +5 -5
- package/dist/types/text/bitmaptext.d.ts +1 -1
- package/dist/types/text/text.d.ts +7 -21
- package/dist/types/text/textstyle.d.ts +1 -1
- package/dist/types/utils/array.d.ts +2 -2
- package/dist/types/video/canvas/canvas_renderer.d.ts +8 -81
- package/dist/types/video/renderer.d.ts +48 -4
- package/dist/types/video/texture/atlas.d.ts +3 -3
- package/dist/types/video/texture/canvas_texture.d.ts +40 -0
- package/dist/types/video/webgl/buffer/vertex.d.ts +3 -3
- package/dist/types/video/webgl/compositors/compositor.d.ts +38 -32
- package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +22 -0
- package/dist/types/video/webgl/compositors/quad_compositor.d.ts +72 -0
- package/dist/types/video/webgl/glshader.d.ts +1 -1
- package/dist/types/video/webgl/webgl_renderer.d.ts +47 -37
- package/package.json +16 -17
- package/src/application/application.js +26 -16
- package/src/application/header.js +5 -4
- package/src/application/resize.js +19 -19
- package/src/audio/audio.js +17 -19
- package/src/camera/camera2d.js +9 -9
- package/src/entity/entity.js +3 -3
- package/src/geometries/ellipse.js +5 -5
- package/src/geometries/line.js +8 -8
- package/src/geometries/path2d.js +55 -55
- package/src/geometries/point.js +1 -1
- package/src/geometries/poly.js +28 -28
- package/src/geometries/rectangle.js +7 -7
- package/src/geometries/roundrect.js +5 -5
- package/src/index.js +9 -4
- package/src/input/gamepad.js +29 -29
- package/src/input/input.js +1 -1
- package/src/input/keyboard.js +14 -14
- package/src/input/pointer.js +1 -1
- package/src/input/pointerevent.js +52 -52
- package/src/lang/console.js +2 -2
- package/src/lang/deprecated.js +1 -1
- package/src/level/level.js +8 -8
- package/src/level/tiled/TMXGroup.js +2 -2
- package/src/level/tiled/TMXLayer.js +30 -30
- package/src/level/tiled/TMXObject.js +7 -7
- package/src/level/tiled/TMXTile.js +7 -7
- package/src/level/tiled/TMXTileMap.js +18 -18
- package/src/level/tiled/TMXTileset.js +14 -14
- package/src/level/tiled/TMXTilesetGroup.js +2 -2
- package/src/level/tiled/TMXUtils.js +45 -40
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +29 -29
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +20 -20
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +9 -9
- package/src/level/tiled/renderer/TMXRenderer.js +1 -1
- package/src/level/tiled/renderer/TMXStaggeredRenderer.js +5 -5
- package/src/loader/loader.js +6 -6
- package/src/loader/loadingscreen.js +1 -1
- package/src/loader/parser.js +12 -12
- package/src/loader/settings.js +2 -2
- package/src/math/color.js +24 -23
- package/src/math/math.js +1 -1
- package/src/math/matrix2.js +21 -21
- package/src/math/matrix3.js +51 -51
- package/src/math/observable_vector2.js +11 -11
- package/src/math/observable_vector3.js +21 -21
- package/src/math/vector2.js +10 -10
- package/src/math/vector3.js +20 -20
- package/src/particles/emitter.js +4 -4
- package/src/particles/particle.js +7 -7
- package/src/particles/settings.js +2 -2
- package/src/physics/body.js +16 -16
- package/src/physics/bounds.js +11 -11
- package/src/physics/collision.js +2 -2
- package/src/physics/detector.js +13 -13
- package/src/physics/quadtree.js +18 -18
- package/src/physics/sat.js +59 -59
- package/src/physics/world.js +3 -3
- package/src/plugin/plugin.js +8 -8
- package/src/polyfill/index.js +0 -2
- package/src/renderable/collectable.js +1 -1
- package/src/renderable/container.js +76 -58
- package/src/renderable/dragndrop.js +4 -4
- package/src/renderable/imagelayer.js +6 -5
- package/src/renderable/light2d.js +5 -5
- package/src/renderable/nineslicesprite.js +11 -11
- package/src/renderable/renderable.js +34 -12
- package/src/renderable/sprite.js +24 -24
- package/src/renderable/trigger.js +10 -8
- package/src/renderable/ui/uibaseelement.js +96 -26
- package/src/renderable/ui/uispriteelement.js +24 -24
- package/src/renderable/ui/uitextbutton.js +85 -67
- package/src/state/stage.js +6 -6
- package/src/state/state.js +14 -14
- package/src/system/device.js +2 -2
- package/src/system/event.js +1 -1
- package/src/system/pooling.js +8 -8
- package/src/system/save.js +5 -5
- package/src/system/timer.js +15 -11
- package/src/text/bitmaptext.js +19 -19
- package/src/text/bitmaptextdata.js +21 -21
- package/src/text/glyph.js +2 -2
- package/src/text/text.js +62 -91
- package/src/text/textmetrics.js +14 -14
- package/src/text/textstyle.js +3 -5
- package/src/tweens/easing.js +3 -3
- package/src/tweens/interpolation.js +7 -7
- package/src/tweens/tween.js +10 -10
- package/src/utils/agent.js +5 -5
- package/src/utils/array.js +3 -3
- package/src/utils/function.js +4 -4
- package/src/utils/string.js +2 -2
- package/src/utils/utils.js +15 -15
- package/src/video/canvas/canvas_renderer.js +39 -117
- package/src/video/renderer.js +68 -12
- package/src/video/texture/atlas.js +38 -44
- package/src/video/texture/cache.js +6 -6
- package/src/video/texture/canvas_texture.js +62 -2
- package/src/video/video.js +1 -1
- package/src/video/webgl/buffer/vertex.js +22 -18
- package/src/video/webgl/compositors/compositor.js +79 -80
- package/src/video/webgl/compositors/primitive_compositor.js +68 -0
- package/src/video/webgl/compositors/{webgl_compositor.js → quad_compositor.js} +52 -109
- package/src/video/webgl/glshader.js +6 -6
- package/src/video/webgl/shaders/primitive.vert +2 -5
- package/src/video/webgl/shaders/quad.vert +3 -1
- package/src/video/webgl/utils/attributes.js +1 -1
- package/src/video/webgl/utils/program.js +6 -6
- package/src/video/webgl/utils/uniforms.js +3 -3
- package/src/video/webgl/webgl_renderer.js +186 -179
- package/dist/melonjs.mjs/_virtual/make-built-in.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-define-property.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +0 -10
- package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +0 -10
- package/dist/melonjs.mjs/_virtual/shared.js +0 -10
- package/dist/melonjs.mjs/game.js +0 -29
- package/dist/melonjs.mjs/polyfill/console.js +0 -18
- package/dist/melonjs.mjs/polyfill/performance.js +0 -27
- package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +0 -46
- package/dist/melonjs.mjs/polyfill/roundrect.js +0 -242
- package/dist/melonjs.mjs/renderable/re_container.js +0 -1016
- package/dist/melonjs.mjs/video/utils/resize.js +0 -116
- package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +0 -494
- package/src/polyfill/performance.js +0 -20
- package/src/polyfill/requestAnimationFrame.js +0 -39
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -113,7 +113,7 @@ Renderer.prototype.getScreenContext = function() {
|
|
|
113
113
|
* @param {object} settings - See {@link Sprite}
|
|
114
114
|
*/
|
|
115
115
|
constructor(x, y, settings) {
|
|
116
|
-
warning("GUI_Object", "UISpriteElement", "14.0.0");
|
|
116
|
+
warning("GUI_Object", "UISpriteElement or UITextButton", "14.0.0");
|
|
117
117
|
super(x, y, settings);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -13,11 +13,11 @@ import { game } from '../index.js';
|
|
|
13
13
|
import TMXTileMap from './tiled/TMXTileMap.js';
|
|
14
14
|
|
|
15
15
|
// our levels
|
|
16
|
-
|
|
16
|
+
let levels = {};
|
|
17
17
|
// level index table
|
|
18
|
-
|
|
18
|
+
let levelIdx = [];
|
|
19
19
|
// current level index
|
|
20
|
-
|
|
20
|
+
let currentLevelIdx = 0;
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @ignore
|
|
@@ -64,7 +64,7 @@ function safeLoadLevel(levelId, options, restart) {
|
|
|
64
64
|
* @ignore
|
|
65
65
|
*/
|
|
66
66
|
function loadTMXLevel(levelId, container, flatten, setViewportBounds) {
|
|
67
|
-
|
|
67
|
+
let level = levels[levelId];
|
|
68
68
|
|
|
69
69
|
// reset the GUID generator
|
|
70
70
|
// and pass the level id as parameter
|
|
@@ -83,7 +83,7 @@ function loadTMXLevel(levelId, container, flatten, setViewportBounds) {
|
|
|
83
83
|
* @namespace level
|
|
84
84
|
*/
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
let level = {
|
|
87
87
|
|
|
88
88
|
/**
|
|
89
89
|
* add a level into the game manager (usually called by the preloader)
|
|
@@ -138,7 +138,7 @@ var level = {
|
|
|
138
138
|
* @example
|
|
139
139
|
* // the game assets to be be preloaded
|
|
140
140
|
* // TMX maps
|
|
141
|
-
*
|
|
141
|
+
* let resources = [
|
|
142
142
|
* {name: "a4_level1", type: "tmx", src: "data/level/a4_level1.tmx"},
|
|
143
143
|
* {name: "a4_level2", type: "tmx", src: "data/level/a4_level2.tmx"},
|
|
144
144
|
* {name: "a4_level3", type: "tmx", src: "data/level/a4_level3.tmx"},
|
|
@@ -152,7 +152,7 @@ var level = {
|
|
|
152
152
|
* ...
|
|
153
153
|
* ...
|
|
154
154
|
* // load a level into a specific container
|
|
155
|
-
*
|
|
155
|
+
* let levelContainer = new me.Container();
|
|
156
156
|
* me.level.load("a4_level2", {container:levelContainer});
|
|
157
157
|
* // add a simple transformation
|
|
158
158
|
* levelContainer.currentTransform.translate(levelContainer.width / 2, levelContainer.height / 2 );
|
|
@@ -177,7 +177,7 @@ var level = {
|
|
|
177
177
|
if (levels[levelId] instanceof TMXTileMap) {
|
|
178
178
|
|
|
179
179
|
// check the status of the state mngr
|
|
180
|
-
|
|
180
|
+
let wasRunning = state.isRunning();
|
|
181
181
|
|
|
182
182
|
if (wasRunning) {
|
|
183
183
|
// stop the game loop to avoid
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -64,7 +64,7 @@ class TMXGroup {
|
|
|
64
64
|
*/
|
|
65
65
|
this.objects = [];
|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
let visible = typeof(data.visible) !== "undefined" ? data.visible : true;
|
|
68
68
|
this.opacity = (visible === true) ? clamp(+data.opacity || 1.0, 0.0, 1.0) : 0;
|
|
69
69
|
|
|
70
70
|
// check if we have any user-defined properties
|
|
@@ -80,7 +80,7 @@ class TMXGroup {
|
|
|
80
80
|
|
|
81
81
|
if (data.layers) {
|
|
82
82
|
data.layers.forEach((data) => {
|
|
83
|
-
|
|
83
|
+
let layer = new TMXLayer(map, data, map.tilewidth, map.tileheight, map.orientation, map.tilesets, z++);
|
|
84
84
|
// set a renderer
|
|
85
85
|
layer.setRenderer(map.getRenderer());
|
|
86
86
|
// resize container accordingly
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -19,10 +19,10 @@ import { game } from '../../index.js';
|
|
|
19
19
|
*/
|
|
20
20
|
function initArray(rows, cols) {
|
|
21
21
|
// initialize the array
|
|
22
|
-
|
|
23
|
-
for (
|
|
22
|
+
let array = new Array(cols);
|
|
23
|
+
for (let col = 0; col < cols; col++) {
|
|
24
24
|
array[col] = new Array(rows);
|
|
25
|
-
for (
|
|
25
|
+
for (let row = 0; row < rows; row++) {
|
|
26
26
|
array[col][row] = null;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -34,8 +34,8 @@ function initArray(rows, cols) {
|
|
|
34
34
|
* @ignore
|
|
35
35
|
*/
|
|
36
36
|
function setLayerData(layer, bounds, data) {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
let idx = 0;
|
|
38
|
+
let width, height;
|
|
39
39
|
|
|
40
40
|
// layer provide rows and cols, chunk width and height
|
|
41
41
|
if (typeof bounds.rows === "undefined") {
|
|
@@ -46,10 +46,10 @@ function setLayerData(layer, bounds, data) {
|
|
|
46
46
|
height = bounds.rows;
|
|
47
47
|
}
|
|
48
48
|
// set everything
|
|
49
|
-
for (
|
|
50
|
-
for (
|
|
49
|
+
for (let y = 0; y < height; y++) {
|
|
50
|
+
for (let x = 0; x < width; x++) {
|
|
51
51
|
// get the value of the gid
|
|
52
|
-
|
|
52
|
+
let gid = data[idx++];
|
|
53
53
|
// fill the array
|
|
54
54
|
if (gid !== 0) {
|
|
55
55
|
// add a new tile to the layer
|
|
@@ -65,10 +65,10 @@ function setLayerData(layer, bounds, data) {
|
|
|
65
65
|
*/
|
|
66
66
|
function preRenderLayer(layer, renderer) {
|
|
67
67
|
// set everything
|
|
68
|
-
for (
|
|
69
|
-
for (
|
|
68
|
+
for (let y = 0; y < layer.rows; y++) {
|
|
69
|
+
for (let x = 0; x < layer.cols; x++) {
|
|
70
70
|
// get the value of the gid
|
|
71
|
-
|
|
71
|
+
let tile = layer.layerData[x][y];
|
|
72
72
|
// draw the tile if defined
|
|
73
73
|
if (tile instanceof Tile) {
|
|
74
74
|
// add a new tile to the layer
|
|
@@ -134,8 +134,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
134
134
|
"width" : 0,
|
|
135
135
|
"height" : 0
|
|
136
136
|
};
|
|
137
|
-
for (
|
|
138
|
-
|
|
137
|
+
for (let i = 0; i < this.tilesets.length; i++) {
|
|
138
|
+
let tileset = this.tilesets.getTilesetByIndex(i);
|
|
139
139
|
this.maxTileSize.width = Math.max(this.maxTileSize.width, tileset.tilewidth);
|
|
140
140
|
this.maxTileSize.height = Math.max(this.maxTileSize.height, tileset.tileheight);
|
|
141
141
|
}
|
|
@@ -178,7 +178,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
178
178
|
this.rows = +data.height;
|
|
179
179
|
|
|
180
180
|
// layer opacity
|
|
181
|
-
|
|
181
|
+
let visible = typeof(data.visible) !== "undefined" ? +data.visible : 1;
|
|
182
182
|
this.setOpacity(visible ? +data.opacity : 0);
|
|
183
183
|
|
|
184
184
|
// layer tint
|
|
@@ -248,8 +248,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
if (this.tilesets) {
|
|
251
|
-
|
|
252
|
-
for (
|
|
251
|
+
let tileset = this.tilesets.tilesets;
|
|
252
|
+
for (let i = 0; i < tileset.length; i++) {
|
|
253
253
|
if (tileset[i].isAnimated) {
|
|
254
254
|
this.animatedTilesets.push(tileset[i]);
|
|
255
255
|
}
|
|
@@ -287,7 +287,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
287
287
|
* @param {TMXRenderer} renderer
|
|
288
288
|
* @example
|
|
289
289
|
* // use the parent map default renderer
|
|
290
|
-
*
|
|
290
|
+
* let layer = new me.TMXLayer(...);
|
|
291
291
|
* layer.setRenderer(map.getRenderer());
|
|
292
292
|
*/
|
|
293
293
|
setRenderer(renderer) {
|
|
@@ -309,7 +309,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
309
309
|
* @returns {number} TileId or null if there is no Tile at the given position
|
|
310
310
|
*/
|
|
311
311
|
getTileId(x, y) {
|
|
312
|
-
|
|
312
|
+
let tile = this.getTile(x, y);
|
|
313
313
|
return (tile ? tile.tileId : null);
|
|
314
314
|
}
|
|
315
315
|
|
|
@@ -320,15 +320,15 @@ function preRenderLayer(layer, renderer) {
|
|
|
320
320
|
* @returns {Tile} corresponding tile or null if there is no defined tile at the coordinate or if outside of the layer bounds
|
|
321
321
|
* @example
|
|
322
322
|
* // get the TMX Map Layer called "Front layer"
|
|
323
|
-
*
|
|
323
|
+
* let layer = me.game.world.getChildByName("Front Layer")[0];
|
|
324
324
|
* // get the tile object corresponding to the latest pointer position
|
|
325
|
-
*
|
|
325
|
+
* let tile = layer.getTile(me.input.pointer.x, me.input.pointer.y);
|
|
326
326
|
*/
|
|
327
327
|
getTile(x, y) {
|
|
328
|
-
|
|
328
|
+
let tile = null;
|
|
329
329
|
|
|
330
330
|
if (this.contains(x, y)) {
|
|
331
|
-
|
|
331
|
+
let coord = this.getRenderer().pixelToTileCoords(x, y, pool.pull("Vector2d"));
|
|
332
332
|
tile = this.cellAt(coord.x, coord.y);
|
|
333
333
|
pool.push(coord);
|
|
334
334
|
}
|
|
@@ -370,13 +370,13 @@ function preRenderLayer(layer, renderer) {
|
|
|
370
370
|
* @returns {Tile} corresponding tile or null if there is no defined tile at the position or if outside of the layer bounds
|
|
371
371
|
* @example
|
|
372
372
|
* // return the first tile at offset 0, 0
|
|
373
|
-
*
|
|
373
|
+
* let tile = layer.cellAt(0, 0);
|
|
374
374
|
*/
|
|
375
375
|
cellAt(x, y, boundsCheck) {
|
|
376
|
-
|
|
377
|
-
|
|
376
|
+
let _x = ~~x;
|
|
377
|
+
let _y = ~~y;
|
|
378
378
|
|
|
379
|
-
|
|
379
|
+
let renderer = this.getRenderer();
|
|
380
380
|
// boundsCheck only used internally by the tiled renderer, when the layer bound check was already done
|
|
381
381
|
if (boundsCheck === false || (_x >= 0 && _x < renderer.cols && _y >= 0 && _y < renderer.rows)) {
|
|
382
382
|
return this.layerData[_x][_y];
|
|
@@ -410,8 +410,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
410
410
|
*/
|
|
411
411
|
update(dt) {
|
|
412
412
|
if (this.isAnimated) {
|
|
413
|
-
|
|
414
|
-
for (
|
|
413
|
+
let result = false;
|
|
414
|
+
for (let i = 0; i < this.animatedTilesets.length; i++) {
|
|
415
415
|
result = this.animatedTilesets[i].update(dt) || result;
|
|
416
416
|
}
|
|
417
417
|
return result;
|
|
@@ -426,8 +426,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
426
426
|
draw(renderer, rect) {
|
|
427
427
|
// use the offscreen canvas
|
|
428
428
|
if (this.preRender) {
|
|
429
|
-
|
|
430
|
-
|
|
429
|
+
const width = Math.min(rect.width, this.width);
|
|
430
|
+
const height = Math.min(rect.height, this.height);
|
|
431
431
|
|
|
432
432
|
// draw using the cached canvas
|
|
433
433
|
renderer.drawImage(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -198,7 +198,7 @@ class TMXObject {
|
|
|
198
198
|
*/
|
|
199
199
|
setTile(tilesets) {
|
|
200
200
|
// get the corresponding tileset
|
|
201
|
-
|
|
201
|
+
let tileset = tilesets.getTilesetByGid(this.gid);
|
|
202
202
|
|
|
203
203
|
if (tileset.isCollection === false) {
|
|
204
204
|
// set width and height equal to tile size
|
|
@@ -216,8 +216,8 @@ class TMXObject {
|
|
|
216
216
|
* @returns {Polygon[]|Line[]|Ellipse[]} an array of shape objects
|
|
217
217
|
*/
|
|
218
218
|
parseTMXShapes() {
|
|
219
|
-
|
|
220
|
-
|
|
219
|
+
let i = 0;
|
|
220
|
+
let shapes = [];
|
|
221
221
|
|
|
222
222
|
// add an ellipse shape
|
|
223
223
|
if (this.isEllipse === true) {
|
|
@@ -233,7 +233,7 @@ class TMXObject {
|
|
|
233
233
|
} else {
|
|
234
234
|
// add a polygon
|
|
235
235
|
if (this.isPolygon === true) {
|
|
236
|
-
|
|
236
|
+
let _polygon = pool.pull("Polygon", 0, 0, this.points);
|
|
237
237
|
// make sure it's a convex polygon
|
|
238
238
|
if (_polygon.isConvex() === false ) {
|
|
239
239
|
throw new Error("collision polygones in Tiled should be defined as Convex");
|
|
@@ -241,9 +241,9 @@ class TMXObject {
|
|
|
241
241
|
shapes.push(_polygon.rotate(this.rotation));
|
|
242
242
|
|
|
243
243
|
} else if (this.isPolyLine === true) {
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
let p = this.points;
|
|
245
|
+
let p1, p2;
|
|
246
|
+
let segments = p.length - 1;
|
|
247
247
|
for (i = 0; i < segments; i++) {
|
|
248
248
|
// clone the value before, as [i + 1]
|
|
249
249
|
// is reused later by the next segment
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -23,14 +23,14 @@ import { TMX_CLEAR_BIT_MASK, TMX_FLIP_H, TMX_FLIP_V, TMX_FLIP_AD } from './const
|
|
|
23
23
|
* @param {TMXTileset} tileset - the corresponding tileset object
|
|
24
24
|
*/
|
|
25
25
|
constructor(x, y, gid, tileset) {
|
|
26
|
-
|
|
26
|
+
let width, height;
|
|
27
27
|
|
|
28
28
|
// call the parent constructor
|
|
29
29
|
super();
|
|
30
30
|
|
|
31
31
|
// determine the tile size
|
|
32
32
|
if (tileset.isCollection) {
|
|
33
|
-
|
|
33
|
+
let image = tileset.getTileImage(gid & TMX_CLEAR_BIT_MASK);
|
|
34
34
|
width = image.width;
|
|
35
35
|
height = image.height;
|
|
36
36
|
} else {
|
|
@@ -127,12 +127,12 @@ import { TMX_CLEAR_BIT_MASK, TMX_FLIP_H, TMX_FLIP_V, TMX_FLIP_AD } from './const
|
|
|
127
127
|
* @returns {Renderable} a me.Sprite object
|
|
128
128
|
*/
|
|
129
129
|
getRenderable(settings) {
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
let renderable;
|
|
131
|
+
let tileset = this.tileset;
|
|
132
132
|
|
|
133
133
|
if (tileset.animations.has(this.tileId)) {
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
let frames = [];
|
|
135
|
+
let frameId = [];
|
|
136
136
|
(tileset.animations.get(this.tileId).frames).forEach((frame) => {
|
|
137
137
|
frameId.push(frame.tileid);
|
|
138
138
|
frames.push({
|
|
@@ -146,7 +146,7 @@ import { TMX_CLEAR_BIT_MASK, TMX_FLIP_H, TMX_FLIP_V, TMX_FLIP_AD } from './const
|
|
|
146
146
|
|
|
147
147
|
} else {
|
|
148
148
|
if (tileset.isCollection === true) {
|
|
149
|
-
|
|
149
|
+
let image = tileset.getTileImage(this.tileId);
|
|
150
150
|
renderable = new Sprite(0, 0,
|
|
151
151
|
Object.assign({
|
|
152
152
|
image: image
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -38,7 +38,7 @@ function readImageLayer(map, data, z) {
|
|
|
38
38
|
applyTMXProperties(data.properties, data);
|
|
39
39
|
|
|
40
40
|
// create the layer
|
|
41
|
-
|
|
41
|
+
let imageLayer = pool.pull("ImageLayer",
|
|
42
42
|
// x/y is deprecated since 0.15 and replace by offsetx/y
|
|
43
43
|
+data.offsetx || +data.x || 0,
|
|
44
44
|
+data.offsety || +data.y || 0,
|
|
@@ -54,7 +54,7 @@ function readImageLayer(map, data, z) {
|
|
|
54
54
|
|
|
55
55
|
|
|
56
56
|
// set some additional flags
|
|
57
|
-
|
|
57
|
+
let visible = typeof(data.visible) !== "undefined" ? data.visible : true;
|
|
58
58
|
imageLayer.setOpacity(visible ? +data.opacity : 0);
|
|
59
59
|
|
|
60
60
|
return imageLayer;
|
|
@@ -87,7 +87,7 @@ function readObjectGroup(map, data, z) {
|
|
|
87
87
|
* @param {object} data - TMX map in JSON format
|
|
88
88
|
* @example
|
|
89
89
|
* // create a new level object based on the TMX JSON object
|
|
90
|
-
*
|
|
90
|
+
* let level = new me.TMXTileMap(levelId, me.loader.getTMX(levelId));
|
|
91
91
|
* // add the level to the game world container
|
|
92
92
|
* level.addTo(me.game.world, true);
|
|
93
93
|
*/
|
|
@@ -249,7 +249,7 @@ function readObjectGroup(map, data, z) {
|
|
|
249
249
|
}
|
|
250
250
|
|
|
251
251
|
// to automatically increment z index
|
|
252
|
-
|
|
252
|
+
let zOrder = 0;
|
|
253
253
|
|
|
254
254
|
// Tileset information
|
|
255
255
|
if (!this.tilesets) {
|
|
@@ -259,7 +259,7 @@ function readObjectGroup(map, data, z) {
|
|
|
259
259
|
|
|
260
260
|
// parse all tileset objects
|
|
261
261
|
if (typeof (data.tilesets) !== "undefined") {
|
|
262
|
-
|
|
262
|
+
let tilesets = data.tilesets;
|
|
263
263
|
tilesets.forEach((tileset) => {
|
|
264
264
|
// add the new tileset
|
|
265
265
|
this.tilesets.add(readTileset(tileset));
|
|
@@ -313,15 +313,15 @@ function readObjectGroup(map, data, z) {
|
|
|
313
313
|
* @param {boolean} [setViewportBounds=false] - if true, set the viewport bounds to the map size, this should be set to true especially if adding a level to the game world container.
|
|
314
314
|
* @example
|
|
315
315
|
* // create a new level object based on the TMX JSON object
|
|
316
|
-
*
|
|
316
|
+
* let level = new me.TMXTileMap(levelId, me.loader.getTMX(levelId));
|
|
317
317
|
* // add the level to the game world container
|
|
318
318
|
* level.addTo(me.game.world, true, true);
|
|
319
319
|
*/
|
|
320
320
|
addTo(container, flatten, setViewportBounds) {
|
|
321
|
-
|
|
322
|
-
|
|
321
|
+
let _sort = container.autoSort;
|
|
322
|
+
let _depth = container.autoDepth;
|
|
323
323
|
|
|
324
|
-
|
|
324
|
+
let levelBounds = this.getBounds();
|
|
325
325
|
|
|
326
326
|
// disable auto-sort and auto-depth
|
|
327
327
|
container.autoSort = false;
|
|
@@ -387,15 +387,15 @@ function readObjectGroup(map, data, z) {
|
|
|
387
387
|
* @returns {Renderable[]} Array of Objects
|
|
388
388
|
*/
|
|
389
389
|
getObjects(flatten) {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
390
|
+
let objects = [];
|
|
391
|
+
let isCollisionGroup = false;
|
|
392
|
+
let targetContainer;
|
|
393
393
|
|
|
394
394
|
// parse the map for objects
|
|
395
395
|
this.readMapObjects(this.data);
|
|
396
396
|
|
|
397
|
-
for (
|
|
398
|
-
|
|
397
|
+
for (let g = 0; g < this.objectGroups.length; g++) {
|
|
398
|
+
let group = this.objectGroups[g];
|
|
399
399
|
|
|
400
400
|
// check if this is the collision shape group
|
|
401
401
|
isCollisionGroup = group.name.toLowerCase().includes(COLLISION_GROUP);
|
|
@@ -419,13 +419,13 @@ function readObjectGroup(map, data, z) {
|
|
|
419
419
|
|
|
420
420
|
// iterate through the group and add all object into their
|
|
421
421
|
// corresponding target Container
|
|
422
|
-
for (
|
|
422
|
+
for (let o = 0; o < group.objects.length; o++) {
|
|
423
423
|
// TMX object settings
|
|
424
|
-
|
|
424
|
+
let settings = group.objects[o];
|
|
425
425
|
// reference to the instantiated object
|
|
426
|
-
|
|
426
|
+
let obj;
|
|
427
427
|
// a reference to the default shape
|
|
428
|
-
|
|
428
|
+
let shape;
|
|
429
429
|
|
|
430
430
|
// Tiled uses 0,0 by default
|
|
431
431
|
if (typeof (settings.anchorPoint) === "undefined") {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -20,7 +20,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
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
|
-
|
|
23
|
+
let i = 0;
|
|
24
24
|
// first gid
|
|
25
25
|
|
|
26
26
|
// tile properties (collidable, etc..)
|
|
@@ -33,8 +33,8 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
33
33
|
|
|
34
34
|
// check if an external tileset is defined
|
|
35
35
|
if (typeof(tileset.source) !== "undefined") {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
let src = tileset.source;
|
|
37
|
+
let ext = getExtension(src);
|
|
38
38
|
if (ext === "tsx" || ext === "json") {
|
|
39
39
|
// load the external tileset (TSX/JSON)
|
|
40
40
|
tileset = getTMX(getBasename(src));
|
|
@@ -83,7 +83,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
83
83
|
*/
|
|
84
84
|
this._lastUpdate = 0;
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
let tiles = tileset.tiles;
|
|
87
87
|
for (i in tiles) {
|
|
88
88
|
if (tiles.hasOwnProperty(i)) {
|
|
89
89
|
if ("animation" in tiles[i]) {
|
|
@@ -98,8 +98,8 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
98
98
|
// set tile properties, if any
|
|
99
99
|
if ("properties" in tiles[i]) {
|
|
100
100
|
if (Array.isArray(tiles[i].properties)) { // JSON (new format)
|
|
101
|
-
|
|
102
|
-
for (
|
|
101
|
+
let tileProperty = {};
|
|
102
|
+
for (let j in tiles[i].properties) {
|
|
103
103
|
tileProperty[tiles[i].properties[j].name] = tiles[i].properties[j].value;
|
|
104
104
|
}
|
|
105
105
|
this.setTileProperty(+tiles[i].id + this.firstgid, tileProperty);
|
|
@@ -108,7 +108,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
if ("image" in tiles[i]) {
|
|
111
|
-
|
|
111
|
+
let image = getImage(tiles[i].image);
|
|
112
112
|
if (!image) {
|
|
113
113
|
throw new Error("melonJS: '" + tiles[i].image + "' file for tile '" + (+i + this.firstgid) + "' not found!");
|
|
114
114
|
}
|
|
@@ -119,14 +119,14 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
119
119
|
|
|
120
120
|
this.isCollection = this.imageCollection.length > 0;
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
let offset = tileset.tileoffset;
|
|
123
123
|
if (offset) {
|
|
124
124
|
this.tileoffset.x = +offset.x;
|
|
125
125
|
this.tileoffset.y = +offset.y;
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
// set tile properties, if any (JSON old format)
|
|
129
|
-
|
|
129
|
+
let tileInfo = tileset.tileproperties;
|
|
130
130
|
if (tileInfo) {
|
|
131
131
|
for (i in tileInfo) {
|
|
132
132
|
if (tileInfo.hasOwnProperty(i)) {
|
|
@@ -155,8 +155,8 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
155
155
|
this.atlas = this.texture.getAtlas();
|
|
156
156
|
|
|
157
157
|
// calculate the number of tiles per horizontal line
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
let hTileCount = +tileset.columns || Math.round(this.image.width / (this.tilewidth + this.spacing));
|
|
159
|
+
let vTileCount = Math.round(this.image.height / (this.tileheight + this.spacing));
|
|
160
160
|
if (tileset.tilecount % hTileCount > 0) {
|
|
161
161
|
++vTileCount;
|
|
162
162
|
}
|
|
@@ -205,7 +205,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
205
205
|
* @returns {number} View tile ID
|
|
206
206
|
*/
|
|
207
207
|
getViewTileId(gid) {
|
|
208
|
-
|
|
208
|
+
let localId = gid - this.firstgid;
|
|
209
209
|
|
|
210
210
|
if (this.animations.has(localId)) {
|
|
211
211
|
// return the current corresponding tile id if animated
|
|
@@ -226,7 +226,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
226
226
|
|
|
227
227
|
// update tile animations
|
|
228
228
|
update(dt) {
|
|
229
|
-
|
|
229
|
+
let duration = 0,
|
|
230
230
|
now = timer.getTime(),
|
|
231
231
|
result = false;
|
|
232
232
|
|
|
@@ -274,7 +274,7 @@ import { getTMX, getImage } from '../../loader/loader.js';
|
|
|
274
274
|
);
|
|
275
275
|
} else {
|
|
276
276
|
// use the tileset texture
|
|
277
|
-
|
|
277
|
+
let offset = this.atlas[this.getViewTileId(tmxTile.tileId)].offset;
|
|
278
278
|
// draw the tile
|
|
279
279
|
renderer.drawImage(
|
|
280
280
|
this.image,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine -
|
|
2
|
+
* melonJS Game Engine - v15.1.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
|
|
@@ -43,13 +43,13 @@ import { TMX_CLEAR_BIT_MASK } from './constants.js';
|
|
|
43
43
|
* @returns {TMXTileset} corresponding tileset
|
|
44
44
|
*/
|
|
45
45
|
getTilesetByGid(gid) {
|
|
46
|
-
|
|
46
|
+
let invalidRange = -1;
|
|
47
47
|
|
|
48
48
|
// clear the gid of all flip/rotation flags
|
|
49
49
|
gid &= TMX_CLEAR_BIT_MASK;
|
|
50
50
|
|
|
51
51
|
// cycle through all tilesets
|
|
52
|
-
for (
|
|
52
|
+
for (let i = 0, len = this.tilesets.length; i < len; i++) {
|
|
53
53
|
// return the corresponding tileset if matching
|
|
54
54
|
if (this.tilesets[i].contains(gid)) {
|
|
55
55
|
return this.tilesets[i];
|