From 36b95868fa8a6ac51bc27f24897c1c8fe904f833 Mon Sep 17 00:00:00 2001 From: KikooDX Date: Sat, 21 Mar 2020 10:51:09 +0100 Subject: [PATCH] I won't do more, have fun. --- include/draw.h | 1 + include/menu.h | 4 ++-- platform.g3a | Bin 70652 -> 71344 bytes src/draw.c | 35 ++++++++++++++++++++++++++++++++--- src/main.c | 31 ++++++++++++++++++++++++------- src/menu.c | 45 +++++++++++++++++++++++++++++++++++++++++---- 6 files changed, 100 insertions(+), 16 deletions(-) diff --git a/include/draw.h b/include/draw.h index 0836d96..af932aa 100644 --- a/include/draw.h +++ b/include/draw.h @@ -3,3 +3,4 @@ void draw_level(char level[], unsigned int step, char polarity, int *start_x, int *start_y); void erase_tile(int x, int y, char level[]); void draw_timer(unsigned int step); //coucou Lephé' +void just_breathe(); diff --git a/include/menu.h b/include/menu.h index c91e893..8c98826 100644 --- a/include/menu.h +++ b/include/menu.h @@ -1,2 +1,2 @@ -void menu(int *level_id, char *disable_up_key, char *game_loop); -void menu_level_selection(int *level_id); +char menu(int *level_id, char *disable_up_key, char *game_loop); +char menu_level_selection(int *level_id); diff --git a/platform.g3a b/platform.g3a index 99a647266f061c8486a228059a012a35fe322b97..ae5382371f890acdd80067e14523cc70dac4af5a 100644 GIT binary patch delta 4200 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 delta 3527 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 +#include +#include #include "draw.h" #define PLAYER_H 11 @@ -75,8 +76,8 @@ int *start_y) break; case 'S': erase_tile(x, y, level); - *start_x = x; - *start_y = y; + *start_x = x + 2; + *start_y = y + 4; break; case 'E': dimage(x + DRAW_OFFSET_X, y + DRAW_OFFSET_Y, &img_exit); @@ -108,3 +109,31 @@ void draw_timer(unsigned int step) { dprint(0, 0, C_WHITE, C_BLACK, "%u.%02u", step/60, step%60); } + +void just_breathe(unsigned int step) +{ + int x = 0; + int y = 0; + int xspd = 1; + int yspd = 1; + while (!keydown_any(KEY_MENU, KEY_EXIT, 0)) + { + dclear(0); + dtext(x, y, "Thank you for playing", C_WHITE, C_BLACK); + dprint(x, y + 12, C_WHITE, C_BLACK, "%u.%02u", step/60, step%60); + dupdate(); + x += xspd; + y += yspd; + if (x == 236 || !x) xspd = 0 - xspd; + if (y == 203 || !y) yspd = 0 - yspd; + clearevents(); + } + { + unsigned char timeout = 50; + while(timeout) + { + timeout--; + dclear(0); + } + } +} diff --git a/src/main.c b/src/main.c index bf56b11..6e2a29f 100644 --- a/src/main.c +++ b/src/main.c @@ -214,19 +214,36 @@ int main(void) if (collide(player_x, player_y, level, 'E')) { level_id++; - set_level(level_id, level); - DRAW_LEVEL(); - player_x = start_x; - player_y = start_y; - polarity = 0; - vspd = 0; + if (level_id == 5059) + { + just_breathe(step); + return 0; + } + else + { + set_level(level_id, level); + DRAW_LEVEL(); + player_x = start_x; + player_y = start_y; + polarity = 0; + vspd = 0; + } } //menu if (keydown_any(KEY_EXIT, KEY_MENU, 0)) { if (!exit_buffer) { - menu(&level_id, &enable_up_key, &game_loop); + char reload = menu(&level_id, &enable_up_key, &game_loop); + if (reload) + { + set_level(level_id, level); + DRAW_LEVEL(); + player_x = start_x; + player_y = start_y; + polarity = 0; + vspd = 0; + } exit_buffer = 1; } } diff --git a/src/menu.c b/src/menu.c index 24ac120..cb3289e 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2,10 +2,13 @@ #include #include "menu.h" -#define Y_POS 84 +#define LAST_LEVEL 5058 -void menu(int *level_id, char *enable_up_key, char *game_loop) +#define Y_POS 88 + +char menu(int *level_id, char *enable_up_key, char *game_loop) { + char reload = 0; char selected = 0; char menu_loop = 1; char exit_buffer = 1; @@ -33,7 +36,8 @@ void menu(int *level_id, char *enable_up_key, char *game_loop) menu_loop = 0; break; case 1: - menu_level_selection(level_id); + reload = menu_level_selection(level_id); + menu_loop = 0; break; case 2: *enable_up_key = !*enable_up_key; @@ -50,8 +54,41 @@ void menu(int *level_id, char *enable_up_key, char *game_loop) dupdate(); while (keydown_any(KEY_UP, KEY_DOWN, KEY_SHIFT, KEY_EXE, 0)) clearevents(); } + return reload; } -void menu_level_selection(int *level_id) +char menu_level_selection(int *level_id) { + char confirm_buffer = 1; + char menu_loop = 1; + int initial_lid = *level_id; + while (menu_loop) { + dclear(0); + clearevents(); + *level_id += keydown(KEY_RIGHT) - keydown(KEY_LEFT); + if (*level_id > LAST_LEVEL) *level_id = 5050; + else if (*level_id < 5050) *level_id = LAST_LEVEL; + dprint(32, Y_POS + 20, C_WHITE, C_BLACK, "> %02d <", *level_id - 5049); + if (keydown_any(KEY_SHIFT, KEY_EXE, 0)) + { + if (!confirm_buffer) + { + menu_loop = 0; + } + } + else confirm_buffer = 0; + if (keydown_any(KEY_EXIT, KEY_MENU, 0)) + { + *level_id = initial_lid; + menu_loop = 0; + } + dupdate(); + while (keydown_any(KEY_RIGHT, KEY_LEFT, KEY_SHIFT, KEY_EXE, + KEY_EXIT, KEY_MENU, 0)) + { + clearevents(); + } + } + dclear(0); + return initial_lid != *level_id; }