I won't do more, have fun.
This commit is contained in:
parent
a72c9cba7c
commit
36b95868fa
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
BIN
platform.g3a
BIN
platform.g3a
Binary file not shown.
35
src/draw.c
35
src/draw.c
|
@ -1,4 +1,5 @@
|
|||
#include <gint/display.h>
|
||||
#include <gint/display.h>
|
||||
#include <gint/keyboard.h>
|
||||
#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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
31
src/main.c
31
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;
|
||||
}
|
||||
}
|
||||
|
|
45
src/menu.c
45
src/menu.c
|
@ -2,10 +2,13 @@
|
|||
#include <gint/keyboard.h>
|
||||
#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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue