From c15c603b35e86fd42e6db94a7382ba7a1ddadd6e Mon Sep 17 00:00:00 2001 From: Thomas Guillermo Albers Raviola Date: Fri, 16 Jan 2026 23:26:01 +0100 Subject: Initial commit --- util.c | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 util.c (limited to 'util.c') diff --git a/util.c b/util.c new file mode 100644 index 0000000..d91aff7 --- /dev/null +++ b/util.c @@ -0,0 +1,61 @@ +#include "game.h" +#include +#include + +SDL_Texture *load_texture(const char *name) +{ + int i; + SDL_Surface *surface; + SDL_Texture *texture; + + struct TextureContainer *container; + struct Resources *res = &game->resources; + + if(game->resources.num_textures >= MAX_TEXTURES) + return NULL; + + for(i = 0; i < res->num_stored_textures; i ++) + { + if(!strcmp(res->contained_textures[i].name, name)) + return res->contained_textures[i].texture; + } + + surface = IMG_Load(name); + texture = SDL_CreateTextureFromSurface(game->renderer, surface); + SDL_FreeSurface(surface); + + container = &res->contained_textures[res->num_stored_textures ++]; + strcpy(container->name, name); + container->texture = texture; + + res->textures[game->resources.num_textures ++] = texture; + + return texture; +} + +Mix_Chunk *load_sound(const char *name) +{ + Mix_Chunk *c; + struct Resources *res = &game->resources; + c = Mix_LoadWAV(name); + + if(!c) + die("%s could not be opened: %s", name, Mix_GetError()); + + res->audios[res->num_audios ++] = c; + + return c; +} + +void die(const char *error, ...) +{ + va_list args; + + va_start(args, error); + vfprintf(stderr, error, args); + va_end(args); + + free(game); + SDL_Quit(); + exit(1); +} -- cgit v1.2.3