Moving to unified 'add' structure and removing multiatlas

This commit is contained in:
Richard Davey 2018-04-28 12:32:03 +01:00
parent 9a974514ff
commit 0390af16e9
6 changed files with 116 additions and 78 deletions

View file

@ -110,7 +110,7 @@ var LoaderPlugin = new Class({
* @default {} * @default {}
* @since 3.0.0 * @since 3.0.0
*/ */
this._multilist = {}; // this._multilist = {};
// Inject the available filetypes into the Loader // Inject the available filetypes into the Loader
FileTypesManager.install(this); FileTypesManager.install(this);
@ -362,7 +362,7 @@ var LoaderPlugin = new Class({
{ {
if (!this.isReady()) if (!this.isReady())
{ {
return -1; return;
} }
if (Array.isArray(file)) if (Array.isArray(file))
@ -666,6 +666,7 @@ var LoaderPlugin = new Class({
return; return;
} }
/*
// The global Texture Manager // The global Texture Manager
var cache = this.scene.sys.cache; var cache = this.scene.sys.cache;
var textures = this.scene.sys.textures; var textures = this.scene.sys.textures;
@ -717,6 +718,7 @@ var LoaderPlugin = new Class({
} }
} }
} }
*/
// Process all of the files // Process all of the files
@ -843,14 +845,15 @@ var LoaderPlugin = new Class({
}, },
/** /**
* [description] * Called by the Scene Manager if you specify a files payload for a pre-Scene Boot.
* Takes an array of file objects.
* *
* @method Phaser.Loader.LoaderPlugin#loadArray * @method Phaser.Loader.LoaderPlugin#loadArray
* @since 3.0.0 * @since 3.0.0
* *
* @param {LoaderFileObject[]} files - [description] * @param {LoaderFileObject[]} files - An array of files to load.
* *
* @return {boolean} [description] * @return {boolean} `true` if any files were successfully added to the list, otherwise `false`.
*/ */
loadArray: function (files) loadArray: function (files)
{ {
@ -858,59 +861,16 @@ var LoaderPlugin = new Class({
{ {
for (var i = 0; i < files.length; i++) for (var i = 0; i < files.length; i++)
{ {
this.file(files[i]); var file = files[i];
// Calls file-type methods like `atlas` or `image`
this[file.type](file);
} }
} }
return (this.list.size > 0); return (this.list.size > 0);
}, },
/**
* [description]
*
* @method Phaser.Loader.LoaderPlugin#file
* @since 3.0.0
*
* @param {LoaderFileObject} file - [description]
*
* @return {Phaser.Loader.File} [description]
*/
file: function (file)
{
var entry;
var key = file.key;
switch (file.type)
{
case 'spritesheet':
entry = this.spritesheet(key, file.url, file.config, file.xhrSettings);
break;
case 'atlas':
entry = this.atlas(key, file.textureURL, file.atlasURL, file.textureXhrSettings, file.atlasXhrSettings);
break;
case 'bitmapFont':
entry = this.bitmapFont(key, file.textureURL, file.xmlURL, file.textureXhrSettings, file.xmlXhrSettings);
break;
case 'multiatlas':
entry = this.multiatlas(key, file.textureURLs, file.atlasURLs, file.textureXhrSettings, file.atlasXhrSettings);
break;
case 'audioSprite':
entry = this.audioSprite(key, file.urls, file.json, file.config, file.audioXhrSettings, file.jsonXhrSettings);
break;
// image, json, xml, binary, text, glsl, svg, obj
default:
entry = this[file.type](key, file.url, file.xhrSettings);
break;
}
return entry;
},
/** /**
* The Scene that owns this plugin is shutting down. * The Scene that owns this plugin is shutting down.
* We need to kill and reset all internal properties as well as stop listening to Scene events. * We need to kill and reset all internal properties as well as stop listening to Scene events.

View file

@ -6,6 +6,7 @@
var Class = require('../../utils/Class'); var Class = require('../../utils/Class');
var FileTypesManager = require('../FileTypesManager'); var FileTypesManager = require('../FileTypesManager');
var GetFastValue = require('../../utils/object/GetFastValue');
var JSONFile = require('./JSONFile.js'); var JSONFile = require('./JSONFile.js');
/** /**
@ -73,20 +74,28 @@ var AnimationJSONFile = new Class({
*/ */
FileTypesManager.register('animation', function (key, url, xhrSettings) FileTypesManager.register('animation', function (key, url, xhrSettings)
{ {
var file;
// Supports an Object file definition in the key argument
// Or an array of objects in the key argument
// Or a single entry where all arguments have been defined
if (Array.isArray(key)) if (Array.isArray(key))
{ {
for (var i = 0; i < key.length; i++) for (var i = 0; i < key.length; i++)
{ {
// If it's an array it has to be an array of Objects, so we get everything out of the 'key' object file = new AnimationJSONFile(this, key[i]);
this.addFile(new AnimationJSONFile(this, key[i], url, xhrSettings));
this.addFile(file);
} }
} }
else else
{ {
this.addFile(new AnimationJSONFile(this, key, url, xhrSettings)); file = this.addFile(new AnimationJSONFile(this, key, url, xhrSettings));
this.addFile(file);
} }
// For method chaining
return this; return this;
}); });

View file

@ -6,7 +6,9 @@
var Class = require('../../utils/Class'); var Class = require('../../utils/Class');
var FileTypesManager = require('../FileTypesManager'); var FileTypesManager = require('../FileTypesManager');
var GetFastValue = require('../../utils/object/GetFastValue');
var ImageFile = require('./ImageFile.js'); var ImageFile = require('./ImageFile.js');
var IsPlainObject = require('../../utils/object/IsPlainObject');
var JSONFile = require('./JSONFile.js'); var JSONFile = require('./JSONFile.js');
var LinkFile = require('../LinkFile.js'); var LinkFile = require('../LinkFile.js');
@ -35,6 +37,17 @@ var AtlasJSONFile = new Class({
function AtlasJSONFile (loader, key, textureURL, atlasURL, textureXhrSettings, atlasXhrSettings) function AtlasJSONFile (loader, key, textureURL, atlasURL, textureXhrSettings, atlasXhrSettings)
{ {
if (IsPlainObject(key))
{
var config = key;
key = GetFastValue(config, 'key');
textureURL = GetFastValue(config, 'textureURL');
atlasURL = GetFastValue(config, 'atlasURL');
textureXhrSettings = GetFastValue(config, 'textureXhrSettings');
atlasXhrSettings = GetFastValue(config, 'atlasXhrSettings');
}
var image = new ImageFile(loader, key, textureURL, textureXhrSettings); var image = new ImageFile(loader, key, textureURL, textureXhrSettings);
var data = new JSONFile(loader, key, atlasURL, atlasXhrSettings); var data = new JSONFile(loader, key, atlasURL, atlasXhrSettings);
@ -88,18 +101,25 @@ FileTypesManager.register('atlas', function (key, textureURL, atlasURL, textureX
{ {
var linkfile; var linkfile;
if ((typeof key === 'object') && (key !== null)) // Supports an Object file definition in the key argument
// Or an array of objects in the key argument
// Or a single entry where all arguments have been defined
if (Array.isArray(key))
{ {
// If param key is an object, use object based loading method for (var i = 0; i < key.length; i++)
linkfile = new AtlasJSONFile(this, key.key, key.texture, key.data, textureXhrSettings, atlasXhrSettings); {
linkfile = new AtlasJSONFile(this, key[i]);
this.addFile(linkfile.files);
}
} }
else else
{ {
// else just use the parameters like normal
linkfile = new AtlasJSONFile(this, key, textureURL, atlasURL, textureXhrSettings, atlasXhrSettings); linkfile = new AtlasJSONFile(this, key, textureURL, atlasURL, textureXhrSettings, atlasXhrSettings);
}
this.addFile(linkfile.files); this.addFile(linkfile.files);
}
return this; return this;
}); });

View file

@ -9,6 +9,7 @@ var CONST = require('../const');
var File = require('../File'); var File = require('../File');
var FileTypesManager = require('../FileTypesManager'); var FileTypesManager = require('../FileTypesManager');
var GetFastValue = require('../../utils/object/GetFastValue'); var GetFastValue = require('../../utils/object/GetFastValue');
var IsPlainObject = require('../../utils/object/IsPlainObject');
/** /**
* @classdesc * @classdesc
@ -33,17 +34,27 @@ var BinaryFile = new Class({
function BinaryFile (loader, key, url, xhrSettings) function BinaryFile (loader, key, url, xhrSettings)
{ {
var fileKey = (typeof key === 'string') ? key : GetFastValue(key, 'key', ''); var extension = 'bin';
if (IsPlainObject(key))
{
var config = key;
key = GetFastValue(config, 'key');
url = GetFastValue(config, 'url');
xhrSettings = GetFastValue(config, 'xhrSettings');
extension = GetFastValue(config, 'extension', extension);
}
var fileConfig = { var fileConfig = {
type: 'binary', type: 'binary',
cache: loader.cacheManager.binary, cache: loader.cacheManager.binary,
extension: GetFastValue(key, 'extension', 'bin'), extension: extension,
responseType: 'arraybuffer', responseType: 'arraybuffer',
key: fileKey, key: key,
url: GetFastValue(key, 'file', url), url: url,
path: loader.path, path: loader.path,
xhrSettings: GetFastValue(key, 'xhr', xhrSettings) xhrSettings: xhrSettings
}; };
File.call(this, loader, fileConfig); File.call(this, loader, fileConfig);

View file

@ -7,6 +7,7 @@
var Class = require('../../utils/Class'); var Class = require('../../utils/Class');
var FileTypesManager = require('../FileTypesManager'); var FileTypesManager = require('../FileTypesManager');
var ImageFile = require('./ImageFile.js'); var ImageFile = require('./ImageFile.js');
var IsPlainObject = require('../../utils/object/IsPlainObject');
var LinkFile = require('../LinkFile.js'); var LinkFile = require('../LinkFile.js');
var ParseXMLBitmapFont = require('../../gameobjects/bitmaptext/ParseXMLBitmapFont.js'); var ParseXMLBitmapFont = require('../../gameobjects/bitmaptext/ParseXMLBitmapFont.js');
var XMLFile = require('./XMLFile.js'); var XMLFile = require('./XMLFile.js');
@ -34,10 +35,21 @@ var BitmapFontFile = new Class({
initialize: initialize:
function BitmapFontFile (loader, key, textureURL, atlasURL, textureXhrSettings, atlasXhrSettings) function BitmapFontFile (loader, key, textureURL, xmlURL, textureXhrSettings, xmlXhrSettings)
{ {
if (IsPlainObject(key))
{
var config = key;
key = GetFastValue(config, 'key');
textureURL = GetFastValue(config, 'textureURL');
xmlURL = GetFastValue(config, 'xmlURL');
textureXhrSettings = GetFastValue(config, 'textureXhrSettings');
xmlXhrSettings = GetFastValue(config, 'xmlXhrSettings');
}
var image = new ImageFile(loader, key, textureURL, textureXhrSettings); var image = new ImageFile(loader, key, textureURL, textureXhrSettings);
var data = new XMLFile(loader, key, atlasURL, atlasXhrSettings); var data = new XMLFile(loader, key, xmlURL, xmlXhrSettings);
LinkFile.call(this, loader, 'bitmapfont', key, [ image, data ]); LinkFile.call(this, loader, 'bitmapfont', key, [ image, data ]);
}, },
@ -95,10 +107,27 @@ var BitmapFontFile = new Class({
*/ */
FileTypesManager.register('bitmapFont', function (key, textureURL, xmlURL, textureXhrSettings, xmlXhrSettings) FileTypesManager.register('bitmapFont', function (key, textureURL, xmlURL, textureXhrSettings, xmlXhrSettings)
{ {
// Returns an object with two properties: 'texture' and 'data' var linkfile;
var linkfile = new BitmapFontFile(this, key, textureURL, xmlURL, textureXhrSettings, xmlXhrSettings);
// Supports an Object file definition in the key argument
// Or an array of objects in the key argument
// Or a single entry where all arguments have been defined
if (Array.isArray(key))
{
for (var i = 0; i < key.length; i++)
{
linkfile = new BitmapFontFile(this, key[i]);
this.addFile(linkfile.files); this.addFile(linkfile.files);
}
}
else
{
linkfile = new BitmapFontFile(this, key, textureURL, xmlURL, textureXhrSettings, xmlXhrSettings);
this.addFile(linkfile.files);
}
return this; return this;
}); });

View file

@ -33,17 +33,27 @@ var GLSLFile = new Class({
function GLSLFile (loader, key, url, xhrSettings) function GLSLFile (loader, key, url, xhrSettings)
{ {
var fileKey = (typeof key === 'string') ? key : GetFastValue(key, 'key', ''); var extension = 'glsl';
if (IsPlainObject(key))
{
var config = key;
key = GetFastValue(config, 'key');
url = GetFastValue(config, 'url');
xhrSettings = GetFastValue(config, 'xhrSettings');
extension = GetFastValue(config, 'extension', extension);
}
var fileConfig = { var fileConfig = {
type: 'glsl', type: 'glsl',
cache: loader.cacheManager.shader, cache: loader.cacheManager.shader,
extension: GetFastValue(key, 'extension', 'glsl'), extension: extension,
responseType: 'text', responseType: 'text',
key: fileKey, key: key,
url: GetFastValue(key, 'file', url), url: url,
path: loader.path, path: loader.path,
xhrSettings: GetFastValue(key, 'xhr', xhrSettings) xhrSettings: xhrSettings
}; };
File.call(this, loader, fileConfig); File.call(this, loader, fileConfig);
@ -94,7 +104,6 @@ FileTypesManager.register('glsl', function (key, url, xhrSettings)
this.addFile(new GLSLFile(this, key, url, xhrSettings)); this.addFile(new GLSLFile(this, key, url, xhrSettings));
} }
// For method chaining
return this; return this;
}); });