AST3_C/src/menu.c

106 lines
2.6 KiB
C
Raw Normal View History

2020-07-26 01:44:42 +02:00
#include "drawlevel.h"
#include <gint/display.h>
#include <gint/keyboard.h>
#include "setlevel.h"
#include "times.h"
#include "define.h"
#include "save.h"
#include <gint/gint.h>
int round(float num) //round(2.5) = 3 round(-3.2) = -3
{
return num < 0 ? num - 0.5 : num + 0.5;
}
2020-07-26 01:44:42 +02:00
2020-08-22 01:24:50 +02:00
char start_menu(char *type)
2020-07-26 01:44:42 +02:00
{
extern bopti_image_t img_menu;
2020-07-26 01:44:42 +02:00
char menu_loop = 1;
char selection = 0;
char buffer = 1;
char buffer2 = 1;
2020-08-17 23:39:38 +02:00
int Y_POS = 85;
gint_switch(restore);
2020-07-26 01:44:42 +02:00
while(menu_loop)
{
clearevents();
dclear(C_WHITE);
dimage(0,0,&img_menu);
2020-07-26 01:44:42 +02:00
selection += keydown(KEY_DOWN) - keydown(KEY_UP);
2020-08-17 23:39:38 +02:00
if (selection == 4) selection = 0;
else if (selection == -1) selection = 3;
2020-07-26 01:44:42 +02:00
dtext(32, Y_POS, C_BLACK, "PLAY");
dtext(32, Y_POS + 12, C_BLACK, "ALL MODE");
dtext(32, Y_POS + 24, C_BLACK, "TUTORIAL");
2020-08-17 23:39:38 +02:00
dtext(32, Y_POS + 36, C_BLACK, "EXIT GAME");
2020-07-26 01:44:42 +02:00
dtext(16, Y_POS + (selection * 12), C_BLACK, ">");
dupdate();
if (keydown_any(KEY_SHIFT, KEY_EXE, 0)) {
if(!buffer2) return selection;
2020-07-26 01:44:42 +02:00
}
else buffer2 = 0;
if(keydown_any(KEY_EXIT, KEY_MENU, 0)) {
if(!buffer) return -1;
}
else buffer = 0;
if(keydown_all(KEY_5,KEY_6)) *type = 3;
2020-07-26 01:44:42 +02:00
while (keydown_any(KEY_UP, KEY_DOWN, 0)) clearevents();
}
return selection;
}
char speed_menu(int *id_level)
{
char level[351];
char gravity = 0; //0 down 1 up
int start_x;
int start_y;
char buffer = 1;
2020-07-26 01:44:42 +02:00
int appear = 10;
int disappear = 13;
int sto = loadtime(*id_level-1);
2020-07-26 01:44:42 +02:00
char menu_loop = 1;
char check = 1;
extern bopti_image_t img_speedrun;
while(menu_loop)
{
clearevents();
dclear(C_WHITE);
*id_level += keydown(KEY_RIGHT) - keydown(KEY_LEFT);
if (*id_level == LEVEL_MAX+1) *id_level = 1;
else if (*id_level == 0) *id_level = LEVEL_MAX;
if(keydown(KEY_RIGHT) || keydown(KEY_LEFT)) sto = loadtime(*id_level-1);
set_level(*id_level, level, &start_x, &start_y, &gravity, &appear, &disappear);
2020-07-26 01:44:42 +02:00
draw_level(level);
dimage(0,0,&img_speedrun);
if(sto != 0) check_medal(round(sto*0.01*FPS), *id_level, 335, 8);
dtext(340, 214, C_BLACK, "TIMES");
2020-07-26 01:44:42 +02:00
dtext(190, 45, C_BLACK, "Time : ");
dprint(80,20,C_BLACK,"Level : %d",*id_level);
if(sto != 0) dprint(194,60,C_RED, "%.2j", sto);
else dprint(202,60,C_RED, "/");
2020-08-28 19:00:18 +02:00
if(*id_level == 14) dprint_opt(180, 8, C_RGB(0,255,255), C_BLACK, DTEXT_LEFT, DTEXT_TOP, "VVVVVV");
2020-07-26 01:44:42 +02:00
dupdate();
if (keydown_any(KEY_SHIFT, KEY_EXE, 0))
{
if(!check)
{
del_level(level);
return 0;
}
}
else check = 0;
if (keydown(KEY_F6))
{
draw_time(*id_level);
}
if(keydown_any(KEY_EXIT, KEY_MENU, 0)) {
if(!buffer) return 1;
}
else buffer = 0;
2020-07-26 01:44:42 +02:00
while (keydown_any(KEY_RIGHT, KEY_LEFT, 0)) clearevents();
}
return 0;
}