From c5dd826c66a19aee2a8348f4f3d7ebd981b5cf49 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sun, 5 Nov 2023 19:15:16 +0000 Subject: [PATCH] Support loading bitmap fonts from an asset pack --- include/BitmapFont.h | 3 ++- include/GameEngine.h | 6 ++++-- src/BitmapFont.c | 5 +++-- src/GameEngine.c | 14 +++++++++++--- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/include/BitmapFont.h b/include/BitmapFont.h index 24234c1..73ac6b9 100644 --- a/include/BitmapFont.h +++ b/include/BitmapFont.h @@ -6,6 +6,7 @@ #include "AssetManager.h" #include "Renderer.h" #include "SDL_pixels.h" +#include "pak.h" #ifdef __cplusplus extern "C" { @@ -15,7 +16,7 @@ typedef struct bitmap_font BitmapFont; BitmapFont *create_bitmap_font(AssetManager *am, const Renderer *renderer, const char *filepath, u64 tile_width, - u64 tile_height); + u64 tile_height, asset_pack_t *pack); TextSize get_text_size_from_bitmap_font(BitmapFont *font, u64 font_size, const char *text); diff --git a/include/GameEngine.h b/include/GameEngine.h index dfab710..9b9c202 100644 --- a/include/GameEngine.h +++ b/include/GameEngine.h @@ -52,8 +52,10 @@ AssetID load_asset_from_pack(asset_pack_t *pack, const char *filename, void unload_asset(AssetID *id); #ifdef __ANDROID__ -BitmapFont *load_bitmap_font(const char *filepath, u64 tile_width, - u64 tile_height); +BitmapFont *load_bitmap_font_from_file(const char *filepath, u64 tile_width, + u64 tile_height); +BitmapFont *load_bitmap_font_from_pack(const char *filepath, u64 tile_width, + u64 tile_height, asset_pack_t *pack); void unload_bitmap_font(BitmapFont **font); #endif // __ANDROID__ // END ASSET MANAGEMENT API diff --git a/src/BitmapFont.c b/src/BitmapFont.c index a3ce856..9b12382 100644 --- a/src/BitmapFont.c +++ b/src/BitmapFont.c @@ -5,6 +5,7 @@ #include "Renderer.h" #include "SDL_render.h" #include "aliases.h" +#include "pak.h" #include "reusable_ids.h" #include #include @@ -23,14 +24,14 @@ RenderRect get_character_sprite(BitmapFont *font, u64 index); BitmapFont *create_bitmap_font(AssetManager *am, const Renderer *renderer, const char *filepath, u64 tile_width, - u64 tile_height) { + u64 tile_height, asset_pack_t *pack) { BitmapFont *font = (BitmapFont *)malloc(sizeof(BitmapFont)); if (!font) { return NULL; } font->font_atlas = - load_asset_to_manager(am, filepath, ASSET_TYPE_IMAGE, renderer); + load_asset_to_manager(am, filepath, ASSET_TYPE_IMAGE, renderer, pack); if (font->font_atlas == INVALID_ID) { destroy_bitmap_font(am, &font); diff --git a/src/GameEngine.c b/src/GameEngine.c index d1ffea7..a22cb9e 100644 --- a/src/GameEngine.c +++ b/src/GameEngine.c @@ -22,6 +22,7 @@ #include "Window.h" #include "aliases.h" #include "constants.h" +#include "pak.h" #include "reusable_ids.h" #include #include @@ -237,11 +238,18 @@ void unload_asset(AssetID *id) { } #ifdef __ANDROID__ -BitmapFont *load_bitmap_font(const char *filepath, u64 tile_width, - u64 tile_height) { +BitmapFont *load_bitmap_font_from_file(const char *filepath, u64 tile_width, + u64 tile_height) { return create_bitmap_font(GameEngine.asset_manager, GameEngine.window.renderer, filepath, tile_width, - tile_height); + tile_height, NULL); +} + +BitmapFont *load_bitmap_font_from_pack(const char *filepath, u64 tile_width, + u64 tile_height, asset_pack_t *pack) { + return create_bitmap_font(GameEngine.asset_manager, + GameEngine.window.renderer, filepath, tile_width, + tile_height, pack); } void unload_bitmap_font(BitmapFont **font) {