melonjs 15.0.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/README.md +4 -4
- 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 +17 -17
- 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 +53 -53
- 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 +5 -5
- 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 +58 -58
- 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 +21 -21
- 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 +11 -11
- 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 -63
- 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 +2 -2
- 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 +10 -9
- package/dist/melonjs.mjs/text/textmetrics.js +15 -15
- package/dist/melonjs.mjs/text/textstyle.js +1 -1
- 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 +35 -109
- package/dist/melonjs.mjs/video/renderer.js +74 -7
- package/dist/melonjs.mjs/video/texture/atlas.js +37 -37
- 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 +3 -3
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +5 -5
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +18 -15
- 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 +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 +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 +55 -38
- package/dist/melonjs.module.js +1747 -1809
- package/dist/types/application/application.d.ts +11 -8
- package/dist/types/audio/audio.d.ts +3 -3
- package/dist/types/index.d.ts +4 -3
- 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/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 -11
- 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 +1 -1
- package/dist/types/utils/array.d.ts +2 -2
- package/dist/types/video/canvas/canvas_renderer.d.ts +8 -76
- package/dist/types/video/renderer.d.ts +48 -0
- 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/glshader.d.ts +1 -1
- package/dist/types/video/webgl/webgl_renderer.d.ts +13 -9
- package/package.json +14 -14
- 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 +16 -16
- 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 +52 -52
- 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 +3 -2
- 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 +20 -20
- 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/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 +10 -10
- 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 -65
- package/src/state/stage.js +6 -6
- package/src/state/state.js +14 -14
- package/src/system/device.js +1 -1
- 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 +9 -8
- package/src/text/textmetrics.js +14 -14
- 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 +34 -108
- package/src/video/renderer.js +72 -5
- package/src/video/texture/atlas.js +36 -36
- 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 +2 -2
- package/src/video/webgl/compositors/compositor.js +4 -4
- package/src/video/webgl/compositors/primitive_compositor.js +4 -4
- package/src/video/webgl/compositors/quad_compositor.js +17 -14
- package/src/video/webgl/glshader.js +6 -6
- 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 +54 -37
package/src/input/keyboard.js
CHANGED
|
@@ -3,30 +3,30 @@ import * as event from "./../system/event.js";
|
|
|
3
3
|
import { isMobile } from "./../system/platform.js";
|
|
4
4
|
|
|
5
5
|
// corresponding actions
|
|
6
|
-
|
|
6
|
+
let _keyStatus = {};
|
|
7
7
|
|
|
8
8
|
// lock enable flag for keys
|
|
9
|
-
|
|
9
|
+
let _keyLock = {};
|
|
10
10
|
// actual lock status of each key
|
|
11
|
-
|
|
11
|
+
let _keyLocked = {};
|
|
12
12
|
|
|
13
13
|
// List of binded keys being held
|
|
14
|
-
|
|
14
|
+
let _keyRefs = {};
|
|
15
15
|
|
|
16
16
|
// whether default event should be prevented for a given keypress
|
|
17
|
-
|
|
17
|
+
let _preventDefaultForKeys = {};
|
|
18
18
|
|
|
19
19
|
// list of binded keys
|
|
20
|
-
|
|
20
|
+
let _keyBindings = {};
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* key down event
|
|
24
24
|
* @ignore
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
let keyDownEvent = function (e, keyCode, mouseButton) {
|
|
27
27
|
|
|
28
28
|
keyCode = keyCode || e.keyCode || e.button;
|
|
29
|
-
|
|
29
|
+
let action = _keyBindings[keyCode];
|
|
30
30
|
|
|
31
31
|
// publish a message for keydown event
|
|
32
32
|
event.emit(event.KEYDOWN,
|
|
@@ -37,7 +37,7 @@ var keyDownEvent = function (e, keyCode, mouseButton) {
|
|
|
37
37
|
|
|
38
38
|
if (action) {
|
|
39
39
|
if (!_keyLocked[action]) {
|
|
40
|
-
|
|
40
|
+
let trigger = (typeof mouseButton !== "undefined") ? mouseButton : keyCode;
|
|
41
41
|
if (!_keyRefs[action][trigger]) {
|
|
42
42
|
_keyStatus[action]++;
|
|
43
43
|
_keyRefs[action][trigger] = true;
|
|
@@ -61,15 +61,15 @@ var keyDownEvent = function (e, keyCode, mouseButton) {
|
|
|
61
61
|
* key up event
|
|
62
62
|
* @ignore
|
|
63
63
|
*/
|
|
64
|
-
|
|
64
|
+
let keyUpEvent = function (e, keyCode, mouseButton) {
|
|
65
65
|
keyCode = keyCode || e.keyCode || e.button;
|
|
66
|
-
|
|
66
|
+
let action = _keyBindings[keyCode];
|
|
67
67
|
|
|
68
68
|
// publish a message for keydown event
|
|
69
69
|
event.emit(event.KEYUP, action, keyCode);
|
|
70
70
|
|
|
71
71
|
if (action) {
|
|
72
|
-
|
|
72
|
+
let trigger = (typeof mouseButton !== "undefined") ? mouseButton : keyCode;
|
|
73
73
|
_keyRefs[action][trigger] = undefined;
|
|
74
74
|
|
|
75
75
|
if (_keyStatus[action] > 0) {
|
|
@@ -102,7 +102,7 @@ var keyUpEvent = function (e, keyCode, mouseButton) {
|
|
|
102
102
|
* @name keyBoardEventTarget
|
|
103
103
|
* @memberof input
|
|
104
104
|
*/
|
|
105
|
-
export
|
|
105
|
+
export let keyBoardEventTarget = null;
|
|
106
106
|
|
|
107
107
|
/**
|
|
108
108
|
* standard keyboard constants
|
|
@@ -451,7 +451,7 @@ export function unlockKey(action) {
|
|
|
451
451
|
*/
|
|
452
452
|
export function unbindKey(keycode) {
|
|
453
453
|
// clear the event status
|
|
454
|
-
|
|
454
|
+
let keybinding = _keyBindings[keycode];
|
|
455
455
|
_keyStatus[keybinding] = 0;
|
|
456
456
|
_keyLock[keybinding] = false;
|
|
457
457
|
_keyRefs[keybinding] = {};
|
package/src/input/pointer.js
CHANGED
|
@@ -16,22 +16,22 @@ import { game } from "../index.js";
|
|
|
16
16
|
* @type {Array.<Vector2d>}
|
|
17
17
|
* @ignore
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
let T_POINTERS = [];
|
|
20
20
|
|
|
21
21
|
// list of registered Event handlers
|
|
22
|
-
|
|
22
|
+
let eventHandlers = new Map();
|
|
23
23
|
|
|
24
24
|
// a cache rect represeting the current pointer area
|
|
25
|
-
|
|
25
|
+
let currentPointer;
|
|
26
26
|
|
|
27
27
|
// some useful flags
|
|
28
|
-
|
|
28
|
+
let pointerInitialized = false;
|
|
29
29
|
|
|
30
30
|
// Track last event timestamp to prevent firing events out of order
|
|
31
|
-
|
|
31
|
+
let lastTimeStamp = 0;
|
|
32
32
|
|
|
33
33
|
// "active" list of supported events
|
|
34
|
-
|
|
34
|
+
let activeEventList = [];
|
|
35
35
|
|
|
36
36
|
// internal constants
|
|
37
37
|
const WHEEL = ["wheel"];
|
|
@@ -93,14 +93,14 @@ const pointerEventMap = {
|
|
|
93
93
|
* Array of normalized events (mouse, touch, pointer)
|
|
94
94
|
* @ignore
|
|
95
95
|
*/
|
|
96
|
-
|
|
96
|
+
let normalizedEvents = [];
|
|
97
97
|
|
|
98
98
|
/**
|
|
99
99
|
* addEventListerner for the specified event list and callback
|
|
100
100
|
* @ignore
|
|
101
101
|
*/
|
|
102
102
|
function registerEventListener(eventList, callback) {
|
|
103
|
-
for (
|
|
103
|
+
for (let x = 0; x < eventList.length; x++) {
|
|
104
104
|
if (POINTER_MOVE.indexOf(eventList[x]) === -1) {
|
|
105
105
|
pointerEventTarget.addEventListener(eventList[x], callback, { passive: (preventDefault === false) });
|
|
106
106
|
}
|
|
@@ -118,7 +118,7 @@ function enablePointerEvent() {
|
|
|
118
118
|
currentPointer = new Rect(0, 0, 1, 1);
|
|
119
119
|
|
|
120
120
|
// instantiate a pool of pointer catched
|
|
121
|
-
for (
|
|
121
|
+
for (let v = 0; v < device.maxTouchPoints; v++) {
|
|
122
122
|
T_POINTERS.push(new Pointer());
|
|
123
123
|
}
|
|
124
124
|
|
|
@@ -158,8 +158,8 @@ function enablePointerEvent() {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
// if time interval <= 16, disable the feature
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
let i;
|
|
162
|
+
let events = findAllActiveEvents(activeEventList, POINTER_MOVE);
|
|
163
163
|
if (throttlingInterval < 17) {
|
|
164
164
|
for (i = 0; i < events.length; i++) {
|
|
165
165
|
if (activeEventList.indexOf(events[i]) !== -1) {
|
|
@@ -209,8 +209,8 @@ function enablePointerEvent() {
|
|
|
209
209
|
* @ignore
|
|
210
210
|
*/
|
|
211
211
|
function findActiveEvent(activeEventList, eventTypes) {
|
|
212
|
-
for (
|
|
213
|
-
|
|
212
|
+
for (let i = 0; i < eventTypes.length; i++) {
|
|
213
|
+
let event = activeEventList.indexOf(eventTypes[i]);
|
|
214
214
|
if (event !== -1) {
|
|
215
215
|
return eventTypes[i];
|
|
216
216
|
}
|
|
@@ -221,9 +221,9 @@ function findActiveEvent(activeEventList, eventTypes) {
|
|
|
221
221
|
* @ignore
|
|
222
222
|
*/
|
|
223
223
|
function findAllActiveEvents(activeEventList, eventTypes) {
|
|
224
|
-
|
|
225
|
-
for (
|
|
226
|
-
|
|
224
|
+
let events = [];
|
|
225
|
+
for (let i = 0; i < eventTypes.length; i++) {
|
|
226
|
+
let event = activeEventList.indexOf(eventTypes[i]);
|
|
227
227
|
if (event !== -1) {
|
|
228
228
|
events.push(eventTypes[i]);
|
|
229
229
|
}
|
|
@@ -236,10 +236,10 @@ function findAllActiveEvents(activeEventList, eventTypes) {
|
|
|
236
236
|
* @ignore
|
|
237
237
|
*/
|
|
238
238
|
function triggerEvent(handlers, type, pointer, pointerId) {
|
|
239
|
-
|
|
239
|
+
let callback;
|
|
240
240
|
if (handlers.callbacks[type]) {
|
|
241
241
|
handlers.pointerId = pointerId;
|
|
242
|
-
for (
|
|
242
|
+
for (let i = handlers.callbacks[type].length - 1; (i >= 0) && (callback = handlers.callbacks[type][i]); i--) {
|
|
243
243
|
if (callback(pointer) === false) {
|
|
244
244
|
// stop propagating the event if return false
|
|
245
245
|
return true;
|
|
@@ -254,12 +254,12 @@ function triggerEvent(handlers, type, pointer, pointerId) {
|
|
|
254
254
|
* @ignore
|
|
255
255
|
*/
|
|
256
256
|
function dispatchEvent(normalizedEvents) {
|
|
257
|
-
|
|
257
|
+
let handled = false;
|
|
258
258
|
|
|
259
259
|
while (normalizedEvents.length > 0) {
|
|
260
260
|
|
|
261
261
|
// keep a reference to the last item
|
|
262
|
-
|
|
262
|
+
let pointer = normalizedEvents.pop();
|
|
263
263
|
// and put it back into our cache
|
|
264
264
|
T_POINTERS.push(pointer);
|
|
265
265
|
|
|
@@ -286,18 +286,18 @@ function dispatchEvent(normalizedEvents) {
|
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
// fetch valid candiates from the game world container
|
|
289
|
-
|
|
289
|
+
let candidates = game.world.broadphase.retrieve(currentPointer, game.world._sortReverseZ);
|
|
290
290
|
|
|
291
291
|
// add the main game viewport to the list of candidates
|
|
292
292
|
candidates = candidates.concat([ game.viewport ]);
|
|
293
293
|
|
|
294
|
-
for (
|
|
294
|
+
for (let c = candidates.length, candidate; c--, (candidate = candidates[c]);) {
|
|
295
295
|
if (eventHandlers.has(candidate) && (candidate.isKinematic !== true)) {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
296
|
+
let handlers = eventHandlers.get(candidate);
|
|
297
|
+
let region = handlers.region;
|
|
298
|
+
let ancestor = region.ancestor;
|
|
299
|
+
let bounds = region.getBounds();
|
|
300
|
+
let eventInBounds = false;
|
|
301
301
|
|
|
302
302
|
if (region.isFloating === true) {
|
|
303
303
|
pointer.gameX = pointer.gameLocalX = pointer.gameScreenX;
|
|
@@ -310,7 +310,7 @@ function dispatchEvent(normalizedEvents) {
|
|
|
310
310
|
// adjust gameLocalX to specify coordinates
|
|
311
311
|
// within the region ancestor container
|
|
312
312
|
if (typeof ancestor !== "undefined") {
|
|
313
|
-
|
|
313
|
+
let parentBounds = ancestor.getBounds();
|
|
314
314
|
pointer.gameLocalX = pointer.gameX - parentBounds.x;
|
|
315
315
|
pointer.gameLocalY = pointer.gameY - parentBounds.y;
|
|
316
316
|
}
|
|
@@ -398,13 +398,13 @@ function dispatchEvent(normalizedEvents) {
|
|
|
398
398
|
* @ignore
|
|
399
399
|
*/
|
|
400
400
|
function normalizeEvent(originalEvent) {
|
|
401
|
-
|
|
401
|
+
let _pointer;
|
|
402
402
|
|
|
403
403
|
// PointerEvent or standard Mouse event
|
|
404
404
|
if (device.touchEvent && originalEvent.changedTouches) {
|
|
405
405
|
// iOS/Android Touch event
|
|
406
|
-
for (
|
|
407
|
-
|
|
406
|
+
for (let i = 0, l = originalEvent.changedTouches.length; i < l; i++) {
|
|
407
|
+
let touchEvent = originalEvent.changedTouches[i];
|
|
408
408
|
_pointer = T_POINTERS.pop();
|
|
409
409
|
_pointer.setEvent(
|
|
410
410
|
originalEvent,
|
|
@@ -461,7 +461,7 @@ function onPointerEvent(e) {
|
|
|
461
461
|
normalizeEvent(e);
|
|
462
462
|
|
|
463
463
|
// remember/use the first "primary" normalized event for pointer.bind
|
|
464
|
-
|
|
464
|
+
let button = normalizedEvents[0].button;
|
|
465
465
|
|
|
466
466
|
// dispatch event to registered objects
|
|
467
467
|
if (dispatchEvent(normalizedEvents) || e.type === "wheel") {
|
|
@@ -471,7 +471,7 @@ function onPointerEvent(e) {
|
|
|
471
471
|
}
|
|
472
472
|
}
|
|
473
473
|
|
|
474
|
-
|
|
474
|
+
let keycode = pointer.bind[button];
|
|
475
475
|
|
|
476
476
|
// check if mapped to a key
|
|
477
477
|
if (keycode) {
|
|
@@ -490,7 +490,7 @@ function onPointerEvent(e) {
|
|
|
490
490
|
* @name pointerEventTarget
|
|
491
491
|
* @memberof input
|
|
492
492
|
*/
|
|
493
|
-
export
|
|
493
|
+
export let pointerEventTarget = null;
|
|
494
494
|
|
|
495
495
|
/**
|
|
496
496
|
* Pointer information (current position and size)
|
|
@@ -499,7 +499,7 @@ function onPointerEvent(e) {
|
|
|
499
499
|
* @name pointer
|
|
500
500
|
* @memberof input
|
|
501
501
|
*/
|
|
502
|
-
export
|
|
502
|
+
export let pointer = new Pointer(0, 0, 1, 1);
|
|
503
503
|
|
|
504
504
|
|
|
505
505
|
/**
|
|
@@ -509,7 +509,7 @@ export var pointer = new Pointer(0, 0, 1, 1);
|
|
|
509
509
|
* @name locked
|
|
510
510
|
* @memberof input
|
|
511
511
|
*/
|
|
512
|
-
export
|
|
512
|
+
export let locked = false;
|
|
513
513
|
|
|
514
514
|
/**
|
|
515
515
|
* time interval for event throttling in milliseconds<br>
|
|
@@ -520,7 +520,7 @@ export var locked = false;
|
|
|
520
520
|
* @name throttlingInterval
|
|
521
521
|
* @memberof input
|
|
522
522
|
*/
|
|
523
|
-
export
|
|
523
|
+
export let throttlingInterval;
|
|
524
524
|
|
|
525
525
|
/**
|
|
526
526
|
* Translate the specified x and y values from the global (absolute)
|
|
@@ -535,17 +535,17 @@ export var throttlingInterval;
|
|
|
535
535
|
* @example
|
|
536
536
|
* onMouseEvent : function (pointer) {
|
|
537
537
|
* // convert the given into local (viewport) relative coordinates
|
|
538
|
-
*
|
|
538
|
+
* let pos = me.input.globalToLocal(pointer.clientX, pointer.clientY);
|
|
539
539
|
* // do something with pos !
|
|
540
540
|
* };
|
|
541
541
|
*/
|
|
542
542
|
export function globalToLocal(x, y, v) {
|
|
543
543
|
v = v || pool.pull("Vector2d");
|
|
544
|
-
|
|
545
|
-
|
|
544
|
+
let rect = device.getElementBounds(renderer.getCanvas());
|
|
545
|
+
let pixelRatio = globalThis.devicePixelRatio || 1;
|
|
546
546
|
x -= rect.left + (globalThis.pageXOffset || 0);
|
|
547
547
|
y -= rect.top + (globalThis.pageYOffset || 0);
|
|
548
|
-
|
|
548
|
+
let scale = renderer.scaleRatio;
|
|
549
549
|
if (scale.x !== 1.0 || scale.y !== 1.0) {
|
|
550
550
|
x /= scale.x;
|
|
551
551
|
y /= scale.y;
|
|
@@ -586,8 +586,8 @@ export function setTouchAction(element, value) {
|
|
|
586
586
|
* me.input.bindPointer(me.input.pointer.RIGHT, me.input.KEY.X);
|
|
587
587
|
*/
|
|
588
588
|
export function bindPointer() {
|
|
589
|
-
|
|
590
|
-
|
|
589
|
+
let button = (arguments.length < 2) ? pointer.LEFT : arguments[0];
|
|
590
|
+
let keyCode = (arguments.length < 2) ? arguments[0] : arguments[1];
|
|
591
591
|
|
|
592
592
|
// make sure the mouse is initialized
|
|
593
593
|
enablePointerEvent();
|
|
@@ -645,7 +645,7 @@ export function unbindPointer(button) {
|
|
|
645
645
|
* // onActivate function
|
|
646
646
|
* onActivateEvent: function () {
|
|
647
647
|
* // register on the 'pointerdown' event
|
|
648
|
-
* me.input.registerPointerEvent('pointerdown', this, this.pointerDown
|
|
648
|
+
* me.input.registerPointerEvent('pointerdown', this, (e) => this.pointerDown(e));
|
|
649
649
|
* },
|
|
650
650
|
*
|
|
651
651
|
* // pointerDown event callback
|
|
@@ -668,7 +668,7 @@ export function registerPointerEvent(eventType, region, callback) {
|
|
|
668
668
|
throw new Error("registerPointerEvent: region for " + toString(region) + " event is undefined ");
|
|
669
669
|
}
|
|
670
670
|
|
|
671
|
-
|
|
671
|
+
let eventTypes = findAllActiveEvents(activeEventList, pointerEventMap[eventType]);
|
|
672
672
|
|
|
673
673
|
// register the event
|
|
674
674
|
if (!eventHandlers.has(region)) {
|
|
@@ -680,8 +680,8 @@ export function registerPointerEvent(eventType, region, callback) {
|
|
|
680
680
|
}
|
|
681
681
|
|
|
682
682
|
// allocate array if not defined
|
|
683
|
-
|
|
684
|
-
for (
|
|
683
|
+
let handlers = eventHandlers.get(region);
|
|
684
|
+
for (let i = 0; i < eventTypes.length; i++) {
|
|
685
685
|
eventType = eventTypes[i];
|
|
686
686
|
if (handlers.callbacks[eventType]) {
|
|
687
687
|
handlers.callbacks[eventType].push(callback);
|
|
@@ -710,11 +710,11 @@ export function releasePointerEvent(eventType, region, callback) {
|
|
|
710
710
|
}
|
|
711
711
|
|
|
712
712
|
// convert to supported event type if pointerEvent not natively supported
|
|
713
|
-
|
|
713
|
+
let eventTypes = findAllActiveEvents(activeEventList, pointerEventMap[eventType]);
|
|
714
714
|
|
|
715
|
-
|
|
715
|
+
let handlers = eventHandlers.get(region);
|
|
716
716
|
if (typeof (handlers) !== "undefined") {
|
|
717
|
-
for (
|
|
717
|
+
for (let i = 0; i < eventTypes.length; i++) {
|
|
718
718
|
eventType = eventTypes[i];
|
|
719
719
|
if (handlers.callbacks[eventType]) {
|
|
720
720
|
if (typeof (callback) !== "undefined") {
|
|
@@ -748,7 +748,7 @@ export function releasePointerEvent(eventType, region, callback) {
|
|
|
748
748
|
*/
|
|
749
749
|
export function releaseAllPointerEvents(region) {
|
|
750
750
|
if (eventHandlers.has(region)) {
|
|
751
|
-
for (
|
|
751
|
+
for (let i = 0; i < pointerEventList.length; i++) {
|
|
752
752
|
releasePointerEvent(pointerEventList[i], region);
|
|
753
753
|
}
|
|
754
754
|
}
|
|
@@ -771,7 +771,7 @@ export function releaseAllPointerEvents(region) {
|
|
|
771
771
|
*/
|
|
772
772
|
export function requestPointerLock() {
|
|
773
773
|
if (device.hasPointerLockSupport) {
|
|
774
|
-
|
|
774
|
+
let element = game.getParentElement();
|
|
775
775
|
element.requestPointerLock();
|
|
776
776
|
return true;
|
|
777
777
|
}
|
package/src/lang/console.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* @param {string} version - the version since when the lass,function or property is deprecated
|
|
7
7
|
*/
|
|
8
8
|
export function warning(deprecated, replacement, version) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const msg = "melonJS: %s is deprecated since version %s, please use %s";
|
|
10
|
+
let stack = new Error().stack;
|
|
11
11
|
|
|
12
12
|
if (console.groupCollapsed) {
|
|
13
13
|
console.groupCollapsed(
|
package/src/lang/deprecated.js
CHANGED
|
@@ -106,7 +106,7 @@ Renderer.prototype.getScreenContext = function() {
|
|
|
106
106
|
* @param {object} settings - See {@link Sprite}
|
|
107
107
|
*/
|
|
108
108
|
constructor(x, y, settings) {
|
|
109
|
-
warning("GUI_Object", "UISpriteElement", "14.0.0");
|
|
109
|
+
warning("GUI_Object", "UISpriteElement or UITextButton", "14.0.0");
|
|
110
110
|
super(x, y, settings);
|
|
111
111
|
}
|
|
112
112
|
}
|
package/src/level/level.js
CHANGED
|
@@ -7,11 +7,11 @@ import TMXTileMap from "./tiled/TMXTileMap.js";
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
// our levels
|
|
10
|
-
|
|
10
|
+
let levels = {};
|
|
11
11
|
// level index table
|
|
12
|
-
|
|
12
|
+
let levelIdx = [];
|
|
13
13
|
// current level index
|
|
14
|
-
|
|
14
|
+
let currentLevelIdx = 0;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* @ignore
|
|
@@ -58,7 +58,7 @@ function safeLoadLevel(levelId, options, restart) {
|
|
|
58
58
|
* @ignore
|
|
59
59
|
*/
|
|
60
60
|
function loadTMXLevel(levelId, container, flatten, setViewportBounds) {
|
|
61
|
-
|
|
61
|
+
let level = levels[levelId];
|
|
62
62
|
|
|
63
63
|
// reset the GUID generator
|
|
64
64
|
// and pass the level id as parameter
|
|
@@ -77,7 +77,7 @@ function loadTMXLevel(levelId, container, flatten, setViewportBounds) {
|
|
|
77
77
|
* @namespace level
|
|
78
78
|
*/
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
let level = {
|
|
81
81
|
|
|
82
82
|
/**
|
|
83
83
|
* add a level into the game manager (usually called by the preloader)
|
|
@@ -132,7 +132,7 @@ var level = {
|
|
|
132
132
|
* @example
|
|
133
133
|
* // the game assets to be be preloaded
|
|
134
134
|
* // TMX maps
|
|
135
|
-
*
|
|
135
|
+
* let resources = [
|
|
136
136
|
* {name: "a4_level1", type: "tmx", src: "data/level/a4_level1.tmx"},
|
|
137
137
|
* {name: "a4_level2", type: "tmx", src: "data/level/a4_level2.tmx"},
|
|
138
138
|
* {name: "a4_level3", type: "tmx", src: "data/level/a4_level3.tmx"},
|
|
@@ -146,7 +146,7 @@ var level = {
|
|
|
146
146
|
* ...
|
|
147
147
|
* ...
|
|
148
148
|
* // load a level into a specific container
|
|
149
|
-
*
|
|
149
|
+
* let levelContainer = new me.Container();
|
|
150
150
|
* me.level.load("a4_level2", {container:levelContainer});
|
|
151
151
|
* // add a simple transformation
|
|
152
152
|
* levelContainer.currentTransform.translate(levelContainer.width / 2, levelContainer.height / 2 );
|
|
@@ -171,7 +171,7 @@ var level = {
|
|
|
171
171
|
if (levels[levelId] instanceof TMXTileMap) {
|
|
172
172
|
|
|
173
173
|
// check the status of the state mngr
|
|
174
|
-
|
|
174
|
+
let wasRunning = state.isRunning();
|
|
175
175
|
|
|
176
176
|
if (wasRunning) {
|
|
177
177
|
// stop the game loop to avoid
|
|
@@ -57,7 +57,7 @@ export default class TMXGroup {
|
|
|
57
57
|
*/
|
|
58
58
|
this.objects = [];
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
let visible = typeof(data.visible) !== "undefined" ? data.visible : true;
|
|
61
61
|
this.opacity = (visible === true) ? clamp(+data.opacity || 1.0, 0.0, 1.0) : 0;
|
|
62
62
|
|
|
63
63
|
// check if we have any user-defined properties
|
|
@@ -73,7 +73,7 @@ export default class TMXGroup {
|
|
|
73
73
|
|
|
74
74
|
if (data.layers) {
|
|
75
75
|
data.layers.forEach((data) => {
|
|
76
|
-
|
|
76
|
+
let layer = new TMXLayer(map, data, map.tilewidth, map.tileheight, map.orientation, map.tilesets, z++);
|
|
77
77
|
// set a renderer
|
|
78
78
|
layer.setRenderer(map.getRenderer());
|
|
79
79
|
// resize container accordingly
|
|
@@ -12,10 +12,10 @@ import { game } from "../../index.js";
|
|
|
12
12
|
*/
|
|
13
13
|
function initArray(rows, cols) {
|
|
14
14
|
// initialize the array
|
|
15
|
-
|
|
16
|
-
for (
|
|
15
|
+
let array = new Array(cols);
|
|
16
|
+
for (let col = 0; col < cols; col++) {
|
|
17
17
|
array[col] = new Array(rows);
|
|
18
|
-
for (
|
|
18
|
+
for (let row = 0; row < rows; row++) {
|
|
19
19
|
array[col][row] = null;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -27,8 +27,8 @@ function initArray(rows, cols) {
|
|
|
27
27
|
* @ignore
|
|
28
28
|
*/
|
|
29
29
|
function setLayerData(layer, bounds, data) {
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
let idx = 0;
|
|
31
|
+
let width, height;
|
|
32
32
|
|
|
33
33
|
// layer provide rows and cols, chunk width and height
|
|
34
34
|
if (typeof bounds.rows === "undefined") {
|
|
@@ -39,10 +39,10 @@ function setLayerData(layer, bounds, data) {
|
|
|
39
39
|
height = bounds.rows;
|
|
40
40
|
}
|
|
41
41
|
// set everything
|
|
42
|
-
for (
|
|
43
|
-
for (
|
|
42
|
+
for (let y = 0; y < height; y++) {
|
|
43
|
+
for (let x = 0; x < width; x++) {
|
|
44
44
|
// get the value of the gid
|
|
45
|
-
|
|
45
|
+
let gid = data[idx++];
|
|
46
46
|
// fill the array
|
|
47
47
|
if (gid !== 0) {
|
|
48
48
|
// add a new tile to the layer
|
|
@@ -58,10 +58,10 @@ function setLayerData(layer, bounds, data) {
|
|
|
58
58
|
*/
|
|
59
59
|
function preRenderLayer(layer, renderer) {
|
|
60
60
|
// set everything
|
|
61
|
-
for (
|
|
62
|
-
for (
|
|
61
|
+
for (let y = 0; y < layer.rows; y++) {
|
|
62
|
+
for (let x = 0; x < layer.cols; x++) {
|
|
63
63
|
// get the value of the gid
|
|
64
|
-
|
|
64
|
+
let tile = layer.layerData[x][y];
|
|
65
65
|
// draw the tile if defined
|
|
66
66
|
if (tile instanceof Tile) {
|
|
67
67
|
// add a new tile to the layer
|
|
@@ -127,8 +127,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
127
127
|
"width" : 0,
|
|
128
128
|
"height" : 0
|
|
129
129
|
};
|
|
130
|
-
for (
|
|
131
|
-
|
|
130
|
+
for (let i = 0; i < this.tilesets.length; i++) {
|
|
131
|
+
let tileset = this.tilesets.getTilesetByIndex(i);
|
|
132
132
|
this.maxTileSize.width = Math.max(this.maxTileSize.width, tileset.tilewidth);
|
|
133
133
|
this.maxTileSize.height = Math.max(this.maxTileSize.height, tileset.tileheight);
|
|
134
134
|
}
|
|
@@ -171,7 +171,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
171
171
|
this.rows = +data.height;
|
|
172
172
|
|
|
173
173
|
// layer opacity
|
|
174
|
-
|
|
174
|
+
let visible = typeof(data.visible) !== "undefined" ? +data.visible : 1;
|
|
175
175
|
this.setOpacity(visible ? +data.opacity : 0);
|
|
176
176
|
|
|
177
177
|
// layer tint
|
|
@@ -241,8 +241,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
if (this.tilesets) {
|
|
244
|
-
|
|
245
|
-
for (
|
|
244
|
+
let tileset = this.tilesets.tilesets;
|
|
245
|
+
for (let i = 0; i < tileset.length; i++) {
|
|
246
246
|
if (tileset[i].isAnimated) {
|
|
247
247
|
this.animatedTilesets.push(tileset[i]);
|
|
248
248
|
}
|
|
@@ -280,7 +280,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
280
280
|
* @param {TMXRenderer} renderer
|
|
281
281
|
* @example
|
|
282
282
|
* // use the parent map default renderer
|
|
283
|
-
*
|
|
283
|
+
* let layer = new me.TMXLayer(...);
|
|
284
284
|
* layer.setRenderer(map.getRenderer());
|
|
285
285
|
*/
|
|
286
286
|
setRenderer(renderer) {
|
|
@@ -302,7 +302,7 @@ function preRenderLayer(layer, renderer) {
|
|
|
302
302
|
* @returns {number} TileId or null if there is no Tile at the given position
|
|
303
303
|
*/
|
|
304
304
|
getTileId(x, y) {
|
|
305
|
-
|
|
305
|
+
let tile = this.getTile(x, y);
|
|
306
306
|
return (tile ? tile.tileId : null);
|
|
307
307
|
}
|
|
308
308
|
|
|
@@ -313,15 +313,15 @@ function preRenderLayer(layer, renderer) {
|
|
|
313
313
|
* @returns {Tile} corresponding tile or null if there is no defined tile at the coordinate or if outside of the layer bounds
|
|
314
314
|
* @example
|
|
315
315
|
* // get the TMX Map Layer called "Front layer"
|
|
316
|
-
*
|
|
316
|
+
* let layer = me.game.world.getChildByName("Front Layer")[0];
|
|
317
317
|
* // get the tile object corresponding to the latest pointer position
|
|
318
|
-
*
|
|
318
|
+
* let tile = layer.getTile(me.input.pointer.x, me.input.pointer.y);
|
|
319
319
|
*/
|
|
320
320
|
getTile(x, y) {
|
|
321
|
-
|
|
321
|
+
let tile = null;
|
|
322
322
|
|
|
323
323
|
if (this.contains(x, y)) {
|
|
324
|
-
|
|
324
|
+
let coord = this.getRenderer().pixelToTileCoords(x, y, pool.pull("Vector2d"));
|
|
325
325
|
tile = this.cellAt(coord.x, coord.y);
|
|
326
326
|
pool.push(coord);
|
|
327
327
|
}
|
|
@@ -363,13 +363,13 @@ function preRenderLayer(layer, renderer) {
|
|
|
363
363
|
* @returns {Tile} corresponding tile or null if there is no defined tile at the position or if outside of the layer bounds
|
|
364
364
|
* @example
|
|
365
365
|
* // return the first tile at offset 0, 0
|
|
366
|
-
*
|
|
366
|
+
* let tile = layer.cellAt(0, 0);
|
|
367
367
|
*/
|
|
368
368
|
cellAt(x, y, boundsCheck) {
|
|
369
|
-
|
|
370
|
-
|
|
369
|
+
let _x = ~~x;
|
|
370
|
+
let _y = ~~y;
|
|
371
371
|
|
|
372
|
-
|
|
372
|
+
let renderer = this.getRenderer();
|
|
373
373
|
// boundsCheck only used internally by the tiled renderer, when the layer bound check was already done
|
|
374
374
|
if (boundsCheck === false || (_x >= 0 && _x < renderer.cols && _y >= 0 && _y < renderer.rows)) {
|
|
375
375
|
return this.layerData[_x][_y];
|
|
@@ -403,8 +403,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
403
403
|
*/
|
|
404
404
|
update(dt) {
|
|
405
405
|
if (this.isAnimated) {
|
|
406
|
-
|
|
407
|
-
for (
|
|
406
|
+
let result = false;
|
|
407
|
+
for (let i = 0; i < this.animatedTilesets.length; i++) {
|
|
408
408
|
result = this.animatedTilesets[i].update(dt) || result;
|
|
409
409
|
}
|
|
410
410
|
return result;
|
|
@@ -419,8 +419,8 @@ function preRenderLayer(layer, renderer) {
|
|
|
419
419
|
draw(renderer, rect) {
|
|
420
420
|
// use the offscreen canvas
|
|
421
421
|
if (this.preRender) {
|
|
422
|
-
|
|
423
|
-
|
|
422
|
+
const width = Math.min(rect.width, this.width);
|
|
423
|
+
const height = Math.min(rect.height, this.height);
|
|
424
424
|
|
|
425
425
|
// draw using the cached canvas
|
|
426
426
|
renderer.drawImage(
|