diff options
Diffstat (limited to 'graphics/src/render.rs')
| -rw-r--r-- | graphics/src/render.rs | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/graphics/src/render.rs b/graphics/src/render.rs index 945528b..bbfa2b9 100644 --- a/graphics/src/render.rs +++ b/graphics/src/render.rs @@ -46,6 +46,27 @@ macro_rules! draw_text { }}; } +#[cfg(not(feature = "static"))] +macro_rules! load_texture { + ($handle:expr, $thread:expr, $filepath:expr) => ( + $handle.load_texture($thread, $filepath)? + ) +} + +#[cfg(feature = "static")] +macro_rules! load_texture { + ($handle:expr, $thread:expr, $filepath:expr) => ( + { + let bytes = include_bytes!(concat!("../../", $filepath)); + let len = $filepath.len(); + let ext = &$filepath[len-4..]; + let image = ::raylib::texture::Image::load_image_from_mem(ext, bytes)?; + $handle.load_texture_from_image($thread, &image)? + } + + ) +} + /// The baseline size of all ingame sprites and tile textures const TEXTURE_SIZE: u16 = 16; @@ -121,10 +142,10 @@ struct Textures { } impl Textures { fn new(handle: &mut RaylibHandle, thread: &RaylibThread) -> crate::Result<Self> { - let atlas = handle.load_texture(thread, "assets/atlas.bmp")?; - let player = handle.load_texture(thread, "assets/player.bmp")?; - let error = handle.load_texture(thread, "assets/error.bmp")?; - let font = handle.load_texture(thread, "assets/font.bmp")?; + let atlas = load_texture!(handle, thread, "assets/atlas.bmp"); + let player = load_texture!(handle, thread, "assets/player.bmp"); + let error = load_texture!(handle, thread, "assets/error.bmp"); + let font = load_texture!(handle, thread, "assets/font.bmp"); Ok(Self { atlas, |