From d85919855e6a6c4a018935e23d8841fc954fe409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Thu, 4 Nov 2021 13:34:15 +0100 Subject: [PATCH] animated tiles support --- code/game/src/assets.c | 43 ++++++++-- code/game/src/assets.h | 2 + code/game/src/assets_list.c | 3 +- code/game/src/gen/texgen.c | 91 +++++++++++++-------- code/game/src/gen/texgen.h | 1 + code/game/src/platform_raylib.c | 2 + project.4coder | 139 ++++++++++++++++---------------- 7 files changed, 169 insertions(+), 112 deletions(-) diff --git a/code/game/src/assets.c b/code/game/src/assets.c index 0d9ee57..bac9f36 100644 --- a/code/game/src/assets.c +++ b/code/game/src/assets.c @@ -18,6 +18,11 @@ typedef struct { #include "assets_list.c" +#define ASSET_FRAME_RENDER_MS (1.0/10.0) +#define ASSET_FRAME_SKIP 2 +static int64_t assets_frame_counter = 1; +static double assets_frame_next_draw = 0.0; + int32_t assets_setup(void) { for (uint32_t i=0; itex = texgen_build_sprite(b->id); }break; + case AKIND_ANIM: { + b->tex = texgen_build_anim(b->id, 0); + }break; + case AKIND_SOUND: { // TODO(zaklaus): soundgen }break; - default: { - // TODO(zaklaus): assert - }break; + default: break; } } + + assets_frame_next_draw = zpl_time_rel() + ASSET_FRAME_RENDER_MS; + return 0; +} + +int32_t assets_frame(void) { + if (assets_frame_next_draw < zpl_time_rel()) { + for (uint32_t i=0; ikind) { + case AKIND_ANIM: { + UnloadTexture(b->tex); + b->tex = texgen_build_anim(b->id, assets_frame_counter); + }break; + + default: break; + } + } + + assets_frame_next_draw = zpl_time_rel() + ASSET_FRAME_RENDER_MS; + assets_frame_counter += ASSET_FRAME_SKIP; + } + return 0; } void assets_destroy(void) { for (uint32_t i=0; i