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