tinyswords/sprites.h

47 lines
1.2 KiB
C

#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;
}
}
}
}