summaryrefslogtreecommitdiff
path: root/inc/entity.h
diff options
context:
space:
mode:
Diffstat (limited to 'inc/entity.h')
-rw-r--r--inc/entity.h52
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)