melonjs 15.1.6 → 15.2.1
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 +6 -6
- 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 +3 -3
- package/dist/melonjs.mjs/application/header.js +1 -1
- package/dist/melonjs.mjs/application/resize.js +1 -1
- package/dist/melonjs.mjs/application/settings.js +1 -1
- package/dist/melonjs.mjs/audio/audio.js +1 -1
- package/dist/melonjs.mjs/camera/camera2d.js +1 -1
- package/dist/melonjs.mjs/const.js +1 -1
- package/dist/melonjs.mjs/entity/entity.js +1 -1
- package/dist/melonjs.mjs/geometries/ellipse.js +1 -1
- package/dist/melonjs.mjs/geometries/line.js +1 -1
- package/dist/melonjs.mjs/geometries/path2d.js +1 -1
- package/dist/melonjs.mjs/geometries/point.js +1 -1
- package/dist/melonjs.mjs/geometries/poly.js +1 -1
- package/dist/melonjs.mjs/geometries/rectangle.js +1 -1
- package/dist/melonjs.mjs/geometries/roundrect.js +1 -1
- package/dist/melonjs.mjs/index.js +12 -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 +1 -1
- package/dist/melonjs.mjs/input/pointer.js +1 -1
- package/dist/melonjs.mjs/input/pointerevent.js +1 -1
- package/dist/melonjs.mjs/lang/console.js +1 -1
- package/dist/melonjs.mjs/lang/deprecated.js +1 -1
- package/dist/melonjs.mjs/level/level.js +5 -4
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +3 -3
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +1 -1
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +127 -95
- package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +1 -1
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +1 -1
- 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 +1 -1
- package/dist/melonjs.mjs/loader/settings.js +1 -1
- package/dist/melonjs.mjs/math/color.js +1 -1
- package/dist/melonjs.mjs/math/math.js +1 -1
- package/dist/melonjs.mjs/math/matrix2.js +1 -1
- package/dist/melonjs.mjs/math/matrix3.js +1 -1
- package/dist/melonjs.mjs/math/observable_vector2.js +1 -1
- package/dist/melonjs.mjs/math/observable_vector3.js +1 -1
- package/dist/melonjs.mjs/math/vector2.js +1 -1
- package/dist/melonjs.mjs/math/vector3.js +1 -1
- 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 +1 -1
- package/dist/melonjs.mjs/particles/particle.js +1 -1
- package/dist/melonjs.mjs/particles/settings.js +1 -1
- package/dist/melonjs.mjs/physics/body.js +1 -1
- package/dist/melonjs.mjs/physics/bounds.js +1 -1
- package/dist/melonjs.mjs/physics/collision.js +1 -1
- package/dist/melonjs.mjs/physics/detector.js +1 -1
- package/dist/melonjs.mjs/physics/quadtree.js +1 -1
- package/dist/melonjs.mjs/physics/response.js +1 -1
- package/dist/melonjs.mjs/physics/sat.js +1 -1
- package/dist/melonjs.mjs/physics/world.js +1 -1
- package/dist/melonjs.mjs/plugin/plugin.js +106 -108
- package/dist/melonjs.mjs/renderable/collectable.js +1 -1
- package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
- package/dist/melonjs.mjs/renderable/container.js +7 -6
- 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 +1 -1
- package/dist/melonjs.mjs/renderable/light2d.js +1 -1
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +1 -1
- package/dist/melonjs.mjs/renderable/renderable.js +1 -1
- package/dist/melonjs.mjs/renderable/sprite.js +1 -1
- package/dist/melonjs.mjs/renderable/trigger.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +1 -1
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +1 -1
- package/dist/melonjs.mjs/state/stage.js +1 -1
- package/dist/melonjs.mjs/state/state.js +1 -1
- package/dist/melonjs.mjs/system/device.js +1 -1
- package/dist/melonjs.mjs/system/dom.js +1 -1
- package/dist/melonjs.mjs/system/event.js +1 -1
- package/dist/melonjs.mjs/system/platform.js +1 -1
- package/dist/melonjs.mjs/system/pooling.js +1 -1
- package/dist/melonjs.mjs/system/save.js +1 -1
- package/dist/melonjs.mjs/system/timer.js +4 -4
- package/dist/melonjs.mjs/text/bitmaptext.js +1 -1
- package/dist/melonjs.mjs/text/bitmaptextdata.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/melonjs.mjs/utils/string.js +1 -1
- package/dist/melonjs.mjs/utils/utils.js +105 -111
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +1 -1
- package/dist/melonjs.mjs/video/renderer.js +1 -1
- package/dist/melonjs.mjs/video/texture/atlas.js +1 -1
- package/dist/melonjs.mjs/video/texture/cache.js +1 -1
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +1 -1
- package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
- package/dist/melonjs.mjs/video/video.js +6 -32
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +1 -1
- package/dist/melonjs.mjs/video/webgl/glshader.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/melonjs.module.js +595 -570
- package/dist/types/index.d.ts +5 -4
- package/dist/types/level/tiled/TMXUtils.d.ts +19 -36
- package/dist/types/plugin/plugin.d.ts +60 -5
- package/dist/types/utils/utils.d.ts +56 -17
- package/dist/types/video/video.d.ts +1 -21
- package/package.json +5 -5
- package/src/application/application.js +2 -2
- package/src/index.js +5 -2
- package/src/level/level.js +4 -3
- package/src/level/tiled/TMXTileMap.js +2 -2
- package/src/level/tiled/TMXUtils.js +126 -94
- package/src/plugin/plugin.js +103 -105
- package/src/renderable/container.js +6 -5
- package/src/system/timer.js +3 -3
- package/src/utils/utils.js +102 -111
- package/src/video/video.js +6 -8
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* melonJS Game Engine - v15.1
|
|
2
|
+
* melonJS Game Engine - v15.2.1
|
|
3
3
|
* http://www.melonjs.org
|
|
4
4
|
* melonjs is licensed under the MIT License.
|
|
5
5
|
* http://www.opensource.org/licenses/mit-license
|
|
6
6
|
* @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
8
|
+
import { isBoolean, isNumeric } from '../../utils/string.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* a collection of utility functions for parsing TMX maps
|
|
12
|
+
* @namespace TMXUtils
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* the function used to decompress zlib/gzip data
|
|
18
|
+
* @ignore
|
|
19
|
+
*/
|
|
20
|
+
let inflateFunction;
|
|
9
21
|
|
|
10
22
|
/**
|
|
11
23
|
* set and interpret a TMX property value
|
|
@@ -32,11 +44,11 @@ function setTMXValue(name, type, value) {
|
|
|
32
44
|
|
|
33
45
|
default :
|
|
34
46
|
// try to parse it anyway
|
|
35
|
-
if (!value ||
|
|
47
|
+
if (!value || isBoolean(value)) {
|
|
36
48
|
// if value not defined or boolean
|
|
37
49
|
value = value ? (value === "true") : true;
|
|
38
50
|
}
|
|
39
|
-
else if (
|
|
51
|
+
else if (isNumeric(value)) {
|
|
40
52
|
// check if numeric
|
|
41
53
|
value = Number(value);
|
|
42
54
|
}
|
|
@@ -102,94 +114,6 @@ function parseAttributes(obj, elt) {
|
|
|
102
114
|
}
|
|
103
115
|
}
|
|
104
116
|
|
|
105
|
-
/**
|
|
106
|
-
* decompress and decode zlib/gzip data
|
|
107
|
-
* @ignore
|
|
108
|
-
* @name decompress
|
|
109
|
-
* @param {string} input - Base64 encoded and compressed data
|
|
110
|
-
* @param {string} format - compressed data format ("gzip","zlib", "zstd")
|
|
111
|
-
* @returns {Uint32Array} Decoded and decompress data
|
|
112
|
-
*/
|
|
113
|
-
function decompress(data, format) {
|
|
114
|
-
if (typeof utils.inflateb64 === "function") {
|
|
115
|
-
return utils.inflateb64(data, format);
|
|
116
|
-
} else {
|
|
117
|
-
throw new Error("GZIP/ZLIB compressed TMX Tile Map not supported!");
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Decode a CSV encoded array into a binary array
|
|
123
|
-
* @ignore
|
|
124
|
-
* @name decodeCSV
|
|
125
|
-
* @param {string} input- - CSV formatted data (only numbers, everything else will be converted to NaN)
|
|
126
|
-
* @returns {number[]} Decoded data
|
|
127
|
-
*/
|
|
128
|
-
function decodeCSV(input) {
|
|
129
|
-
let entries = input.replace("\n", "").trim().split(",");
|
|
130
|
-
|
|
131
|
-
let result = [];
|
|
132
|
-
for (let i = 0; i < entries.length; i++) {
|
|
133
|
-
result.push(+entries[i]);
|
|
134
|
-
}
|
|
135
|
-
return result;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Decode a base64 encoded string into a byte array
|
|
140
|
-
* @ignore
|
|
141
|
-
* @name decodeBase64AsArray
|
|
142
|
-
* @param {string} input - Base64 encoded data
|
|
143
|
-
* @param {number} [bytes] - number of bytes per array entry
|
|
144
|
-
* @returns {Uint32Array} Decoded data
|
|
145
|
-
*/
|
|
146
|
-
function decodeBase64AsArray(input, bytes) {
|
|
147
|
-
bytes = bytes || 1;
|
|
148
|
-
|
|
149
|
-
let i, j, len;
|
|
150
|
-
let dec = globalThis.atob(input.replace(/[^A-Za-z0-9\+\/\=]/g, ""));
|
|
151
|
-
let ar = new Uint32Array(dec.length / bytes);
|
|
152
|
-
|
|
153
|
-
for (i = 0, len = dec.length / bytes; i < len; i++) {
|
|
154
|
-
ar[i] = 0;
|
|
155
|
-
for (j = bytes - 1; j >= 0; --j) {
|
|
156
|
-
ar[i] += dec.charCodeAt((i * bytes) + j) << (j << 3);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return ar;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* Decode the given data
|
|
164
|
-
* @ignore
|
|
165
|
-
*/
|
|
166
|
-
function decode(data, encoding, compression) {
|
|
167
|
-
compression = compression || "none";
|
|
168
|
-
encoding = encoding || "none";
|
|
169
|
-
|
|
170
|
-
switch (encoding) {
|
|
171
|
-
case "csv":
|
|
172
|
-
return decodeCSV(data);
|
|
173
|
-
|
|
174
|
-
case "base64":
|
|
175
|
-
if (compression !== "none") {
|
|
176
|
-
data = decompress(data, compression);
|
|
177
|
-
} else {
|
|
178
|
-
data = decodeBase64AsArray(data, 4);
|
|
179
|
-
}
|
|
180
|
-
return data;
|
|
181
|
-
|
|
182
|
-
case "none":
|
|
183
|
-
return data;
|
|
184
|
-
|
|
185
|
-
case "xml":
|
|
186
|
-
throw new Error("XML encoding is deprecated, use base64 instead");
|
|
187
|
-
|
|
188
|
-
default:
|
|
189
|
-
throw new Error("Unknown layer encoding: " + encoding);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
117
|
/**
|
|
194
118
|
* Normalize TMX format to Tiled JSON format
|
|
195
119
|
* @ignore
|
|
@@ -322,9 +246,113 @@ function normalize(obj, item) {
|
|
|
322
246
|
}
|
|
323
247
|
}
|
|
324
248
|
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* decompress and decode zlib/gzip data
|
|
252
|
+
* @name decompress
|
|
253
|
+
* @memberOf TMXUtils
|
|
254
|
+
* @param {string} input - Base64 encoded and compressed data
|
|
255
|
+
* @param {string} format - compressed data format ("gzip","zlib", "zstd")
|
|
256
|
+
* @returns {Uint32Array} Decoded and decompress data
|
|
257
|
+
*/
|
|
258
|
+
function decompress(data, format) {
|
|
259
|
+
if (typeof inflateFunction === "function") {
|
|
260
|
+
return inflateFunction(data, format);
|
|
261
|
+
} else {
|
|
262
|
+
throw new Error("GZIP/ZLIB compressed TMX Tile Map not supported!");
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Decode a CSV encoded array into a binary array
|
|
268
|
+
* @name decodeCSV
|
|
269
|
+
* @memberOf TMXUtils
|
|
270
|
+
* @param {string} input- - CSV formatted data (only numbers, everything else will be converted to NaN)
|
|
271
|
+
* @returns {number[]} Decoded data
|
|
272
|
+
*/
|
|
273
|
+
function decodeCSV(input) {
|
|
274
|
+
let entries = input.replace("\n", "").trim().split(",");
|
|
275
|
+
|
|
276
|
+
let result = [];
|
|
277
|
+
for (let i = 0; i < entries.length; i++) {
|
|
278
|
+
result.push(+entries[i]);
|
|
279
|
+
}
|
|
280
|
+
return result;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Decode a base64 encoded string into a byte array
|
|
285
|
+
* @name decodeBase64AsArray
|
|
286
|
+
* @memberOf TMXUtils
|
|
287
|
+
* @param {string} input - Base64 encoded data
|
|
288
|
+
* @param {number} [bytes] - number of bytes per array entry
|
|
289
|
+
* @returns {Uint32Array} Decoded data
|
|
290
|
+
*/
|
|
291
|
+
function decodeBase64AsArray(input, bytes) {
|
|
292
|
+
bytes = bytes || 1;
|
|
293
|
+
|
|
294
|
+
let i, j, len;
|
|
295
|
+
let dec = globalThis.atob(input.replace(/[^A-Za-z0-9\+\/\=]/g, ""));
|
|
296
|
+
let ar = new Uint32Array(dec.length / bytes);
|
|
297
|
+
|
|
298
|
+
for (i = 0, len = dec.length / bytes; i < len; i++) {
|
|
299
|
+
ar[i] = 0;
|
|
300
|
+
for (j = bytes - 1; j >= 0; --j) {
|
|
301
|
+
ar[i] += dec.charCodeAt((i * bytes) + j) << (j << 3);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return ar;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* set the function used to inflate gzip/zlib data
|
|
309
|
+
* @param {Func} fn - inflate function
|
|
310
|
+
*/
|
|
311
|
+
function setInflateFunction(fn) {
|
|
312
|
+
inflateFunction = fn;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Decode a encoded array into a binary array
|
|
317
|
+
* @name decodeCSV
|
|
318
|
+
* @memberOf TMXUtils
|
|
319
|
+
* @param {string} data - data to be decoded
|
|
320
|
+
* @param {string} [encoding="none"] - data encoding ("csv", "base64", "xml")
|
|
321
|
+
* @returns {number[]} Decoded data
|
|
322
|
+
*/
|
|
323
|
+
function decode(data, encoding, compression) {
|
|
324
|
+
compression = compression || "none";
|
|
325
|
+
encoding = encoding || "none";
|
|
326
|
+
|
|
327
|
+
switch (encoding) {
|
|
328
|
+
case "csv":
|
|
329
|
+
return decodeCSV(data);
|
|
330
|
+
|
|
331
|
+
case "base64":
|
|
332
|
+
if (compression !== "none") {
|
|
333
|
+
data = decompress(data, compression);
|
|
334
|
+
} else {
|
|
335
|
+
data = decodeBase64AsArray(data, 4);
|
|
336
|
+
}
|
|
337
|
+
return data;
|
|
338
|
+
|
|
339
|
+
case "none":
|
|
340
|
+
return data;
|
|
341
|
+
|
|
342
|
+
case "xml":
|
|
343
|
+
throw new Error("XML encoding is deprecated, use base64 instead");
|
|
344
|
+
|
|
345
|
+
default:
|
|
346
|
+
throw new Error("Unknown layer encoding: " + encoding);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
325
350
|
/**
|
|
326
351
|
* Parse a XML TMX object and returns the corresponding javascript object
|
|
327
|
-
* @
|
|
352
|
+
* @name parse
|
|
353
|
+
* @memberOf TMXUtils
|
|
354
|
+
* @param {Document} xml - XML TMX object
|
|
355
|
+
* @returns {object} Javascript object
|
|
328
356
|
*/
|
|
329
357
|
function parse(xml) {
|
|
330
358
|
// Create the return object
|
|
@@ -362,7 +390,11 @@ function parse(xml) {
|
|
|
362
390
|
|
|
363
391
|
/**
|
|
364
392
|
* Apply TMX Properties to the given object
|
|
365
|
-
* @
|
|
393
|
+
* @name applyTMXProperties
|
|
394
|
+
* @memberOf TMXUtils
|
|
395
|
+
* @param {object} obj - object to apply the properties to
|
|
396
|
+
* @param {object} data - TMX data object
|
|
397
|
+
* @returns {object} obj
|
|
366
398
|
*/
|
|
367
399
|
function applyTMXProperties(obj, data) {
|
|
368
400
|
let properties = data.properties;
|
|
@@ -392,4 +424,4 @@ function applyTMXProperties(obj, data) {
|
|
|
392
424
|
}
|
|
393
425
|
}
|
|
394
426
|
|
|
395
|
-
export { applyTMXProperties, decode,
|
|
427
|
+
export { applyTMXProperties, decode, parse, setInflateFunction };
|