From 5aa90fc5af61faa84d01aa3eba40f83c17708bfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Wed, 1 Feb 2023 17:26:52 +0100 Subject: [PATCH] fix mem leak and improve spritesheet explorer --- code/games/survival/src/platform.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/code/games/survival/src/platform.c b/code/games/survival/src/platform.c index af6ca27..d69f800 100644 --- a/code/games/survival/src/platform.c +++ b/code/games/survival/src/platform.c @@ -93,28 +93,33 @@ void platform_input() { void debug_draw_spritesheet() { if (nk_begin(game_ui, "Spritesheet debug", nk_rect(660, 100, 240, 800), - NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE| NK_WINDOW_TITLE)) + NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE|NK_WINDOW_TITLE)) { - nk_layout_row_dynamic(game_ui, 0, 1); + nk_layout_row_dynamic(game_ui, 0, 2); static int spritesheet_frame_id = 0; if(nk_button_label(game_ui, "Prev")){ - spritesheet_frame_id-=10; + spritesheet_frame_id-=100; } if(nk_button_label(game_ui, "Next")){ - spritesheet_frame_id+=10; + spritesheet_frame_id+=100; } static bool loaded = false; static struct nk_image nuclear_image; + static int max_frames = 0; if (!loaded) { nuclear_image = TextureToNuklear(main_sprite_sheet.texture); + max_frames = nuclear_image.w*nuclear_image.h / (32*32); + zpl_printf("pica %d\n", max_frames); + loaded = true; } - - nk_layout_row_static(game_ui, 32, 32, 6); - for(size_t i = 0; i < 10; i++) { + + nk_layout_row_static(game_ui, 32, 32, (int)(nk_window_get_size(game_ui).x / 32.f) -1); + for(int i = 0; i < 100; i++) { int frame = spritesheet_frame_id + i; + frame %= max_frames; float ox = (frame % main_sprite_sheet.framesWide) * main_sprite_sheet.frameSize.x; float oy = (int)(frame / main_sprite_sheet.framesWide) * main_sprite_sheet.frameSize.y; nuclear_image.region[0] = (nk_short)ox;