Files
pukeko-3ds/source/input.c
2025-04-23 22:32:58 +02:00

54 lines
1.3 KiB
C

#include "include.h"
void waitForKey(char key) {
while (true) {
hidScanInput();
u32 key_down = hidKeysDown();
if (key_down & key) break;
}
}
int cursor_select(int items) {
int cursor_position = 1;
printf("\x1b[%d;1H>", cursor_position);
while (true) {
hidScanInput();
u32 key_down = hidKeysDown();
if (key_down & KEY_DDOWN) {
printf("\x1b[%d;1H ", cursor_position);
cursor_position = (cursor_position >= items) ? 1 : cursor_position + 1;
printf("\x1b[%d;1H>", cursor_position);
}
if (key_down & KEY_DUP) {
printf("\x1b[%d;1H ", cursor_position);
cursor_position = (cursor_position <= 1) ? items : cursor_position - 1;
printf("\x1b[%d;1H>", cursor_position);
}
if (key_down & KEY_B) {
return 0;
}
if (key_down & KEY_A) {
break;
}
printf("\x1b[10;16Hcursorpos: %d", cursor_position);
}
return cursor_position;
}
void print_menu(char menu_items[10][32], int items_length) {
for (int i = 0; i < items_length; i = i + 1) {
printf("\x1b[%d;2H%s", i+1, menu_items[i]);
}
}
int print_select_menu(char menu_items[10][32], int items_length) {
consoleClear();
print_menu(menu_items, items_length);
int selection = cursor_select(items_length);
return selection;
}