@@ -52,6 +52,8 @@ void Scene::tick(bool key_pressed[ALLEGRO_KEY_MAX], bool key_repeat[ALLEGRO_KEY_
5252 bool prev_pyr = key_pressed[ALLEGRO_KEY_H ];
5353 bool next_pyr = key_pressed[ALLEGRO_KEY_J ];
5454
55+ bool restart_level = key_pressed[ALLEGRO_KEY_R ];
56+
5557 if ((left || right || up || down || next_pyr || prev_pyr)) {
5658 move_selector (left ? -1 : (right ? 1 : 0 ), up ? 1 : (down ? -1 : 0 ) );
5759 if (next_pyr)
@@ -99,7 +101,7 @@ void Scene::tick(bool key_pressed[ALLEGRO_KEY_MAX], bool key_repeat[ALLEGRO_KEY_
99101 restart_countdown -= dt;
100102 }
101103
102- if (dead && restart_countdown <= 0.0 )
104+ if (restart_level || ( dead && restart_countdown <= 0.0 ) )
103105 restart (curr_level);
104106
105107 if (enemies_dead)
@@ -264,10 +266,10 @@ void Scene::restart(size_t level_idx) {
264266 int i = 0 ;
265267 for (auto & enemies : pyramid_enemies) {
266268 for (auto & e : enemies) {
267- switch (i) {
268- case 0 : e.image = enemy_img0; e.image1 = enemy_img01; break ;
269- case 1 : e.image = enemy_img1; e.image1 = enemy_img11; break ;
270- default : e.image = enemy_img2; e.image1 = enemy_img21; break ;
269+ switch (i % 3 ) {
270+ case 0 : e.image = enemy_img0; e.image1 = enemy_img01; break ;
271+ case 1 : e.image = enemy_img1; e.image1 = enemy_img11; break ;
272+ case 2 : e.image = enemy_img2; e.image1 = enemy_img21; break ;
271273 }
272274 i++;
273275 }
@@ -276,6 +278,7 @@ void Scene::restart(size_t level_idx) {
276278 show_level_countdown = 2.0 ;
277279 draw_level = true ;
278280 curr_pyramid = 0 ;
281+ last_hole_time = 0 ;
279282}
280283
281284void Scene::draw_text (const char * str)
0 commit comments