From: Wintermute Date: Sat, 19 Oct 2013 13:14:32 +0000 (+0200) Subject: Gegnerspawning an Checkpoints richtig. X-Git-Url: https://git.rohieb.name/hackover2013-badge-firmware.git/commitdiff_plain/19ea4876c39cdbba20ee594c11fe350d7433c857 Gegnerspawning an Checkpoints richtig. --- diff --git a/badge/jumpnrun/enemies.c b/badge/jumpnrun/enemies.c index 7e2e6f6..b518b51 100644 --- a/badge/jumpnrun/enemies.c +++ b/badge/jumpnrun/enemies.c @@ -118,10 +118,8 @@ void jumpnrun_process_enemy(jumpnrun_enemy *self, 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); diff --git a/badge/jumpnrun/jumpnrun.c b/badge/jumpnrun/jumpnrun.c index 3c7f04b..272ceaf 100644 --- a/badge/jumpnrun/jumpnrun.c +++ b/badge/jumpnrun/jumpnrun.c @@ -340,9 +340,15 @@ uint8_t jumpnrun_play(char const *lvname) { 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();