From 753f59e0e00c7d215b1ddcb5dc4c054df3f2c564 Mon Sep 17 00:00:00 2001 From: GBA bot Date: Thu, 13 Apr 2023 22:31:45 +0100 Subject: [PATCH] Allow importing aseprite backgrounds directly --- agb-image-converter/src/image_loader.rs | 16 +++++++++++++--- examples/hyperspace-roll/gfx/help-text.png | Bin 591 -> 0 bytes examples/hyperspace-roll/gfx/stars.png | Bin 550 -> 0 bytes examples/hyperspace-roll/gfx/title-screen.png | Bin 4313 -> 0 bytes examples/hyperspace-roll/src/background.rs | 6 +++--- examples/the-purple-night/gfx/background.png | Bin 2082 -> 0 bytes examples/the-purple-night/gfx/boss.png | Bin 3041 -> 0 bytes examples/the-purple-night/gfx/objects.png | Bin 9719 -> 0 bytes examples/the-purple-night/src/lib.rs | 2 +- 9 files changed, 17 insertions(+), 7 deletions(-) delete mode 100644 examples/hyperspace-roll/gfx/help-text.png delete mode 100644 examples/hyperspace-roll/gfx/stars.png delete mode 100644 examples/hyperspace-roll/gfx/title-screen.png delete mode 100644 examples/the-purple-night/gfx/background.png delete mode 100644 examples/the-purple-night/gfx/boss.png delete mode 100644 examples/the-purple-night/gfx/objects.png diff --git a/agb-image-converter/src/image_loader.rs b/agb-image-converter/src/image_loader.rs index 9126a637..81c8fff8 100644 --- a/agb-image-converter/src/image_loader.rs +++ b/agb-image-converter/src/image_loader.rs @@ -1,6 +1,6 @@ -use std::path; +use std::{ffi::OsStr, path}; -use image::GenericImageView; +use image::{DynamicImage, GenericImageView}; use crate::colour::Colour; @@ -12,7 +12,17 @@ pub(crate) struct Image { impl Image { pub fn load_from_file(image_path: &path::Path) -> Self { - let img = image::open(image_path).expect("Expected image to exist"); + let img = if image_path + .extension() + .is_some_and(|extension| extension == OsStr::new("aseprite")) + { + let ase = + asefile::AsepriteFile::read_file(image_path).expect("failed to read aseprite file"); + DynamicImage::ImageRgba8(ase.frame(0).image()) + } else { + image::open(image_path).expect("Expected image to exist") + }; + Self::load_from_dyn_image(img) } diff --git a/examples/hyperspace-roll/gfx/help-text.png b/examples/hyperspace-roll/gfx/help-text.png deleted file mode 100644 index de6db475873f6bd474bf2594f17945669a4772ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0Px%2}wjjRCt{2naz=dFbstSLkdV*NEPWPW#zKfq=mhthLpgb%y`6;WP@kCAbpqM zKP)-IMvvikz09BYi-?Hsk0+(;ynKH=mpa~_*P-$GxV*pA#_RH5bWc97HYc)K^1}-g zT6}8(v_DS@8dP5k4+vy83Y^prl_fvCF!HCCh*o8e)!u3hx(C`Rr1ly=&^mZvB+|ET z#Fi(e#nV+{*B(DS2Ek;VtyWn&e=V#z@;bzpBSqRFw)$`ehTHWr_ckKv$JpC|pf3>s z&KZf;XYJ?xTD@JTa=PYa-d7s0&B5C_QXk2tylnX?*=?=K(O()zF0`aF7j1a1k8=NX zo&Taf`8``KAfHpRA&2|LfBCv_A4=vp0&oYgKu?mj5G{q47CJ;p@NMz)Xe>HF4YkT) z>eF+(L^fJBdC&W)k|3yAuojEE=N`5Go{5zXfI#PM zttL?W&0Wj$x7blLzt(T7hVfqs9l$w}20AAKz&Q~B&WQkUP6U8+A^@Bd0pOen0Ov#i dI41(YIe+FpSS2R9=LP@(002ovPDHLkV1k}Z5kmj~ diff --git a/examples/hyperspace-roll/gfx/stars.png b/examples/hyperspace-roll/gfx/stars.png deleted file mode 100644 index 65062d6e6e384270b473f8237a277eb6ed5bfa69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmV+>0@?kEP)Px$;7LS5RCt{2THBGrFbs4uLjlkNRnX6sML$$QE%43xI936;SBDd=aFy#8!2{l}Cwk?Npjrah45=?a zb3b$q^mkMSaIc8u3LnJ_Q38?(*9EwN7QnOPAK{mKmH_mRNGnX?3JS35%9X^3429_E zUP=ea60jyvVO4UO0oDYpAtpeSE|Mjn9gwo4li=WDH%JAA&uK~k5@~NQ@(L<9C__$@ z0T6NyuqIGpReq@L@anQWdiU_berLBDa=D_ek#LE=7$^*+gga=42N(ccY z;lczhA+j0j!OJ+@f^{=Ag0|B`XydC-f+K-7#A)NJo1m9ATfuIEN2{pu@++AXstrnH zPbdK-kaK|4gRR@$FGgIl1gr^g0+V$ve=aXEWI@<&*UQJ-aH5I5lr`n7&5b*LnxHiS zYq*#L+G~6F&Rl~**94_aQNwg+V=Q@qhi<{mVXqHugY-ZR?BTZu-4mhqp_m{uFE{)7 oT+#!&CqmL5;GuLNoPG}Y0{t2n(s^v4>Hq)$07*qoM6N<$f*bwvDgXcg diff --git a/examples/hyperspace-roll/gfx/title-screen.png b/examples/hyperspace-roll/gfx/title-screen.png deleted file mode 100644 index cc2c524053ca82f69ada0fadcd047b966c891e12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4313 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 Hu0mjf+f6s3 diff --git a/examples/hyperspace-roll/src/background.rs b/examples/hyperspace-roll/src/background.rs index 85609f85..61035ce1 100644 --- a/examples/hyperspace-roll/src/background.rs +++ b/examples/hyperspace-roll/src/background.rs @@ -6,9 +6,9 @@ use agb::{ use crate::sfx::Sfx; include_background_gfx!(backgrounds, "121105", - stars => "gfx/stars.png", - title => "gfx/title-screen.png", - help => "gfx/help-text.png", + stars => "gfx/stars.aseprite", + title => "gfx/title-screen.aseprite", + help => "gfx/help-text.aseprite", descriptions1 => "gfx/descriptions1.png", descriptions2 => "gfx/descriptions2.png", ); diff --git a/examples/the-purple-night/gfx/background.png b/examples/the-purple-night/gfx/background.png deleted file mode 100644 index 32786957942310769d0206c6cdb8932e1f730b00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2082 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 M07*qoM6N<$f+~LSjsO4v diff --git a/examples/the-purple-night/gfx/boss.png b/examples/the-purple-night/gfx/boss.png deleted file mode 100644 index b17c3a39247115e4bc9ede448886c6fa0ed14fa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3041 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 Z_4Ic*nao2Y@JlY>nUa "gfx/background.png"); +agb::include_background_gfx!(background, "53269a", background => "gfx/background.aseprite"); type Number = FixedNum<8>;