diff --git a/package.json b/package.json index 844f742..096ae2a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "ismobilejs": "^0.4.0", "object-assign": "^4.0.1", "pixi-gl-core": "^1.0.3", - "resource-loader": "^1.8.0" + "resource-loader": "^2.0.3" }, "devDependencies": { "babel-cli": "^6.18.0", diff --git a/package.json b/package.json index 844f742..096ae2a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "ismobilejs": "^0.4.0", "object-assign": "^4.0.1", "pixi-gl-core": "^1.0.3", - "resource-loader": "^1.8.0" + "resource-loader": "^2.0.3" }, "devDependencies": { "babel-cli": "^6.18.0", diff --git a/src/deprecation.js b/src/deprecation.js index e52d60b..045a19f 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -4,6 +4,7 @@ import * as extras from './extras'; import * as filters from './filters'; import * as prepare from './prepare'; +import * as loaders from './loaders'; // provide method to give a stack track for warnings // useful for tracking-down where deprecated methods/properties/classes @@ -940,3 +941,65 @@ return NaN; }, }); + +Object.defineProperties(loaders.Resource.prototype, { + isJson: { + get() + { + warn('The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`.'); + + return this.type === loaders.Loader.Resource.TYPE.JSON; + }, + }, + isXml: { + get() + { + warn('The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`.'); + + return this.type === loaders.Loader.Resource.TYPE.XML; + }, + }, + isImage: { + get() + { + warn('The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`.'); + + return this.type === loaders.Loader.Resource.TYPE.IMAGE; + }, + }, + isAudio: { + get() + { + warn('The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`.'); + + return this.type === loaders.Loader.Resource.TYPE.AUDIO; + }, + }, + isVideo: { + get() + { + warn('The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`.'); + + return this.type === loaders.Loader.Resource.TYPE.VIDEO; + }, + }, +}); + +Object.defineProperties(loaders.Loader.prototype, { + before: { + get() + { + warn('The before() method is deprecated, please use pre().'); + + return this.pre; + }, + }, + after: { + get() + { + warn('The after() method is deprecated, please use use().'); + + return this.use; + }, + }, +}); diff --git a/package.json b/package.json index 844f742..096ae2a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "ismobilejs": "^0.4.0", "object-assign": "^4.0.1", "pixi-gl-core": "^1.0.3", - "resource-loader": "^1.8.0" + "resource-loader": "^2.0.3" }, "devDependencies": { "babel-cli": "^6.18.0", diff --git a/src/deprecation.js b/src/deprecation.js index e52d60b..045a19f 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -4,6 +4,7 @@ import * as extras from './extras'; import * as filters from './filters'; import * as prepare from './prepare'; +import * as loaders from './loaders'; // provide method to give a stack track for warnings // useful for tracking-down where deprecated methods/properties/classes @@ -940,3 +941,65 @@ return NaN; }, }); + +Object.defineProperties(loaders.Resource.prototype, { + isJson: { + get() + { + warn('The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`.'); + + return this.type === loaders.Loader.Resource.TYPE.JSON; + }, + }, + isXml: { + get() + { + warn('The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`.'); + + return this.type === loaders.Loader.Resource.TYPE.XML; + }, + }, + isImage: { + get() + { + warn('The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`.'); + + return this.type === loaders.Loader.Resource.TYPE.IMAGE; + }, + }, + isAudio: { + get() + { + warn('The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`.'); + + return this.type === loaders.Loader.Resource.TYPE.AUDIO; + }, + }, + isVideo: { + get() + { + warn('The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`.'); + + return this.type === loaders.Loader.Resource.TYPE.VIDEO; + }, + }, +}); + +Object.defineProperties(loaders.Loader.prototype, { + before: { + get() + { + warn('The before() method is deprecated, please use pre().'); + + return this.pre; + }, + }, + after: { + get() + { + warn('The after() method is deprecated, please use use().'); + + return this.use; + }, + }, +}); diff --git a/src/loaders/bitmapFontParser.js b/src/loaders/bitmapFontParser.js index 94a7cbc..cc2618c 100644 --- a/src/loaders/bitmapFontParser.js +++ b/src/loaders/bitmapFontParser.js @@ -65,7 +65,7 @@ return function bitmapFontParser(resource, next) { // skip if no data or not xml data - if (!resource.data || !resource.isXml) + if (!resource.data || resource.type !== Resource.TYPE.XML) { next(); @@ -125,6 +125,7 @@ crossOrigin: resource.crossOrigin, loadType: Resource.LOAD_TYPE.IMAGE, metadata: resource.metadata.imageMetadata, + parentResource: resource, }; // load the texture for the font diff --git a/package.json b/package.json index 844f742..096ae2a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "ismobilejs": "^0.4.0", "object-assign": "^4.0.1", "pixi-gl-core": "^1.0.3", - "resource-loader": "^1.8.0" + "resource-loader": "^2.0.3" }, "devDependencies": { "babel-cli": "^6.18.0", diff --git a/src/deprecation.js b/src/deprecation.js index e52d60b..045a19f 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -4,6 +4,7 @@ import * as extras from './extras'; import * as filters from './filters'; import * as prepare from './prepare'; +import * as loaders from './loaders'; // provide method to give a stack track for warnings // useful for tracking-down where deprecated methods/properties/classes @@ -940,3 +941,65 @@ return NaN; }, }); + +Object.defineProperties(loaders.Resource.prototype, { + isJson: { + get() + { + warn('The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`.'); + + return this.type === loaders.Loader.Resource.TYPE.JSON; + }, + }, + isXml: { + get() + { + warn('The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`.'); + + return this.type === loaders.Loader.Resource.TYPE.XML; + }, + }, + isImage: { + get() + { + warn('The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`.'); + + return this.type === loaders.Loader.Resource.TYPE.IMAGE; + }, + }, + isAudio: { + get() + { + warn('The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`.'); + + return this.type === loaders.Loader.Resource.TYPE.AUDIO; + }, + }, + isVideo: { + get() + { + warn('The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`.'); + + return this.type === loaders.Loader.Resource.TYPE.VIDEO; + }, + }, +}); + +Object.defineProperties(loaders.Loader.prototype, { + before: { + get() + { + warn('The before() method is deprecated, please use pre().'); + + return this.pre; + }, + }, + after: { + get() + { + warn('The after() method is deprecated, please use use().'); + + return this.use; + }, + }, +}); diff --git a/src/loaders/bitmapFontParser.js b/src/loaders/bitmapFontParser.js index 94a7cbc..cc2618c 100644 --- a/src/loaders/bitmapFontParser.js +++ b/src/loaders/bitmapFontParser.js @@ -65,7 +65,7 @@ return function bitmapFontParser(resource, next) { // skip if no data or not xml data - if (!resource.data || !resource.isXml) + if (!resource.data || resource.type !== Resource.TYPE.XML) { next(); @@ -125,6 +125,7 @@ crossOrigin: resource.crossOrigin, loadType: Resource.LOAD_TYPE.IMAGE, metadata: resource.metadata.imageMetadata, + parentResource: resource, }; // load the texture for the font diff --git a/src/loaders/loader.js b/src/loaders/loader.js index 978aa2d..1ffe5e3 100644 --- a/src/loaders/loader.js +++ b/src/loaders/loader.js @@ -1,4 +1,5 @@ import ResourceLoader from 'resource-loader'; +import EventEmitter from 'eventemitter3'; import textureParser from './textureParser'; import spritesheetParser from './spritesheetParser'; import bitmapFontParser from './bitmapFontParser'; @@ -36,11 +37,19 @@ constructor(baseUrl, concurrency) { super(baseUrl, concurrency); + EventEmitter.call(this); for (let i = 0; i < Loader._pixiMiddleware.length; ++i) { this.use(Loader._pixiMiddleware[i]()); } + + // Compat layer, translate the new v2 signals into old v1 events. + this.onStart.add((l) => this.emit('start', l)); + this.onProgress.add((l, r) => this.emit('progress', l, r)); + this.onError.add((e, l, r) => this.emit('error', e, l, r)); + this.onLoad.add((l, r) => this.emit('load', l, r)); + this.onComplete.add((l, r) => this.emit('complete', l, r)); } /** @@ -55,6 +64,12 @@ } } +// Copy EE3 prototype (mixin) +for (const k in EventEmitter.prototype) +{ + Loader.prototype[k] = EventEmitter.prototype[k]; +} + Loader._pixiMiddleware = [ // parse any blob into more usable objects (e.g. Image) ResourceLoader.middleware.parsing.blob, diff --git a/package.json b/package.json index 844f742..096ae2a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "ismobilejs": "^0.4.0", "object-assign": "^4.0.1", "pixi-gl-core": "^1.0.3", - "resource-loader": "^1.8.0" + "resource-loader": "^2.0.3" }, "devDependencies": { "babel-cli": "^6.18.0", diff --git a/src/deprecation.js b/src/deprecation.js index e52d60b..045a19f 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -4,6 +4,7 @@ import * as extras from './extras'; import * as filters from './filters'; import * as prepare from './prepare'; +import * as loaders from './loaders'; // provide method to give a stack track for warnings // useful for tracking-down where deprecated methods/properties/classes @@ -940,3 +941,65 @@ return NaN; }, }); + +Object.defineProperties(loaders.Resource.prototype, { + isJson: { + get() + { + warn('The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`.'); + + return this.type === loaders.Loader.Resource.TYPE.JSON; + }, + }, + isXml: { + get() + { + warn('The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`.'); + + return this.type === loaders.Loader.Resource.TYPE.XML; + }, + }, + isImage: { + get() + { + warn('The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`.'); + + return this.type === loaders.Loader.Resource.TYPE.IMAGE; + }, + }, + isAudio: { + get() + { + warn('The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`.'); + + return this.type === loaders.Loader.Resource.TYPE.AUDIO; + }, + }, + isVideo: { + get() + { + warn('The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`.'); + + return this.type === loaders.Loader.Resource.TYPE.VIDEO; + }, + }, +}); + +Object.defineProperties(loaders.Loader.prototype, { + before: { + get() + { + warn('The before() method is deprecated, please use pre().'); + + return this.pre; + }, + }, + after: { + get() + { + warn('The after() method is deprecated, please use use().'); + + return this.use; + }, + }, +}); diff --git a/src/loaders/bitmapFontParser.js b/src/loaders/bitmapFontParser.js index 94a7cbc..cc2618c 100644 --- a/src/loaders/bitmapFontParser.js +++ b/src/loaders/bitmapFontParser.js @@ -65,7 +65,7 @@ return function bitmapFontParser(resource, next) { // skip if no data or not xml data - if (!resource.data || !resource.isXml) + if (!resource.data || resource.type !== Resource.TYPE.XML) { next(); @@ -125,6 +125,7 @@ crossOrigin: resource.crossOrigin, loadType: Resource.LOAD_TYPE.IMAGE, metadata: resource.metadata.imageMetadata, + parentResource: resource, }; // load the texture for the font diff --git a/src/loaders/loader.js b/src/loaders/loader.js index 978aa2d..1ffe5e3 100644 --- a/src/loaders/loader.js +++ b/src/loaders/loader.js @@ -1,4 +1,5 @@ import ResourceLoader from 'resource-loader'; +import EventEmitter from 'eventemitter3'; import textureParser from './textureParser'; import spritesheetParser from './spritesheetParser'; import bitmapFontParser from './bitmapFontParser'; @@ -36,11 +37,19 @@ constructor(baseUrl, concurrency) { super(baseUrl, concurrency); + EventEmitter.call(this); for (let i = 0; i < Loader._pixiMiddleware.length; ++i) { this.use(Loader._pixiMiddleware[i]()); } + + // Compat layer, translate the new v2 signals into old v1 events. + this.onStart.add((l) => this.emit('start', l)); + this.onProgress.add((l, r) => this.emit('progress', l, r)); + this.onError.add((e, l, r) => this.emit('error', e, l, r)); + this.onLoad.add((l, r) => this.emit('load', l, r)); + this.onComplete.add((l, r) => this.emit('complete', l, r)); } /** @@ -55,6 +64,12 @@ } } +// Copy EE3 prototype (mixin) +for (const k in EventEmitter.prototype) +{ + Loader.prototype[k] = EventEmitter.prototype[k]; +} + Loader._pixiMiddleware = [ // parse any blob into more usable objects (e.g. Image) ResourceLoader.middleware.parsing.blob, diff --git a/src/loaders/spritesheetParser.js b/src/loaders/spritesheetParser.js index 2b30b1c..7570332 100644 --- a/src/loaders/spritesheetParser.js +++ b/src/loaders/spritesheetParser.js @@ -12,7 +12,11 @@ const imageResourceName = `${resource.name}_image`; // skip if no data, its not json, it isn't spritesheet data, or the image resource already exists - if (!resource.data || !resource.isJson || !resource.data.frames || this.resources[imageResourceName]) + if (!resource.data + || resource.type !== Resource.TYPE.JSON + || !resource.data.frames + || this.resources[imageResourceName] + ) { next(); @@ -23,6 +27,7 @@ crossOrigin: resource.crossOrigin, loadType: Resource.LOAD_TYPE.IMAGE, metadata: resource.metadata.imageMetadata, + parentResource: resource, }; // Prepend url path unless the resource image is a data url diff --git a/package.json b/package.json index 844f742..096ae2a 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "ismobilejs": "^0.4.0", "object-assign": "^4.0.1", "pixi-gl-core": "^1.0.3", - "resource-loader": "^1.8.0" + "resource-loader": "^2.0.3" }, "devDependencies": { "babel-cli": "^6.18.0", diff --git a/src/deprecation.js b/src/deprecation.js index e52d60b..045a19f 100644 --- a/src/deprecation.js +++ b/src/deprecation.js @@ -4,6 +4,7 @@ import * as extras from './extras'; import * as filters from './filters'; import * as prepare from './prepare'; +import * as loaders from './loaders'; // provide method to give a stack track for warnings // useful for tracking-down where deprecated methods/properties/classes @@ -940,3 +941,65 @@ return NaN; }, }); + +Object.defineProperties(loaders.Resource.prototype, { + isJson: { + get() + { + warn('The isJson property is deprecated, please use `resource.type === Resource.TYPE.JSON`.'); + + return this.type === loaders.Loader.Resource.TYPE.JSON; + }, + }, + isXml: { + get() + { + warn('The isXml property is deprecated, please use `resource.type === Resource.TYPE.XML`.'); + + return this.type === loaders.Loader.Resource.TYPE.XML; + }, + }, + isImage: { + get() + { + warn('The isImage property is deprecated, please use `resource.type === Resource.TYPE.IMAGE`.'); + + return this.type === loaders.Loader.Resource.TYPE.IMAGE; + }, + }, + isAudio: { + get() + { + warn('The isAudio property is deprecated, please use `resource.type === Resource.TYPE.AUDIO`.'); + + return this.type === loaders.Loader.Resource.TYPE.AUDIO; + }, + }, + isVideo: { + get() + { + warn('The isVideo property is deprecated, please use `resource.type === Resource.TYPE.VIDEO`.'); + + return this.type === loaders.Loader.Resource.TYPE.VIDEO; + }, + }, +}); + +Object.defineProperties(loaders.Loader.prototype, { + before: { + get() + { + warn('The before() method is deprecated, please use pre().'); + + return this.pre; + }, + }, + after: { + get() + { + warn('The after() method is deprecated, please use use().'); + + return this.use; + }, + }, +}); diff --git a/src/loaders/bitmapFontParser.js b/src/loaders/bitmapFontParser.js index 94a7cbc..cc2618c 100644 --- a/src/loaders/bitmapFontParser.js +++ b/src/loaders/bitmapFontParser.js @@ -65,7 +65,7 @@ return function bitmapFontParser(resource, next) { // skip if no data or not xml data - if (!resource.data || !resource.isXml) + if (!resource.data || resource.type !== Resource.TYPE.XML) { next(); @@ -125,6 +125,7 @@ crossOrigin: resource.crossOrigin, loadType: Resource.LOAD_TYPE.IMAGE, metadata: resource.metadata.imageMetadata, + parentResource: resource, }; // load the texture for the font diff --git a/src/loaders/loader.js b/src/loaders/loader.js index 978aa2d..1ffe5e3 100644 --- a/src/loaders/loader.js +++ b/src/loaders/loader.js @@ -1,4 +1,5 @@ import ResourceLoader from 'resource-loader'; +import EventEmitter from 'eventemitter3'; import textureParser from './textureParser'; import spritesheetParser from './spritesheetParser'; import bitmapFontParser from './bitmapFontParser'; @@ -36,11 +37,19 @@ constructor(baseUrl, concurrency) { super(baseUrl, concurrency); + EventEmitter.call(this); for (let i = 0; i < Loader._pixiMiddleware.length; ++i) { this.use(Loader._pixiMiddleware[i]()); } + + // Compat layer, translate the new v2 signals into old v1 events. + this.onStart.add((l) => this.emit('start', l)); + this.onProgress.add((l, r) => this.emit('progress', l, r)); + this.onError.add((e, l, r) => this.emit('error', e, l, r)); + this.onLoad.add((l, r) => this.emit('load', l, r)); + this.onComplete.add((l, r) => this.emit('complete', l, r)); } /** @@ -55,6 +64,12 @@ } } +// Copy EE3 prototype (mixin) +for (const k in EventEmitter.prototype) +{ + Loader.prototype[k] = EventEmitter.prototype[k]; +} + Loader._pixiMiddleware = [ // parse any blob into more usable objects (e.g. Image) ResourceLoader.middleware.parsing.blob, diff --git a/src/loaders/spritesheetParser.js b/src/loaders/spritesheetParser.js index 2b30b1c..7570332 100644 --- a/src/loaders/spritesheetParser.js +++ b/src/loaders/spritesheetParser.js @@ -12,7 +12,11 @@ const imageResourceName = `${resource.name}_image`; // skip if no data, its not json, it isn't spritesheet data, or the image resource already exists - if (!resource.data || !resource.isJson || !resource.data.frames || this.resources[imageResourceName]) + if (!resource.data + || resource.type !== Resource.TYPE.JSON + || !resource.data.frames + || this.resources[imageResourceName] + ) { next(); @@ -23,6 +27,7 @@ crossOrigin: resource.crossOrigin, loadType: Resource.LOAD_TYPE.IMAGE, metadata: resource.metadata.imageMetadata, + parentResource: resource, }; // Prepend url path unless the resource image is a data url diff --git a/src/loaders/textureParser.js b/src/loaders/textureParser.js index 6bcbee6..5398a7f 100644 --- a/src/loaders/textureParser.js +++ b/src/loaders/textureParser.js @@ -1,11 +1,12 @@ import * as core from '../core'; +import { Resource } from 'resource-loader'; export default function () { return function textureParser(resource, next) { // create a new texture if the data is an Image object - if (resource.data && resource.isImage) + if (resource.data && resource.type === Resource.TYPE.IMAGE) { const baseTexture = new core.BaseTexture(resource.data, null, core.utils.getResolutionOfUrl(resource.url));