summaryrefslogtreecommitdiff
path: root/src/sprite.c
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2024-01-02 20:31:29 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2024-01-02 20:31:29 +0100
commitee4714ccff99414f19b6cce42e9fe53d2a867a15 (patch)
tree708d2077e232c39d43a505573d9f1168b5132358 /src/sprite.c
parent007335a39baff05fb7cabb07457cd5972a013fda (diff)
zombie sprite
Diffstat (limited to 'src/sprite.c')
-rw-r--r--src/sprite.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/sprite.c b/src/sprite.c
index 30307ae..5818ebf 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -11,6 +11,7 @@ sprite create_sprite(image* img, int frame_count, int fwidth, int fheight, float
s.sec_per_frame = sec_per_frame;
s.time = 0.0f;
s.frame_start = 0;
+ s.zoom = 1.0f;
return s;
}
@@ -42,10 +43,13 @@ sprite_frame sprite_get_frame(image* img, sprite* sprite) {
int column = (sprite->frame_start + sprite->current_frame) % columns;
int row = (sprite->frame_start + 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};
+ float offsetx = column_percentage * (sprite->zoom-1.0f);
+ float offsety = row_percentage * (sprite->zoom-1.0f);
+
+ frame.tl = (vec2f){column * column_percentage + offsetx, row * row_percentage + offsety};
+ frame.tr = (vec2f){column * column_percentage + column_percentage - offsetx, row * row_percentage + offsety};
+ frame.bl = (vec2f){column * column_percentage + offsetx, row * row_percentage + row_percentage - offsety};
+ frame.br = (vec2f){column * column_percentage + column_percentage - offsetx, row * row_percentage + row_percentage - offsety};
/*
frame.tl = (vec2f){0,0};
@@ -54,4 +58,16 @@ sprite_frame sprite_get_frame(image* img, sprite* sprite) {
frame.br = (vec2f){0.25f,0.25f};
*/
return frame;
+}
+
+sprite_frame sprite_swap_frame_horizontally(sprite_frame frame) {
+ vec2f tl = frame.tr;
+ vec2f tr = frame.tl;
+ vec2f bl = frame.br;
+ vec2f br = frame.bl;
+ frame.tl = tl;
+ frame.tr = tr;
+ frame.bl = bl;
+ frame.br = br;
+ return frame;
} \ No newline at end of file