diff --git a/src/asset_manager.c b/src/asset_manager.c index e41bc09..df8412c 100644 --- a/src/asset_manager.c +++ b/src/asset_manager.c @@ -29,7 +29,7 @@ int destroy_asset(asset_t *asset) switch(asset->type) { case ASSET_TEXTURE: - SDL_DestroyTexture(asset->data.texture); + SDL_DestroyTexture(asset->data); break; default: @@ -197,8 +197,8 @@ static inline int load_texture(asset_t *asset, asset_header_def_t *asset_header_ return EXIT_FAILURE; } - asset->data.texture = SDL_CreateTextureFromSurface(renderer, tmp_surface); - if(!asset->data.texture) + asset->data = SDL_CreateTextureFromSurface(renderer, tmp_surface); + if(!asset->data) { error_printf("Failed to create texture from temporary surface : %s", SDL_GetError()); SDL_DestroySurface(tmp_surface); @@ -292,7 +292,7 @@ int asset_manager_let_go_asset(asset_manager_t *asset_manager, const char *asset return EXIT_SUCCESS; } -texture_t *asset_manager_get_texture(asset_manager_t *asset_manager, const char *texture_name) +asset_t *asset_manager_get(asset_manager_t *asset_manager, const char *texture_name) { assert("Asset manager cannot be NULL" && asset_manager); @@ -303,13 +303,5 @@ texture_t *asset_manager_get_texture(asset_manager_t *asset_manager, const char return NULL; } - asset_t *asset = asset_elem->data; - - if(asset->type != ASSET_TEXTURE) - { - error_printf("Asset \"%s\" isn't of type ASSET_TEXTURE.", texture_name); - return NULL; - } - - return asset->data.texture; + return asset_elem->data; } diff --git a/src/headers/asset_manager.h b/src/headers/asset_manager.h index b154c40..25d9182 100644 --- a/src/headers/asset_manager.h +++ b/src/headers/asset_manager.h @@ -16,9 +16,7 @@ typedef enum asset_type_t { typedef struct asset_t { char *name; - union { - texture_t *texture; - } data; + void *data; size_t nb_refs; @@ -49,6 +47,6 @@ int asset_manager_collect_garbage(asset_manager_t *asset_manager); int asset_manager_load_asset(asset_manager_t *asset_manager, const char *asset_name, asset_type_t asset_type); int asset_manager_let_go_asset(asset_manager_t *asset_manager, const char *asset_name); -texture_t *asset_manager_get_texture(asset_manager_t *asset_manager, const char *asset_name); +asset_t *asset_manager_get(asset_manager_t *asset_manager, const char *asset_name); #endif // ASSET_MANAGER_H \ No newline at end of file