X-Git-Url: https://git.rohieb.name/hackover2013-badge-firmware.git/blobdiff_plain/a4023b8eeb16fb221f06e70a71ee1a9e5c1774d0..5245ad67d7984b14a389a66d6c4435bf08c5739a:/mock/badge_main_loop.c diff --git a/mock/badge_main_loop.c b/mock/badge_main_loop.c index 0f8b880..70da0ff 100644 --- a/mock/badge_main_loop.c +++ b/mock/badge_main_loop.c @@ -3,6 +3,7 @@ #include "jumpnrun/jumpnrun.h" #include "ui/display.h" #include "ui/event.h" +#include "ui/menu.h" #include "ui/sprite.h" #include @@ -10,20 +11,35 @@ #include #include +#define MAX_LEVELS 1024 + +#define PATH_PREFIX "../badge/jumpnrun/levels/" + void badge_main_loop(void) { + char menu_buf[MAX_LEVELS][32]; + FILE *fd = fopen(PATH_PREFIX "levels.txt", "r"); + + int i; + + for(i = 0; i < MAX_LEVELS && fgets(menu_buf[i], sizeof(menu_buf[i]), fd); ++i) { + menu_buf[i][strlen(menu_buf[i]) - 1] = '\0'; + } + + fclose(fd); + + char const *menu[i]; + for(int j = 0; j < i; ++j) { + menu[j] = menu_buf[j]; + } + + size_t choice = 0; + size_t first_visible = 0; for(;;) { - FILE *fd = fopen("../badge/jumpnrun/levels.txt", "r"); - char buf[12]; - - while(fgets(buf, sizeof(buf), fd)) { - buf[strlen(buf) - 1] = '\0'; - char lvname[256]; - sprintf(lvname, "../badge/jumpnrun/%s.lvl", buf); - while(jumpnrun_play(lvname) != JUMPNRUN_WON) - ; - } - - fclose(fd); + choice = badge_menu(menu, ARRAY_SIZE(menu), &first_visible, choice); + char lvname[256]; + sprintf(lvname, PATH_PREFIX "%s.lvl", menu[choice]); + + jumpnrun_play_level(lvname); } }