diff options
Diffstat (limited to 'inc/entity.h')
-rw-r--r-- | inc/entity.h | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/inc/entity.h b/inc/entity.h index 6614fef..40c2bce 100644 --- a/inc/entity.h +++ b/inc/entity.h @@ -41,45 +41,57 @@ typedef struct Entity { bool leave; bool do_x; bool do_y; + u8 color_group; + struct { + u8 r, g, b, a; + } color; } Entity; -vec_decl(EntityP, Entity*); +vec_decl(EntityP, Entity *); void entity_method(Entity *, const char *method); void entity_super(Entity *, const char *method); -[[deprecated("replaced by entities")]] bool entity_collide(Entity *, vec2 off, u32 type); +[[deprecated("replaced by entities")]] bool entity_collide(Entity *, vec2 off, + u32 type); bool entity_collide_solid(Entity *, vec2 off); bool entity_collide_spike(Entity *, vec2 off); bool entity_intersect(Entity *, vec2 off, Entity *); vec2 entity_move(Entity *, vec2 force); -Entity *entity_place_meeting(Entity *, vec2 off, const char *type, bool visible); -VecEntityP *entity_place_meeting_list(Entity *, vec2 off, const char *type, bool visible); +Entity *entity_place_meeting(Entity *, vec2 off, const char *type, + bool visible); +VecEntityP *entity_place_meeting_list(Entity *, vec2 off, const char *type, + bool visible); i32 entity_propertyi(Entity *, const char *property); i32 entity_propertyi_default(Entity *, const char *property, i32 def); i32 entity_propertyo(Entity *, const char *property); i32 entity_propertyo_default(Entity *, const char *property, i32 def); bool entity_propertyb(Entity *, const char *property); +const char *entity_propertyc(Entity *, const char *property); void entity_append_group(Entity *, u32 gid); void entity_append_groups(Entity *, const char *); void entity_copy_groups(Entity *, Entity *); bool entity_in_group(Entity *, u32 gid); -#define method(X) entity_method(this, (X)) -#define super(X) entity_super(this, (X)) -#define collide(O, T) entity_collide(this, (O), (T)) -#define collide_solid(O) entity_collide_solid(this, (O)) -#define collide_spike(O) entity_collide_spike(this, (O)) -#define move(X) entity_move(this, (X)); -#define intersect(O, E) entity_intersect(this, (O), (E)) +#define method(X) entity_method(this, (X)) +#define super(X) entity_super(this, (X)) +#define collide(O, T) entity_collide(this, (O), (T)) +#define collide_solid(O) entity_collide_solid(this, (O)) +#define collide_spike(O) entity_collide_spike(this, (O)) +#define move(X) entity_move(this, (X)); +#define intersect(O, E) entity_intersect(this, (O), (E)) #define place_meeting(O, T, V) entity_place_meeting(this, (O), (T), (V)) -#define place_meeting_list(O, T, V) entity_place_meeting_list(this, (O), (T), (V)) -#define propertyi(X) entity_propertyi(this, (X)) +#define place_meeting_list(O, T, V) \ + entity_place_meeting_list(this, (O), (T), (V)) +#define propertyi(X) entity_propertyi(this, (X)) #define propertyi_default(X, V) entity_propertyi_default(this, (X), (V)) -#define propertyo(X) entity_propertyo(this, (X)) +#define propertyo(X) entity_propertyo(this, (X)) #define propertyo_default(X, V) entity_propertyo_default(this, (X), (V)) -#define propertyb(X) entity_propertyb(this, (X)) -#define draw_hitbox(...) \ - TZR_DrawSetColor(__VA_ARGS__, .a=0.5), \ - TZR_DrawRectangle((i32)POS.x, (i32)POS.y, DIM.x, DIM.y, true, true),\ - TZR_DrawRectangle((i32)POS.x, (i32)POS.y, DIM.x, DIM.y, false, true),\ - TZR_DrawSetColor(.a=1) +#define propertyb(X) entity_propertyb(this, (X)) +#define propertyc(X) entity_propertyc(this, (X)) +#define draw_hitbox(...) \ + TZR_DrawSetColor(__VA_ARGS__, .a = 0.5), \ + TZR_DrawRectangle((i32)POS.x, (i32)POS.y, DIM.x, DIM.y, true, \ + true), \ + TZR_DrawRectangle((i32)POS.x, (i32)POS.y, DIM.x, DIM.y, false, \ + true), \ + TZR_DrawSetColor(.a = 1) |