From 61636892c5443c44870148284edac9df966e1fdf Mon Sep 17 00:00:00 2001 From: Ulysse Cura Date: Mon, 3 Mar 2025 18:22:56 +0100 Subject: [PATCH] Ading function for texture manager. --- src/texture_manager.c | 23 +++++++++++++++++++++-- src/texture_manager.h | 6 ++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/texture_manager.c b/src/texture_manager.c index 6a2c033..1bf21f8 100644 --- a/src/texture_manager.c +++ b/src/texture_manager.c @@ -40,6 +40,21 @@ void texture_manager_load_builtin_textures(texture_manager_t *texture_manager) } } +texture_t *texture_manager_load_builtin_texture(texture_manager_t *texture_manager, const char *name) +{ + for(size_t i = 0; i < BUILTIN_TEXTURE_COUNT; i++) + { + if(!strcmp(builtin_textures[i].name, name)) + { + texture_t *texture = create_texture((image_t *)builtin_textures[i].image, builtin_textures[i].name); + texture_manager_add_texture(texture_manager, texture); + return texture; + } + } + + return NULL; +} + inline void texture_manager_add_texture(texture_manager_t *texture_manager, texture_t *texture) { linked_list_push_back(&texture_manager->textures, texture); @@ -52,9 +67,13 @@ static inline bool is_texture_name(elem_t *elem, va_list args) return !strcmp(((texture_t *)elem->data)->name, va_arg(args, const char*)); } -inline texture_t *texture_manager_get_texture(const texture_manager_t *texture_manager, const char *name) +texture_t *texture_manager_get_texture(const texture_manager_t *texture_manager, const char *name) { - return linked_list_get_if(&texture_manager->textures, is_texture_name, name); + texture_t *texture = linked_list_get_if(&texture_manager->textures, is_texture_name, name); + if(texture) return texture; + + texture = texture_manager_load_builtin_texture(texture_manager, name); + return texture; } inline void texture_manager_remove_texture(texture_manager_t *texture_manager, const char *name) diff --git a/src/texture_manager.h b/src/texture_manager.h index a41d33d..ae297b8 100644 --- a/src/texture_manager.h +++ b/src/texture_manager.h @@ -51,6 +51,12 @@ void texture_manager_init(texture_manager_t *); @texture_manager Pointer to a texture manager */ void texture_manager_load_builtin_textures(texture_manager_t *); +/* texture_manager_load_builtin_texture(): Load texture declared in "textures.h" wich have "name" + + @texture_manager Pointer to a texture manager + @name Name of the texture to load */ +void texture_manager_load_builtin_texture(texture_manager_t *, const char*); + /* texture_manager_add_texture(): Add a texture in the texture manager @texture_manager Pointer to a texture manager