Textdateiankuckdingviech.
[hackover2013-badge-firmware.git] / badge / jumpnrun / moveable.h
index 5e7514b..786b5df 100644 (file)
@@ -2,17 +2,35 @@
 #define INCLUDED_BADGE_JUMPNRUN_MOVEABLE_H
 
 #include "../util/util.h"
+#include <stdint.h>
+
+enum {
+  // Do not collide with JUMPNRUN_ENEMY_* and JUMPNRUN_PLAYER_* flags.
+  JUMPNRUN_MOVEABLE_TOUCHING_GROUND = 1,
+  JUMPNRUN_MOVEABLE_MIRRORED        = 2,
+  JUMPNRUN_MOVEABLE_DYING           = 4
+};
+
+enum {
+  JUMPNRUN_SPLOSION_FRAMES          =  4,
+  JUMPNRUN_SPLOSION_TICKS_PER_FRAME = 15
+};
 
 typedef struct jumpnrun_moveable {
-  rectangle current_box;
+  rectangle hitbox;
   vec2d     inertia;
 
   uint8_t   tick_minor;
   uint8_t   anim_frame;
-  uint8_t   anim_direction;
 
-  bool      touching_ground;
+  uint8_t   flags;
   uint8_t   jumpable_frames;
 } jumpnrun_moveable;
 
+static inline bool jumpnrun_moveable_touching_ground(jumpnrun_moveable const *self) { return self->flags & JUMPNRUN_MOVEABLE_TOUCHING_GROUND; }
+static inline bool jumpnrun_moveable_mirrored       (jumpnrun_moveable const *self) { return self->flags & JUMPNRUN_MOVEABLE_MIRRORED       ; }
+static inline bool jumpnrun_moveable_dying          (jumpnrun_moveable const *self) { return self->flags & JUMPNRUN_MOVEABLE_DYING          ; }
+
+static inline bool jumpnrun_moveable_finished_dying (jumpnrun_moveable const *self) { return jumpnrun_moveable_dying(self) && self->tick_minor >= JUMPNRUN_SPLOSION_FRAMES * JUMPNRUN_SPLOSION_TICKS_PER_FRAME; }
+
 #endif
This page took 0.02717 seconds and 4 git commands to generate.