summaryrefslogtreecommitdiff
path: root/src/sprite.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sprite.c')
-rw-r--r--src/sprite.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/sprite.c b/src/sprite.c
index 6b35e62..fa6f2e9 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -13,16 +13,37 @@ sprite create_sprite(image* img, int frame_count, int fwidth, int fheight, float
}
void update_sprite(sprite* sprite) {
+ sprite->time += SERVER_TICK_RATE;
int frame = sprite->time / sprite->sec_per_frame;
sprite->current_frame = frame;
- sprite->time += update_delta;
+ if (frame >= sprite->frame_count) {
+ sprite->time = 0.0f;
+ sprite->current_frame = 0;
+ }
}
-sprite_frame get_frame(sprite* sprite) {
- sprite_frame frame;
+sprite_frame sprite_get_frame(sprite* sprite) {
+ sprite_frame frame = {0};
+ if (!sprite->image->loaded) return frame;
+
+ int columns = sprite->image->width / sprite->frame_width;
+ int rows = sprite->image->height / sprite->frame_height;
+ float column_percentage = 1.0f / columns;
+ float row_percentage = 1.0f / rows;
+
+ int column = sprite->current_frame % columns;
+ int row = sprite->current_frame / columns;
+
+ frame.tl = (vec2f){column * column_percentage, row * row_percentage};
+ frame.tr = (vec2f){column * column_percentage + column_percentage, row * row_percentage};
+ frame.bl = (vec2f){column * column_percentage, row * row_percentage + row_percentage};
+ frame.br = (vec2f){column * column_percentage + column_percentage, row * row_percentage + row_percentage};
+
+ /*
frame.tl = (vec2f){0,0};
- frame.tr = (vec2f){1,0};
- frame.bl = (vec2f){0,1};
- frame.br = (vec2f){1,1};
+ frame.tr = (vec2f){0.25f,0};
+ frame.bl = (vec2f){0,0.25f};
+ frame.br = (vec2f){0.25f,0.25f};
+ */
return frame;
} \ No newline at end of file