Files
lime/tools/project/Asset.hx
2014-09-30 17:41:57 -07:00

150 lines
2.7 KiB
Haxe

package project;
import haxe.io.Path;
import helpers.FileHelper;
import helpers.ObjectHelper;
import helpers.StringHelper;
import helpers.PathHelper;
import project.AssetType;
import sys.FileSystem;
class Asset {
public var data:Dynamic;
public var embed:Null<Bool>;
public var encoding:AssetEncoding;
public var flatName:String;
public var format:String;
public var glyphs:String;
public var id:String;
//public var path:String;
//public var rename:String;
public var resourceName:String;
public var sourcePath:String;
public var targetPath:String;
public var type:AssetType;
public function new (path:String = "", rename:String = "", type:AssetType = null, embed:Null<Bool> = null, setDefaults:Bool = true) {
if (!setDefaults) return;
this.embed = embed;
sourcePath = PathHelper.standardize(path);
if (rename == "") {
targetPath = path;
} else {
targetPath = rename;
}
id = targetPath;
resourceName = targetPath;
flatName = StringHelper.getFlatName (targetPath);
format = Path.extension (path).toLowerCase ();
glyphs = "32-255";
if (type == null) {
var extension = Path.extension (path);
switch (extension.toLowerCase ()) {
case "jpg", "jpeg", "png", "gif":
this.type = AssetType.IMAGE;
case "otf", "ttf":
this.type = AssetType.FONT;
case "wav":
this.type = AssetType.SOUND;
case "ogg":
if (FileSystem.exists (path)) {
var stat = FileSystem.stat (path);
//if (stat.size > 1024 * 128) {
if (stat.size > 1024 * 1024) {
this.type = AssetType.MUSIC;
} else {
this.type = AssetType.SOUND;
}
} else {
this.type = AssetType.SOUND;
}
case "mp3", "mp2":
this.type = AssetType.MUSIC;
case "text", "txt", "json", "xml", "svg", "css", "plist":
this.type = AssetType.TEXT;
default:
if (path != "" && FileHelper.isText (path)) {
this.type = AssetType.TEXT;
} else {
this.type = AssetType.BINARY;
}
}
} else {
this.type = type;
}
}
public function clone ():Asset {
var asset = new Asset ("", "", null, null, false);
asset.data = data;
asset.embed = embed;
asset.encoding = encoding;
asset.flatName = flatName;
asset.format = format;
asset.glyphs = glyphs;
asset.id = id;
asset.resourceName = resourceName;
asset.sourcePath = sourcePath;
asset.targetPath = targetPath;
asset.type = type;
//ObjectHelper.copyFields (this, asset);
return asset;
}
}