state->left + BADGE_DISPLAY_WIDTH + spawn_margin < fixed_point_cast_int(self->spawn_pos.x)) {
self->flags &= ~JUMPNRUN_ENEMY_UNAVAILABLE;
}
- } else if((fixed_point_gt(self->spawn_pos.x, FIXED_POINT(state->left - spawn_margin, 0)) &&
- fixed_point_lt(self->spawn_pos.x, FIXED_POINT(state->left - spawn_margin / 2, 0))) ||
- (fixed_point_lt(self->spawn_pos.x, FIXED_POINT(state->left + BADGE_DISPLAY_WIDTH + spawn_margin, 0)) &&
- fixed_point_gt(self->spawn_pos.x, FIXED_POINT(state->left + BADGE_DISPLAY_WIDTH, 0)))) {
+ } else if(fixed_point_gt(self->spawn_pos.x, FIXED_POINT(state->left - spawn_margin, 0)) &&
+ fixed_point_lt(self->spawn_pos.x, FIXED_POINT(state->left + BADGE_DISPLAY_WIDTH + spawn_margin, 0))) {
// enemy unspawned, available and in spawn zone.
self->flags = JUMPNRUN_ENEMY_SPAWNED | JUMPNRUN_ENEMY_UNAVAILABLE;
self->base.current_box = rectangle_new(self->spawn_pos, self->type->extent);
for(gs.lives = 3; gs.lives != 0; --gs.lives) {
gs.status = JUMPNRUN_PLAYING;
+ memset(&gs.player, 0, sizeof(gs.player));
gs.player.current_box = rectangle_new(lv.start_pos,
hacker_extents());
+
+ for(size_t i = 0; i < lv.header.enemy_count; ++i) {
+ lv.enemies[i].flags = 0;
+ }
+
while(gs.status == JUMPNRUN_PLAYING) {
badge_event_t ev = badge_event_wait();