Lebensscreen.
[hackover2013-badge-firmware.git] / badge / jumpnrun / jumpnrun.h
index 0d0dfd1..f2933d9 100644 (file)
@@ -6,9 +6,8 @@
 #include "levels.h"
 #include "tiles.h"
 
-#include <badge/util/fixed_point.h>
-#include <badge/util/rectangle.h>
-#include <badge/ui/sprite.h>
+#include "../ui/sprite.h"
+#include "../util/util.h"
 
 #include <stdbool.h>
 #include <stddef.h>
@@ -25,28 +24,34 @@ enum {
   JUMPNRUN_MAX_SPAWNED_ENEMIES = 10
 };
 
-typedef struct jumpnrun_game_state {
-  vec2d   current_pos;
-  vec2d   inertia;
-  uint8_t status;
-
-  uint8_t tick_minor;
-  uint8_t anim_frame;
-  uint8_t anim_direction;
+typedef struct jumpnrun_shot {
+  rectangle old_box;
+  rectangle current_box;
+  vec2d     inertia;
+  uint8_t   tick;
+} jumpnrun_shot;
 
-  int     left;
+static inline bool jumpnrun_shot_spawned(jumpnrun_shot const *shot) { return fixed_point_ne(shot->inertia.x, FIXED_INT(0)); }
+static inline void jumpnrun_shot_despawn(jumpnrun_shot       *shot) { shot->inertia.x = FIXED_INT(0); }
 
-  bool    touching_ground;
-  uint8_t jumpable_frames;
+enum {
+  JUMPNRUN_MAX_SHOTS = 2
+};
 
-  size_t  spawned_enemies_counter;
-  size_t  spawned_enemies[JUMPNRUN_MAX_SPAWNED_ENEMIES];
-} jumpnrun_game_state;
+typedef struct jumpnrun_game_state {
+  jumpnrun_moveable player;
 
-rectangle hacker_rect_current(jumpnrun_game_state const *state);
+  uint8_t status;
+  int     left;
+  uint8_t lives;
+  uint8_t keys;
 
+  jumpnrun_shot shots[JUMPNRUN_MAX_SHOTS];
+} jumpnrun_game_state;
 
+vec2d hacker_extents(void);
 void jumpnrun_passive_movement(vec2d *inertia);
+badge_sprite const *jumpnrun_hacker_symbol(void);
 
 uint8_t jumpnrun_play(char const *lvname);
 
This page took 0.028914 seconds and 4 git commands to generate.