var BaseLoader = require('../../loader/BaseLoader'); var Class = require('../../utils/Class'); var CONST = require('../../loader/const'); var NumberArray = require('../../utils/array/NumberArray'); var AnimationJSONFile = require('../../loader/filetypes/AnimationJSONFile'); var AtlasJSONFile = require('../../loader/filetypes/AtlasJSONFile'); var AudioFile = require('../../loader/filetypes/AudioFile'); var BinaryFile = require('../../loader/filetypes/BinaryFile'); var BitmapFontFile = require('../../loader/filetypes/BitmapFontFile'); var GLSLFile = require('../../loader/filetypes/GLSLFile'); var HTMLFile = require('../../loader/filetypes/HTMLFile'); var ImageFile = require('../../loader/filetypes/ImageFile'); var JSONFile = require('../../loader/filetypes/JSONFile'); var ScriptFile = require('../../loader/filetypes/ScriptFile'); var SpriteSheet = require('../../loader/filetypes/SpriteSheet'); var SVGFile = require('../../loader/filetypes/SVGFile'); var TextFile = require('../../loader/filetypes/TextFile'); var TilemapCSVFile = require('../../loader/filetypes/TilemapCSVFile'); var TilemapJSONFile = require('../../loader/filetypes/TilemapJSONFile'); var UnityAtlasFile = require('../../loader/filetypes/UnityAtlasFile'); var WavefrontFile = require('../../loader/filetypes/WavefrontFile'); var XMLFile = require('../../loader/filetypes/XMLFile'); var Loader = new Class({ Extends: BaseLoader, initialize: function Loader(scene){ BaseLoader.call(this, scene); this._multilist = { } ; } , image: function (key, url, xhrSettings){ return ImageFile.create(this, key, url, xhrSettings); } , animation: function (key, url, xhrSettings){ return AnimationJSONFile.create(this, key, url, xhrSettings); } , json: function (key, url, xhrSettings){ return JSONFile.create(this, key, url, xhrSettings); } , script: function (key, url, xhrSettings){ return ScriptFile.create(this, key, url, xhrSettings); } , xml: function (key, url, xhrSettings){ return XMLFile.create(this, key, url, xhrSettings); } , binary: function (key, url, xhrSettings){ return BinaryFile.create(this, key, url, xhrSettings); } , text: function (key, url, xhrSettings){ return TextFile.create(this, key, url, xhrSettings); } , glsl: function (key, url, xhrSettings){ return GLSLFile.create(this, key, url, xhrSettings); } , html: function (key, url, width, height, xhrSettings){ return HTMLFile.create(this, key, url, width, height, xhrSettings); } , svg: function (key, url, xhrSettings){ return SVGFile.create(this, key, url, xhrSettings); } , obj: function (key, url, xhrSettings){ return WavefrontFile.create(this, key, url, xhrSettings); } , spritesheet: function (key, url, config, xhrSettings){ return SpriteSheet.create(this, key, url, config, xhrSettings); } , audio: function (key, urls, config, xhrSettings){ var audioFile = AudioFile.create(this, key, urls, config, xhrSettings); if (audioFile) { this.addFile(audioFile); } return this; } , tilemapCSV: function (key, url, xhrSettings){ return TilemapCSVFile.create(this, key, url, xhrSettings); } , tilemapJSON: function (key, url, xhrSettings){ return TilemapJSONFile.create(this, key, url, xhrSettings); } , audioSprite: function (key, urls, json, config, audioXhrSettings, jsonXhrSettings){ var audioFile = AudioFile.create(this, key, urls, config, audioXhrSettings); if (audioFile) { var jsonFile; if (typeof json === 'string') { jsonFile = new JSONFile(key, json, this.path, jsonXhrSettings); this.addFile(jsonFile); } else { jsonFile = { type: 'json', key: key, data: json, state: CONST.FILE_WAITING_LINKFILE} ; } audioFile.linkFile = jsonFile; jsonFile.linkFile = audioFile; audioFile.linkType = 'audioSprite'; jsonFile.linkType = 'audioSprite'; this.addFile(audioFile); } return this; } , unityAtlas: function (key, textureURL, atlasURL, textureXhrSettings, atlasXhrSettings){ var files = new UnityAtlasFile(key, textureURL, atlasURL, this.path, textureXhrSettings, atlasXhrSettings); this.addFile(files.texture); this.addFile(files.data); return this; } , atlas: function (key, textureURL, atlasURL, textureXhrSettings, atlasXhrSettings){ var files = new AtlasJSONFile(key, textureURL, atlasURL, this.path, textureXhrSettings, atlasXhrSettings); this.addFile(files.texture); this.addFile(files.data); return this; } , bitmapFont: function (key, textureURL, xmlURL, textureXhrSettings, xmlXhrSettings){ var files = new BitmapFontFile(key, textureURL, xmlURL, this.path, textureXhrSettings, xmlXhrSettings); this.addFile(files.texture); this.addFile(files.data); return this; } , multiatlas: function (key, textureURLs, atlasURLs, textureXhrSettings, atlasXhrSettings){ if (typeof textureURLs === 'number') { var total = textureURLs; var suffix = (atlasURLs === undefined)? '': atlasURLs; textureURLs = NumberArray(0, total, key + suffix, '.png'); atlasURLs = NumberArray(0, total, key + suffix, '.json'); } else { if (!Array.isArray(textureURLs)) { textureURLs = [textureURLs] ; } if (!Array.isArray(atlasURLs)) { atlasURLs = [atlasURLs] ; } } var file; var i = 0; var multiKey; this._multilist[key] = [] ; for (i = 0; i < (_AN_Read_length('length', textureURLs)); i++ ){ multiKey = '_MA_IMG_' + key + '_' + i.toString(); file = new ImageFile(multiKey, textureURLs[i], this.path, textureXhrSettings); this.addFile(file); this._multilist[key].push(multiKey); } for (i = 0; i < (_AN_Read_length('length', atlasURLs)); i++ ){ multiKey = '_MA_JSON_' + key + '_' + i.toString(); file = new JSONFile(multiKey, atlasURLs[i], this.path, atlasXhrSettings); this.addFile(file); this._multilist[key].push(multiKey); } } , loadArray: function (files){ if (Array.isArray(files)) { for (var i = 0; i < (_AN_Read_length('length', files)); i++ ){ this.file(files[i]); } } return (this.list.size > 0); } , file: function (file){ var entry; switch (file.type){ case 'spritesheet': entry = this.spritesheet(file.key, _AN_Read_url('url', file), file.config, file.xhrSettings); break ; case 'atlas': entry = this.atlas(file.key, file.textureURL, file.atlasURL, file.textureXhrSettings, file.atlasXhrSettings); break ; case 'bitmapFont': entry = this.bitmapFont(file.key, file.textureURL, file.xmlURL, file.textureXhrSettings, file.xmlXhrSettings); break ; case 'multiatlas': entry = this.multiatlas(file.key, file.textureURLs, file.atlasURLs, file.textureXhrSettings, file.atlasXhrSettings); break ; case 'audioSprite': entry = this.audioSprite(file.key, file.urls, file.json, file.config, file.audioXhrSettings, file.jsonXhrSettings); break ; default : { entry = this[file.type](file.key, _AN_Read_url('url', file), file.xhrSettings); break ; } } return entry; } } ); module.exports = Loader;