From d005a7756f6d15f67a7033a53bae23d00a58af69 Mon Sep 17 00:00:00 2001 From: zlago Date: Sun, 6 Oct 2024 19:54:24 +0200 Subject: particles and projectiles --- src/entity.h | 53 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 11 deletions(-) (limited to 'src/entity.h') diff --git a/src/entity.h b/src/entity.h index fe76feb..0166bdc 100644 --- a/src/entity.h +++ b/src/entity.h @@ -5,23 +5,29 @@ #define from_fixed(a) (a / 16) #define to_fixed(a) (a * 16) +struct vec2 { + signed x, y; +}; + +struct hitbox { + unsigned left, right, top, bottom; +}; + +struct anim { + unsigned frame; + SDL_Rect rect; + unsigned length; +}; + struct entity { int (*update)(struct entity *self); int (*hurt)(struct entity *self, int damage); int (*draw)(struct entity *self, int camx, int camy); void (*free)(struct entity *self); int x, y; // unsigned results in a bunch of weird edge cases - struct velocity { - signed x, y; - } velocity; - struct hitbox { - unsigned left, right, top, bottom; - } hitbox; - struct anim { - unsigned frame; - SDL_Rect rect; - unsigned length; - } anim; + struct vec2 velocity; + struct hitbox hitbox; + struct anim anim; unsigned state; int hp; int timer; @@ -40,3 +46,28 @@ struct warp { unsigned timer; void *ext; }; + +struct projectile { + int (*update)(struct projectile *self); + int (*draw)(struct projectile *self, int camx, int camy); + void (*free)(struct projectile *self); + int x, y; // unsigned results in a bunch of weird edge cases + struct vec2 velocity; + struct hitbox hitbox; + struct anim anim; + unsigned state; + int hp; + int timer; + int iframes; + signed facing; + void *texture; + void *ext; +}; + +struct particle { + int x, y; + struct vec2 velocity; + struct vec2 acceleration; + SDL_Rect rect; + int hp; +}; -- cgit 1.4.1-2-gfad0