#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>
JUMPNRUN_MAX_SPAWNED_ENEMIES = 10
};
-typedef struct jumpnrun_game_state {
- vec2d current_pos;
- vec2d inertia;
- uint8_t status;
+typedef struct jumpnrun_shot {
+ rectangle current_box;
+ vec2d inertia;
+ uint8_t tick;
+} jumpnrun_shot;
- uint8_t tick_minor;
- uint8_t anim_frame;
- uint8_t anim_direction;
+static inline bool jumpnrun_shot_spawned(jumpnrun_shot const *shot) { return fixed_point_ne(shot->inertia.x, FIXED_INT(0)); }
- int left;
+enum {
+ JUMPNRUN_MAX_SHOTS = 2
+};
- bool touching_ground;
- uint8_t jumpable_frames;
+typedef struct jumpnrun_game_state {
+ jumpnrun_moveable player;
- size_t spawned_enemies_counter;
- size_t spawned_enemies[JUMPNRUN_MAX_SPAWNED_ENEMIES];
+ uint8_t status;
+ int left;
+
+ jumpnrun_shot shots[JUMPNRUN_MAX_SHOTS];
} jumpnrun_game_state;
rectangle hacker_rect_current(jumpnrun_game_state const *state);
-
void jumpnrun_passive_movement(vec2d *inertia);
uint8_t jumpnrun_play(char const *lvname);