78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
|  | package kha; | ||
|  | 
 | ||
|  | import kha.FontStyle; | ||
|  | import kha.Blob; | ||
|  | import kha.Kravur; | ||
|  | import haxe.io.Bytes; | ||
|  | import haxe.io.BytesData; | ||
|  | 
 | ||
|  | class LoaderImpl { | ||
|  | 	public static function getImageFormats(): Array<String> { | ||
|  | 		return ["png", "jpg"]; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function loadImageFromDescription(desc: Dynamic, done: kha.Image->Void, failed: AssetError->Void) { | ||
|  | 		var readable = Reflect.hasField(desc, "readable") ? desc.readable : false; | ||
|  | 		var texture = Krom.loadImage(desc.files[0], readable); | ||
|  | 		if (texture == null) { | ||
|  | 			failed({ | ||
|  | 				url: desc.files.join(","), | ||
|  | 				error: "Could not load image(s)", | ||
|  | 			}); | ||
|  | 		} | ||
|  | 		else { | ||
|  | 			done(Image._fromTexture(texture)); | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function getSoundFormats(): Array<String> { | ||
|  | 		return ["wav", "ogg"]; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function loadSoundFromDescription(desc: Dynamic, done: kha.Sound->Void, failed: AssetError->Void) { | ||
|  | 		var sound = Krom.loadSound(desc.files[0]); | ||
|  | 		if (sound == null) { | ||
|  | 			failed({ | ||
|  | 				url: desc.files.join(","), | ||
|  | 				error: "Could not load sound(s)", | ||
|  | 			}); | ||
|  | 		} | ||
|  | 		else { | ||
|  | 			done(new kha.krom.Sound(Bytes.ofData(sound))); | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function getVideoFormats(): Array<String> { | ||
|  | 		return ["webm"]; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function loadVideoFromDescription(desc: Dynamic, done: kha.Video->Void, failed: AssetError->Void): Void { | ||
|  | 		failed({ | ||
|  | 			url: desc.files.join(","), | ||
|  | 			error: "Could not load video(s), Krom currently does not support loading videos", | ||
|  | 		}); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function loadBlobFromDescription(desc: Dynamic, done: Blob->Void, failed: AssetError->Void) { | ||
|  | 		var blob = Krom.loadBlob(desc.files[0]); | ||
|  | 		if (blob == null) { | ||
|  | 			failed({ | ||
|  | 				url: desc.files.join(","), | ||
|  | 				error: "Could not load blob(s)", | ||
|  | 			}); | ||
|  | 		} | ||
|  | 		else { | ||
|  | 			done(new Blob(Bytes.ofData(blob))); | ||
|  | 		} | ||
|  | 	} | ||
|  | 
 | ||
|  | 	public static function loadFontFromDescription(desc: Dynamic, done: Font->Void, failed: AssetError->Void): Void { | ||
|  | 		loadBlobFromDescription(desc, function(blob: Blob) { | ||
|  | 			done(new Kravur(blob)); | ||
|  | 		}, (a: AssetError) -> { | ||
|  | 			a.error = "Could not load font(s)"; | ||
|  | 			failed(a); | ||
|  | 		}); | ||
|  | 	} | ||
|  | } |