#pragma once #include "lib.h" #include "raylib.h" typedef struct { Texture2D texture; char *name; Size size; } SpriteSheet; typedef struct { char* name; u16 total_frames; Rectangle src_rect; } SpriteAnimation; typedef struct { u16 anim_id; u16 current_frame; f32 time_elapsed; } SpriteAnimationPlayback; void PlayAnimation(SpriteAnimationPlayback *playbacks, SpriteAnimationPlayback playback) { playback.time_elapsed = 0.0f; playback.current_frame = 0; playbacks[0] = playback; } void TickSpriteAnimations(SpriteAnimation *animations, SpriteAnimationPlayback *playbacks, int len) { const f32 anim_speed = 1.0f / 10.0f; for (int i = 0; i < len; i++) { SpriteAnimationPlayback *playback = &playbacks[i]; SpriteAnimation *animation = &animations[playback->anim_id]; playback->time_elapsed += GetFrameTime(); if (playback->time_elapsed >= anim_speed) { playback->time_elapsed = 0.0f; playback->current_frame++; if (playback->current_frame >= animation->total_frames) { playback->current_frame = 0; } } } }