melonjs 15.12.0 → 15.14.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 +1 -1
- 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 +1 -1
- 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/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 +2 -2
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +55 -3
- 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/parsers/binary.js +1 -1
- package/dist/melonjs.mjs/loader/parsers/fontface.js +1 -1
- package/dist/melonjs.mjs/loader/parsers/image.js +6 -1
- package/dist/melonjs.mjs/loader/parsers/json.js +6 -1
- package/dist/melonjs.mjs/loader/parsers/script.js +1 -1
- package/dist/melonjs.mjs/loader/parsers/tmx.js +6 -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 +3 -3
- 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 +1 -1
- package/dist/melonjs.mjs/renderable/draggable.js +1 -1
- package/dist/melonjs.mjs/renderable/dragndrop.js +1 -1
- package/dist/melonjs.mjs/renderable/entity/entity.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/text/bitmaptext.js +3 -3
- package/dist/melonjs.mjs/renderable/text/bitmaptextdata.js +1 -1
- package/dist/melonjs.mjs/renderable/text/glyph.js +1 -1
- package/dist/melonjs.mjs/renderable/text/text.js +1 -1
- package/dist/melonjs.mjs/renderable/text/textmetrics.js +1 -1
- package/dist/melonjs.mjs/renderable/text/textstyle.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 +12 -11
- 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 +14 -2
- 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 +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 +1 -1
- 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 +1 -1
- 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 +111 -28
- package/dist/types/loader/loader.d.ts +28 -0
- package/dist/types/renderable/ui/uitextbutton.d.ts +10 -3
- package/dist/types/system/event.d.ts +11 -0
- package/package.json +12 -12
- package/src/loader/loader.js +52 -0
- package/src/loader/parsers/image.js +5 -0
- package/src/loader/parsers/json.js +5 -0
- package/src/loader/parsers/tmx.js +5 -0
- package/src/renderable/text/bitmaptext.js +2 -2
- package/src/renderable/ui/uitextbutton.js +11 -10
- package/src/system/event.js +12 -0
package/src/loader/loader.js
CHANGED
|
@@ -45,6 +45,18 @@ export let onload;
|
|
|
45
45
|
*/
|
|
46
46
|
export let onProgress;
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* onError callback<br>
|
|
50
|
+
* each time a resource loading is failed, the loader will fire the specified function giving the actual asset as argument.
|
|
51
|
+
* @default undefined
|
|
52
|
+
* @memberof loader
|
|
53
|
+
* @type {function}
|
|
54
|
+
* @example
|
|
55
|
+
* // set a callback for error notification
|
|
56
|
+
* me.loader.onError = this.loaderError.bind(this);
|
|
57
|
+
*/
|
|
58
|
+
export let onError;
|
|
59
|
+
|
|
48
60
|
/**
|
|
49
61
|
* list of parser function for supported format type
|
|
50
62
|
*/
|
|
@@ -60,6 +72,10 @@ let resourceCount = 0;
|
|
|
60
72
|
let loadCount = 0;
|
|
61
73
|
let timerId = 0;
|
|
62
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Assets uploaded with an error
|
|
77
|
+
*/
|
|
78
|
+
const failureLoadedAssets = {};
|
|
63
79
|
|
|
64
80
|
/**
|
|
65
81
|
* init all supported parsers
|
|
@@ -111,6 +127,7 @@ function checkLoadStatus(onloadcb) {
|
|
|
111
127
|
* @ignore
|
|
112
128
|
*/
|
|
113
129
|
function onResourceLoaded(res) {
|
|
130
|
+
delete failureLoadedAssets[res.src];
|
|
114
131
|
// increment the loading counter
|
|
115
132
|
loadCount++;
|
|
116
133
|
|
|
@@ -127,9 +144,15 @@ function onResourceLoaded(res) {
|
|
|
127
144
|
|
|
128
145
|
/**
|
|
129
146
|
* on error callback for image loading
|
|
147
|
+
* @param {loader.Asset} asset - asset that loaded with failure
|
|
130
148
|
* @ignore
|
|
131
149
|
*/
|
|
132
150
|
function onLoadingError(res) {
|
|
151
|
+
failureLoadedAssets[res.src] = res;
|
|
152
|
+
if (this.onError) {
|
|
153
|
+
this.onError(res);
|
|
154
|
+
}
|
|
155
|
+
event.emit(event.LOADER_ERROR, res);
|
|
133
156
|
throw new Error("Failed loading resource " + res.src);
|
|
134
157
|
}
|
|
135
158
|
|
|
@@ -267,6 +290,35 @@ export function preload(assets, onloadcb, switchToLoadState = true) {
|
|
|
267
290
|
checkLoadStatus(onload);
|
|
268
291
|
}
|
|
269
292
|
|
|
293
|
+
/**
|
|
294
|
+
* retry loading assets after a loading failure
|
|
295
|
+
* @memberof loader
|
|
296
|
+
* @param {string} src - src of asset to reload
|
|
297
|
+
* @example
|
|
298
|
+
* event.on(
|
|
299
|
+
* event.LOADER_ERROR,
|
|
300
|
+
* (res) => {
|
|
301
|
+
* // custom function
|
|
302
|
+
* showErrorNotification({
|
|
303
|
+
* text: `Error during loading content: ${res.name}`,
|
|
304
|
+
* done: loader.reload(res.src);
|
|
305
|
+
* })
|
|
306
|
+
* }
|
|
307
|
+
* );
|
|
308
|
+
**/
|
|
309
|
+
export function reload(src) {
|
|
310
|
+
const assetToReload = failureLoadedAssets[src];
|
|
311
|
+
this.unload(assetToReload);
|
|
312
|
+
resourceCount -= 1;
|
|
313
|
+
resourceCount += this.load(
|
|
314
|
+
assetToReload,
|
|
315
|
+
this.onResourceLoaded.bind(this, assetToReload),
|
|
316
|
+
this.onLoadingError.bind(this, assetToReload)
|
|
317
|
+
);
|
|
318
|
+
// check load status
|
|
319
|
+
checkLoadStatus(this.onload);
|
|
320
|
+
}
|
|
321
|
+
|
|
270
322
|
/**
|
|
271
323
|
* Load a single asset (to be used if you need to load additional asset(s) during the game)
|
|
272
324
|
* @memberof loader
|
|
@@ -17,6 +17,11 @@ import { crossOrigin, nocache } from "../settings.js";
|
|
|
17
17
|
* ]);
|
|
18
18
|
*/
|
|
19
19
|
export function preloadImage(img, onload, onerror) {
|
|
20
|
+
if (typeof imgList[img.name] !== "undefined") {
|
|
21
|
+
// already loaded
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
20
25
|
// create new Image object and add to list
|
|
21
26
|
imgList[img.name] = new Image();
|
|
22
27
|
if (typeof onload === "function") {
|
|
@@ -11,6 +11,11 @@ import { nocache, withCredentials } from "../settings.js";
|
|
|
11
11
|
* @ignore
|
|
12
12
|
*/
|
|
13
13
|
export function preloadJSON(data, onload, onerror) {
|
|
14
|
+
if (typeof jsonList[data.name] !== "undefined") {
|
|
15
|
+
// already loaded
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
14
19
|
let xmlhttp = new XMLHttpRequest();
|
|
15
20
|
|
|
16
21
|
if (xmlhttp.overrideMimeType) {
|
|
@@ -15,6 +15,11 @@ import { nocache, withCredentials } from "../settings.js";
|
|
|
15
15
|
* @ignore
|
|
16
16
|
*/
|
|
17
17
|
export function preloadTMX(tmxData, onload, onerror) {
|
|
18
|
+
if (typeof tmxList[tmxData.name] !== "undefined") {
|
|
19
|
+
// already loaded
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
18
23
|
/**
|
|
19
24
|
* @ignore
|
|
20
25
|
*/
|
|
@@ -206,7 +206,7 @@ export default class BitmapText extends Renderable {
|
|
|
206
206
|
break;
|
|
207
207
|
|
|
208
208
|
default :
|
|
209
|
-
ax = this.metrics.width * 0.0;
|
|
209
|
+
ax = 0; //this.metrics.width * 0.0;
|
|
210
210
|
break;
|
|
211
211
|
}
|
|
212
212
|
|
|
@@ -223,7 +223,7 @@ export default class BitmapText extends Renderable {
|
|
|
223
223
|
break;
|
|
224
224
|
|
|
225
225
|
default :
|
|
226
|
-
ay = this.metrics.height * 0.0;
|
|
226
|
+
ay = 0; //this.metrics.height * 0.0;
|
|
227
227
|
break;
|
|
228
228
|
}
|
|
229
229
|
|
|
@@ -20,8 +20,8 @@ export default class UITextButton extends UIBaseElement {
|
|
|
20
20
|
* @param {number} [settings.size=1] - The scale factor of the BitmapText
|
|
21
21
|
* @param {string} [settings.text] - The text to display
|
|
22
22
|
* @param {string} [settings.bindKey] - The key to bind the action to (default: none)
|
|
23
|
-
* @param {string} [settings.
|
|
24
|
-
* @param {string} [settings.
|
|
23
|
+
* @param {string} [settings.hoverOffColor="#00aa0080"] - The css value of a color to be used if the pointer is not hovering over the button
|
|
24
|
+
* @param {string} [settings.hoverOnColor="#00ff00ff"] - The css value of a color to be used if the pointer hovers over the button
|
|
25
25
|
* @param {string} [settings.borderStrokeColor="#000000"] - The css value of a color to be used to draw the border
|
|
26
26
|
* @param {string} [settings.fillStyle] - The css value of a tint color to be used to tint the BitmapText
|
|
27
27
|
* @param {string} [settings.textAlign="center"] - horizontal text alignment
|
|
@@ -38,6 +38,8 @@ export default class UITextButton extends UIBaseElement {
|
|
|
38
38
|
* // if you omit the next two, size is calculated by the size of the text
|
|
39
39
|
* borderWidth: 200,
|
|
40
40
|
* borderHeight: 20,
|
|
41
|
+
* backgroundColor: '#00aa0080',
|
|
42
|
+
* hoverColor: '#00ff00ff'
|
|
41
43
|
* });
|
|
42
44
|
* }
|
|
43
45
|
*
|
|
@@ -58,16 +60,18 @@ export default class UITextButton extends UIBaseElement {
|
|
|
58
60
|
this.bindKey = settings.bindKey || -1;
|
|
59
61
|
|
|
60
62
|
/**
|
|
61
|
-
* The css value of a
|
|
63
|
+
* The css value of a color to be used if the pointer is nothovering over the button
|
|
62
64
|
* @type {string}
|
|
63
65
|
*/
|
|
64
|
-
|
|
66
|
+
// keep settings.backgroundColor for backward compatibility
|
|
67
|
+
this.hoverOffColor = settings.hoverOffColor || settings.backgroundColor || "#00aa0080";
|
|
65
68
|
|
|
66
69
|
/**
|
|
67
70
|
* The css value of a color to be used if the pointer hovers over the button
|
|
68
71
|
* @type {string}
|
|
69
72
|
*/
|
|
70
|
-
|
|
73
|
+
// keep settings.hoverColor for backward compatibility
|
|
74
|
+
this.hoverOnColor = settings.hoverOnColor || settings.hoverColor || "#00ff00ff";
|
|
71
75
|
|
|
72
76
|
/**
|
|
73
77
|
* The css value of a color to be used to draw the border
|
|
@@ -122,16 +126,13 @@ export default class UITextButton extends UIBaseElement {
|
|
|
122
126
|
|
|
123
127
|
draw(renderer) {
|
|
124
128
|
if (this.hover === true) {
|
|
125
|
-
renderer.setColor(this.
|
|
129
|
+
renderer.setColor(this.hoverOnColor);
|
|
126
130
|
} else {
|
|
127
|
-
renderer.setColor(this.
|
|
131
|
+
renderer.setColor(this.hoverOffColor);
|
|
128
132
|
}
|
|
129
133
|
renderer.fill(this.border);
|
|
130
134
|
renderer.setColor(this.borderStrokeColor);
|
|
131
135
|
renderer.stroke(this.border);
|
|
132
|
-
this.bitmapText.preDraw(renderer);
|
|
133
|
-
this.bitmapText.draw(renderer);
|
|
134
|
-
this.bitmapText.postDraw(renderer);
|
|
135
136
|
super.draw(renderer);
|
|
136
137
|
}
|
|
137
138
|
}
|
package/src/system/event.js
CHANGED
|
@@ -279,6 +279,18 @@ export const LOADER_COMPLETE = "me.loader.onload";
|
|
|
279
279
|
*/
|
|
280
280
|
export const LOADER_PROGRESS = "me.loader.onProgress";
|
|
281
281
|
|
|
282
|
+
/**
|
|
283
|
+
* Event for when an error occur during preloading <br>
|
|
284
|
+
* Data passed : {Resource} resource object<br>
|
|
285
|
+
* @public
|
|
286
|
+
* @constant
|
|
287
|
+
* @type {string}
|
|
288
|
+
* @name LOADER_ERROR
|
|
289
|
+
* @memberof event
|
|
290
|
+
* @see event.on
|
|
291
|
+
*/
|
|
292
|
+
export const LOADER_ERROR = "me.loader.onError";
|
|
293
|
+
|
|
282
294
|
/**
|
|
283
295
|
* Event for pressing a binded key <br>
|
|
284
296
|
* Data passed : {string} user-defined action, {number} keyCode,
|