UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

387 lines (370 loc) 12 kB
// Class: lime.utils.Assets var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; var $bind = require("./../../bind_stub").default; function lime_utils_AssetCache() {return require("./../../lime/utils/AssetCache");} function lime_app__$Event_$Void_$Void() {return require("./../../lime/app/_Event_Void_Void");} function haxe_ds_StringMap() {return require("./../../haxe/ds/StringMap");} function lime_utils__$Assets_LibrarySymbol() {return require("./../../lime/utils/_Assets/LibrarySymbol");} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function lime_utils_Log() {return require("./../../lime/utils/Log");} function lime_app_Future() {return require("./../../lime/app/Future");} function lime_app_Promise() {return require("./../../lime/app/Promise");} function lime_utils_AssetBundle() {return require("./../../lime/utils/AssetBundle");} function lime_utils_AssetLibrary() {return require("./../../lime/utils/AssetLibrary");} function haxe_io_Path() {return require("./../../haxe/io/Path");} function StringTools() {return require("./../../StringTools");} function lime_utils_AssetManifest() {return require("./../../lime/utils/AssetManifest");} function lime_app_Application() {return require("./../../lime/app/Application");} // Constructor var Assets = function(){} // Meta Assets.__name__ = "lime.utils.Assets"; Assets.__isInterface__ = false; Assets.prototype = { }; Assets.prototype.__class__ = Assets.prototype.constructor = $hxClasses["lime.utils.Assets"] = Assets; // Init // Statics Assets.exists = function(id,type) { if(type == null) { type = "BINARY"; } var symbol = new (lime_utils__$Assets_LibrarySymbol().default)(id); if(symbol.library != null) { return symbol.exists(type); } return false; } Assets.getAsset = function(id,type,useCache) { if(useCache && Assets.cache.enabled) { switch(type) { case "BINARY":case "TEXT": useCache = false; break; case "FONT": var font = Assets.cache.font.get(id); if(font != null) { return font; } break; case "IMAGE": var image = Assets.cache.image.get(id); if(Assets.isValidImage(image)) { return image; } break; case "MUSIC":case "SOUND": var audio = Assets.cache.audio.get(id); if(Assets.isValidAudio(audio)) { return audio; } break; case "TEMPLATE": throw new (js__$Boot_HaxeError().default)("Not sure how to get template: " + id); default: return null; } } var symbol = new (lime_utils__$Assets_LibrarySymbol().default)(id); if(symbol.library != null) { if(symbol.exists(type)) { if(symbol.isLocal(type)) { var asset = symbol.library.getAsset(symbol.symbolName,type); if(useCache && Assets.cache.enabled) { Assets.cache.set(id,type,asset); } return asset; } else { (lime_utils_Log().default).error(type + " asset \"" + id + "\" exists, but only asynchronously",{ fileName : "../node_modules/lime/src/lime/utils/Assets.hx", lineNumber : 133, className : "lime.utils.Assets", methodName : "getAsset"}); } } else { (lime_utils_Log().default).error("There is no " + type + " asset with an ID of \"" + id + "\"",{ fileName : "../node_modules/lime/src/lime/utils/Assets.hx", lineNumber : 138, className : "lime.utils.Assets", methodName : "getAsset"}); } } else { (lime_utils_Log().default).error(Assets.__libraryNotFound(symbol.libraryName),{ fileName : "../node_modules/lime/src/lime/utils/Assets.hx", lineNumber : 143, className : "lime.utils.Assets", methodName : "getAsset"}); } return null; } Assets.getAudioBuffer = function(id,useCache) { if(useCache == null) { useCache = true; } return Assets.getAsset(id,"SOUND",useCache); } Assets.getBytes = function(id) { return Assets.getAsset(id,"BINARY",false); } Assets.getFont = function(id,useCache) { if(useCache == null) { useCache = true; } return Assets.getAsset(id,"FONT",useCache); } Assets.getImage = function(id,useCache) { if(useCache == null) { useCache = true; } return Assets.getAsset(id,"IMAGE",useCache); } Assets.getLibrary = function(name) { if(name == null || name == "") { name = "default"; } return Assets.libraries.get(name); } Assets.getPath = function(id) { var symbol = new (lime_utils__$Assets_LibrarySymbol().default)(id); if(symbol.library != null) { if(symbol.exists()) { return symbol.library.getPath(symbol.symbolName); } else { (lime_utils_Log().default).error("There is no asset with an ID of \"" + id + "\"",{ fileName : "../node_modules/lime/src/lime/utils/Assets.hx", lineNumber : 224, className : "lime.utils.Assets", methodName : "getPath"}); } } else { (lime_utils_Log().default).error(Assets.__libraryNotFound(symbol.libraryName),{ fileName : "../node_modules/lime/src/lime/utils/Assets.hx", lineNumber : 229, className : "lime.utils.Assets", methodName : "getPath"}); } return null; } Assets.getText = function(id) { return Assets.getAsset(id,"TEXT",false); } Assets.hasLibrary = function(name) { if(name == null || name == "") { name = "default"; } return Assets.libraries.exists(name); } Assets.isLocal = function(id,type,useCache) { if(useCache == null) { useCache = true; } if(useCache && Assets.cache.enabled) { if(Assets.cache.exists(id,type)) { return true; } } var symbol = new (lime_utils__$Assets_LibrarySymbol().default)(id); if(symbol.library != null) { return symbol.isLocal(type); } else { return false; } } Assets.isValidAudio = function(buffer) { return buffer != null; } Assets.isValidImage = function(image) { if(image != null) { return image.buffer != null; } else { return false; } } Assets.list = function(type) { var items = []; var library = Assets.libraries.iterator(); while(library.hasNext()) { var library1 = library.next(); var libraryItems = library1.list(type); if(libraryItems != null) { items = items.concat(libraryItems); } } return items; } Assets.loadAsset = function(id,type,useCache) { if(useCache && Assets.cache.enabled) { switch(type) { case "BINARY":case "TEXT": useCache = false; break; case "FONT": var font = Assets.cache.font.get(id); if(font != null) { return (lime_app_Future().default).withValue(font); } break; case "IMAGE": var image = Assets.cache.image.get(id); if(Assets.isValidImage(image)) { return (lime_app_Future().default).withValue(image); } break; case "MUSIC":case "SOUND": var audio = Assets.cache.audio.get(id); if(Assets.isValidAudio(audio)) { return (lime_app_Future().default).withValue(audio); } break; case "TEMPLATE": throw new (js__$Boot_HaxeError().default)("Not sure how to get template: " + id); default: return null; } } var symbol = new (lime_utils__$Assets_LibrarySymbol().default)(id); if(symbol.library != null) { if(symbol.exists(type)) { var future = symbol.library.loadAsset(symbol.symbolName,type); if(useCache && Assets.cache.enabled) { future.onComplete(function(asset) { Assets.cache.set(id,type,asset); }); } return future; } else { return (lime_app_Future().default).withError("There is no " + type + " asset with an ID of \"" + id + "\""); } } else { return (lime_app_Future().default).withError(Assets.__libraryNotFound(symbol.libraryName)); } } Assets.loadAudioBuffer = function(id,useCache) { if(useCache == null) { useCache = true; } return Assets.loadAsset(id,"SOUND",useCache); } Assets.loadBytes = function(id) { return Assets.loadAsset(id,"BINARY",false); } Assets.loadFont = function(id,useCache) { if(useCache == null) { useCache = true; } return Assets.loadAsset(id,"FONT",useCache); } Assets.loadImage = function(id,useCache) { if(useCache == null) { useCache = true; } return Assets.loadAsset(id,"IMAGE",useCache); } Assets.loadLibrary = function(id) { var promise = new (lime_app_Promise().default)(); var library = Assets.getLibrary(id); if(library != null) { return library.load(); } var path = id; var rootPath = null; if(Assets.bundlePaths.exists(id)) { (lime_utils_AssetBundle().default).loadFromFile(Assets.bundlePaths.get(id)).onComplete(function(bundle) { if(bundle == null) { promise.error("Cannot load bundle for library \"" + id + "\""); return; } var library1 = (lime_utils_AssetLibrary().default).fromBundle(bundle); if(library1 == null) { promise.error("Cannot open library \"" + id + "\""); } else { Assets.libraries.set(id,library1); library1.onChange.add(($_=Assets.onChange,$bind($_,$_.dispatch))); var tmp = library1.load(); promise.completeWith(tmp); } }).onError(function(_) { promise.error("There is no asset library with an ID of \"" + id + "\""); }); } else { if(Assets.libraryPaths.exists(id)) { path = Assets.libraryPaths.get(id); rootPath = (haxe_io_Path().default).directory(path); } else { if((StringTools().default).endsWith(path,".bundle")) { rootPath = path; path += "/library.json"; } else { rootPath = (haxe_io_Path().default).directory(path); } path = Assets.__cacheBreak(path); } (lime_utils_AssetManifest().default).loadFromFile(path,rootPath).onComplete(function(manifest) { if(manifest == null) { promise.error("Cannot parse asset manifest for library \"" + id + "\""); return; } var library2 = (lime_utils_AssetLibrary().default).fromManifest(manifest); if(library2 == null) { promise.error("Cannot open library \"" + id + "\""); } else { Assets.libraries.set(id,library2); library2.onChange.add(($_=Assets.onChange,$bind($_,$_.dispatch))); var tmp1 = library2.load(); promise.completeWith(tmp1); } }).onError(function(_1) { promise.error("There is no asset library with an ID of \"" + id + "\""); }); } return promise.future; } Assets.loadText = function(id) { return Assets.loadAsset(id,"TEXT",false); } Assets.registerLibrary = function(name,library) { if(name == null || name == "") { name = "default"; } if(Assets.libraries.exists(name)) { if(Assets.libraries.get(name) == library) { return; } else { Assets.unloadLibrary(name); } } if(library != null) { library.onChange.add(Assets.library_onChange); } Assets.libraries.set(name,library); } Assets.unloadLibrary = function(name) { Assets.removeLibrary(name,true); } Assets.removeLibrary = function(name,unload) { if(unload == null) { unload = true; } if(name == null || name == "") { name = "default"; } var library = Assets.libraries.get(name); if(library != null) { Assets.cache.clear(name + ":"); library.onChange.remove(Assets.library_onChange); if(unload) { library.unload(); } } Assets.libraries.remove(name); } Assets.__cacheBreak = function(path) { return path; } Assets.__libraryNotFound = function(name) { if(name == null || name == "") { name = "default"; } if((lime_app_Application().default).current != null && (lime_app_Application().default).current.get_preloader() != null && !(lime_app_Application().default).current.get_preloader().complete) { return "There is no asset library named \"" + name + "\", or it is not yet preloaded"; } else { return "There is no asset library named \"" + name + "\""; } } Assets.library_onChange = function() { Assets.cache.clear(); Assets.onChange.dispatch(); } Assets.cache = new (lime_utils_AssetCache().default)() Assets.onChange = new (lime_app__$Event_$Void_$Void().default)() Assets.bundlePaths = new (haxe_ds_StringMap().default)() Assets.libraries = new (haxe_ds_StringMap().default)() Assets.libraryPaths = new (haxe_ds_StringMap().default)() // Export exports.default = Assets;