diff options
author | kdx <kikoodx@paranoici.org> | 2022-12-27 13:09:55 +0100 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2022-12-27 13:09:55 +0100 |
commit | afa7e90035c6736ebe5dd3e47774c75c41893516 (patch) | |
tree | 2540c71c12f48edcb5be09cb570f47f34f140501 | |
parent | ecaf8b65537214b738e08a10c0ffb4055672fbd1 (diff) | |
download | lzr-afa7e90035c6736ebe5dd3e47774c75c41893516.tar.gz |
simpler image system
-rw-r--r-- | demo.c | 8 | ||||
-rw-r--r-- | lzr.c | 14 | ||||
-rw-r--r-- | lzr.h | 1 |
3 files changed, 16 insertions, 7 deletions
@@ -10,8 +10,6 @@ int main(void) 400, 224, 60, 16, "LZR demo", false, SDL_BLENDMODE_MUL}; if (LZR_Init(cfg)) return 1; - LZR_ImageLoad("coucou.bmp"); - LZR_ImageLoad("tset.bmp"); float darkness = 0.0f; float dark_dir = 1.0f; int x = 0; @@ -48,11 +46,11 @@ int main(void) LZR_DrawSetColor(0.9f, 0.9f, 0.8f); LZR_DrawClear(); LZR_DrawSetColor(1.0f, 1.0f, 1.0f); - LZR_DrawTile(1, 2, 2, 2, 0.0, 0); - LZR_DrawTile(1, 4, 22, 2, 0.0, 0); + LZR_DrawTile(LZR_IMAGE(tset.bmp), 2, 2, 2, 0.0, 0); + LZR_DrawTile(LZR_IMAGE(tset.bmp), 4, 22, 2, 0.0, 0); const float shade = 0.9 * (0.5f + darkness); LZR_DrawSetColor(shade, shade, 0.0f); - LZR_DrawImageEx(0, x, y, stg); + LZR_DrawImageEx(LZR_IMAGE(coucou.bmp), x, y, stg); LZR_DrawCircle(false, x, y, 100); LZR_DrawEnd(); } @@ -30,6 +30,7 @@ static bool should_quit = false; static struct { SDL_Texture *tex; int width, height; + char *path; } images[LZR_MAX_IMAGES] = {0}; static unsigned int color[3] = {0}; static unsigned int map[LZR_BUTTON_COUNT] = { @@ -242,12 +243,17 @@ void LZR_Quit(void) Mix_CloseAudio(); Mix_Quit(); #endif - for (int i = 0; i < LZR_MAX_IMAGES; i++) + for (int i = 0; i < LZR_MAX_IMAGES; i++) { if (images[i].tex != NULL) { SDL_DestroyTexture(images[i].tex); images[i].tex = NULL; SDL_Log("destroyed image %d", i); } + if (images[i].path != NULL) { + free(images[i].path); + images[i].path = NULL; + } + } if (points != NULL) { free(points); points = NULL; @@ -302,9 +308,12 @@ char *LZR_PathPrefix(const char *path) int LZR_ImageLoad(const char *path) { int i; - for (i = 0; i < LZR_MAX_IMAGES; i++) + for (i = 0; i < LZR_MAX_IMAGES; i++) { + if (images[i].path != NULL && strcmp(images[i].path, path) == 0) + return i; if (images[i].tex == NULL) break; + } if (i >= LZR_MAX_IMAGES) { SDL_Log("reached image limit (%d)", LZR_MAX_IMAGES); return -1; @@ -340,6 +349,7 @@ int LZR_ImageLoad(const char *path) SDL_Log("%s", SDL_GetError()); return -1; } + images[i].path = _strdup(path); return i; } @@ -10,6 +10,7 @@ #define LZR_MAX_IMAGES 32 #define LZR_MAX_SOUNDS 64 #define LZR_BUTTON(btn) LZR_ButtonDown(LZR_BUTTON_##btn) +#define LZR_IMAGE(img) LZR_ImageLoad(#img) typedef struct LZR_Config { unsigned int display_width; |