diff options
| author | Aldrik Ramaekers <aldrik@amftech.nl> | 2022-12-20 21:32:31 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@amftech.nl> | 2022-12-20 21:32:31 +0100 |
| commit | 88fb94168c87dd8cc07e16cb988e0ea5c25bc202 (patch) | |
| tree | 4ccbd60426aac061c80f0264040363daa24e393d /src/sprite.c | |
| parent | 38d8d7f442a4b5cb66815ada7bb508c734186c6e (diff) | |
spawner sprite
Diffstat (limited to 'src/sprite.c')
| -rw-r--r-- | src/sprite.c | 33 |
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 |
