Res.hx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package arm;
  2. import kha.Image;
  3. import iron.data.Data;
  4. class Res {
  5. static var bundled: Map<String, Image> = new Map();
  6. public static function load(names: Array<String>, done: Void->Void) {
  7. var loaded = 0;
  8. for (s in names) {
  9. Data.getImage(s, function(image: Image) {
  10. bundled.set(s, image);
  11. loaded++;
  12. if (loaded == names.length) done();
  13. });
  14. }
  15. }
  16. public static inline function get(name: String): Image {
  17. return bundled.get(name);
  18. }
  19. public static function tile50(img: kha.Image, x: Int, y: Int): TRect {
  20. var size = Config.raw.window_scale > 1 ? 100 : 50;
  21. return { x: x * size, y: y * size, w: size, h: size };
  22. }
  23. public static function tile18(img: kha.Image, x: Int, y: Int): TRect {
  24. var size = Config.raw.window_scale > 1 ? 36 : 18;
  25. return { x: x * size, y: img.height - (y + 1) * size, w: size, h: size };
  26. }
  27. #if arm_snapshot
  28. public static function embedRaw(handle: String, name: String, file: js.lib.ArrayBuffer) {
  29. iron.data.Data.cachedBlobs.set(name, kha.Blob.fromBytes(haxe.io.Bytes.ofData(file)));
  30. iron.data.Data.getSceneRaw(handle, function(_) {});
  31. iron.data.Data.cachedBlobs.remove(name);
  32. }
  33. public static function embedBlob(name: String, file: js.lib.ArrayBuffer) {
  34. iron.data.Data.cachedBlobs.set(name, kha.Blob.fromBytes(haxe.io.Bytes.ofData(file)));
  35. }
  36. public static function embedFont(name: String, file: js.lib.ArrayBuffer) {
  37. iron.data.Data.cachedFonts.set(name, new kha.Font(kha.Blob.fromBytes(haxe.io.Bytes.ofData(file))));
  38. }
  39. #end
  40. }
  41. typedef TRect = {
  42. public var x: Int;
  43. public var y: Int;
  44. public var w: Int;
  45. public var h: Int;
  46. }