Change button mappings

This commit is contained in:
Nacho 2026-05-29 22:46:12 +02:00
parent 94c4543b59
commit 91e00bea43
18 changed files with 104 additions and 40 deletions

View File

@ -97,6 +97,8 @@ void setup() {
tft_initDisplay(tft, TFT_BLACK); tft_initDisplay(tft, TFT_BLACK);
tft_initScreenBuffer(TFT_TRANSPARENT); tft_initScreenBuffer(TFT_TRANSPARENT);
tft.setRotation(2);
sound_init(); sound_init();
storage_init(); storage_init();

View File

@ -42,18 +42,18 @@ void menu_changeBackgroundScreen(
switch (buttonsPressed) { switch (buttonsPressed) {
case K1_PRESSED: case K1_PRESSED:
selectedBackground++; selectedBackground--;
if (selectedBackground >= backgrounds) { if (selectedBackground < 0) {
selectedBackground = 0; selectedBackground = backgrounds - 1;
} }
storage_initBackground(selectedBackground, bg); storage_initBackground(selectedBackground, bg);
screenLastActionTime = currentTime; screenLastActionTime = currentTime;
break; break;
case K2_PRESSED: case K2_PRESSED:
selectedBackground--; selectedBackground++;
if (selectedBackground < 0) { if (selectedBackground >= backgrounds) {
selectedBackground = backgrounds - 1; selectedBackground = 0;
} }
storage_initBackground(selectedBackground, bg); storage_initBackground(selectedBackground, bg);
screenLastActionTime = currentTime; screenLastActionTime = currentTime;

View File

@ -24,6 +24,15 @@ void menu_changeCharaScreen(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteD
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K1_PRESSED: case K1_PRESSED:
selectedChara--;
if (selectedChara < 0) {
selectedChara = CHARA_COUNT_IN_DEVICE - 1;
}
selectedCharaData = &charaData[selectedChara];
updateScreen = true;
break;
case K2_PRESSED:
selectedChara++; selectedChara++;
if (selectedChara >= CHARA_COUNT_IN_DEVICE) { if (selectedChara >= CHARA_COUNT_IN_DEVICE) {
selectedChara = 0; selectedChara = 0;
@ -32,14 +41,14 @@ void menu_changeCharaScreen(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteD
updateScreen = true; updateScreen = true;
break; break;
case K2_PRESSED: case K3_PRESSED:
currentCharacter = selectedChara; currentCharacter = selectedChara;
initialized = false; initialized = false;
screenKey = MAIN_SCREEN; screenKey = MAIN_SCREEN;
menuKey = STATUS_SCREEN; menuKey = STATUS_SCREEN;
return; return;
case K3_PRESSED: { case K4_PRESSED: {
char fileName[20]; char fileName[20];
sprintf(fileName, "/chara/%02x.bin", charaData[currentCharacter].idChara); sprintf(fileName, "/chara/%02x.bin", charaData[currentCharacter].idChara);

View File

@ -9,7 +9,14 @@
void menu_drawClock(TFT_eSprite& bg) { void menu_drawClock(TFT_eSprite& bg) {
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K2_PRESSED | K3_PRESSED:
screenKey = CLOCK_EDIT_SCREEN;
break;
case K1_PRESSED:
case K2_PRESSED: case K2_PRESSED:
case K3_PRESSED:
case K4_PRESSED:
draw_drawBackground(bg, 90, 90, 3); draw_drawBackground(bg, 90, 90, 3);
screenKey = MAIN_SCREEN; screenKey = MAIN_SCREEN;
break; break;
@ -47,8 +54,8 @@ void menu_drawClockEdit(TFT_eSprite& bg) {
case K2_PRESSED: case K2_PRESSED:
clockMinuteCount = (clockMinuteCount + 1) % 60; clockMinuteCount = (clockMinuteCount + 1) % 60;
break; break;
case K3_PRESSED: case K4_PRESSED:
// Es un dia random, nada significativo, ya pondre mas adelante que tenga dia del año // Es un dia random, nada significativo, ya pondre mas adelante que tenga dia del año
rtc.setTime(0, clockMinuteCount, clockHourCount, 1, 11, 2024); rtc.setTime(0, clockMinuteCount, clockHourCount, 1, 11, 2024);
srand(time(NULL)); srand(time(NULL));

View File

@ -12,18 +12,19 @@ void menu_drawDeathScreen(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteDat
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K1_PRESSED: case K4_PRESSED:
lines_getAvailableLines(); lines_getAvailableLines();
screenKey = EGG_SELECT_SCREEN; screenKey = EGG_SELECT_SCREEN;
return; return;
break; break;
case K2_PRESSED: case K3_PRESSED:
screenKey = CLOCK_SCREEN; screenKey = CLOCK_SCREEN;
return; return;
break; break;
case K3_PRESSED: case K1_PRESSED:
case K2_PRESSED:
lastUpdateTime = currentTime; lastUpdateTime = currentTime;
frameCounter = 0; frameCounter = 0;

View File

@ -15,10 +15,14 @@ void menu_lineSwitcher(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteData*
uint8_t buttonsPressed = buttons_getPressedButtons(); uint8_t buttonsPressed = buttons_getPressedButtons();
switch(buttonsPressed) { switch(buttonsPressed) {
case K1_PRESSED: case K1_PRESSED:
eggCounter = (eggCounter - 1) % eggNumber;
break;
case K2_PRESSED:
eggCounter = (eggCounter + 1) % eggNumber; eggCounter = (eggCounter + 1) % eggNumber;
break; break;
case K2_PRESSED: case K4_PRESSED:
menu_reloadEggs(eggCounter); menu_reloadEggs(eggCounter);
eggCounter = 0; eggCounter = 0;
screenKey = EGG_HATCH_SCREEN; screenKey = EGG_HATCH_SCREEN;

View File

@ -15,12 +15,25 @@ void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara,
return; return;
} }
static uint8_t arrowPosition = 0; static int8_t arrowPosition = 0;
const int numItems = 2;
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K1_PRESSED: case K1_PRESSED:
arrowPosition = (arrowPosition + 1) % 2; printf("[FOOD] arrowPosition=%i\n", arrowPosition);
arrowPosition--;
if (arrowPosition < 0) {
arrowPosition = numItems - 1;
}
break;
case K2_PRESSED:
printf("[FOOD] arrowPosition=%i\n", arrowPosition);
arrowPosition++;
if (arrowPosition >= numItems) {
arrowPosition = 0;
}
break; break;
case K3_PRESSED: case K3_PRESSED:
@ -31,7 +44,7 @@ void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara,
break; break;
} }
if (pressedButtons == K2_PRESSED) { if (pressedButtons == K4_PRESSED) {
lastUpdateTime = 0; lastUpdateTime = 0;
switch (arrowPosition) { switch (arrowPosition) {
case 0: case 0:

View File

@ -7,11 +7,12 @@ void menu_drawFridgeScreen(TFT_eSprite &bg, TFT_eSprite& sprite, struct SpriteDa
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K1_PRESSED: case K1_PRESSED:
case K2_PRESSED:
screenKey = MENU_SCREEN; screenKey = MENU_SCREEN;
menuKey = STATUS_SCREEN_MENU; menuKey = STATUS_SCREEN_MENU;
break; break;
case K2_PRESSED: case K4_PRESSED:
screenKey = CLOCK_SCREEN; screenKey = CLOCK_SCREEN;
break; break;

View File

@ -12,11 +12,12 @@ void menu_drawIdleScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K1_PRESSED: case K1_PRESSED:
case K2_PRESSED:
screenKey = MENU_SCREEN; screenKey = MENU_SCREEN;
menuKey = STATUS_SCREEN_MENU; menuKey = STATUS_SCREEN_MENU;
break; break;
case K2_PRESSED: case K4_PRESSED:
screenKey = CLOCK_SCREEN; screenKey = CLOCK_SCREEN;
break; break;

View File

@ -22,6 +22,13 @@ void menu_drawCurrentMenuOption(TFT_eSprite& bg, TFT_eSprite &icon, struct Sprit
menuKey++; menuKey++;
break; break;
case K2_PRESSED:
menuKey--;
if (menuKey < 0) {
menuKey = FREEZE_SCREEN_MENU;
}
break;
case K3_PRESSED: case K3_PRESSED:
screenKey = MAIN_SCREEN; screenKey = MAIN_SCREEN;
menuKey = STATUS_SCREEN_MENU; menuKey = STATUS_SCREEN_MENU;
@ -33,7 +40,7 @@ void menu_drawCurrentMenuOption(TFT_eSprite& bg, TFT_eSprite &icon, struct Sprit
} }
// Separaíto mas guapito // Separaíto mas guapito
if (pressedButtons == K2_PRESSED) { if (pressedButtons == K4_PRESSED) {
const uint64_t currentTime = esp_timer_get_time(); const uint64_t currentTime = esp_timer_get_time();
lastUpdateTime = currentTime; lastUpdateTime = currentTime;

View File

@ -14,8 +14,10 @@ void menu_refuseScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteDat
uint64_t currentTime = esp_timer_get_time(); uint64_t currentTime = esp_timer_get_time();
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case 8: case K1_PRESSED:
case 4: case K2_PRESSED:
case K3_PRESSED:
case K4_PRESSED:
currentAnimationFrame = 0; currentAnimationFrame = 0;
screenKey = FOOD_SCREEN; screenKey = FOOD_SCREEN;
soundPlayed = false; soundPlayed = false;

View File

@ -13,10 +13,14 @@ void menu_resetDataScreen(TFT_eSprite &bg) {
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K1_PRESSED: case K1_PRESSED:
selectedOption = (selectedOption + 1) % 2; selectedOption = (selectedOption - 1) % 2;
break; break;
case K2_PRESSED: case K2_PRESSED:
selectedOption = (selectedOption + 1) % 2;
break;
case K4_PRESSED:
if (selectedOption == 1) { if (selectedOption == 1) {
draw_drawBackground(bg, 90, 90, 3); draw_drawBackground(bg, 90, 90, 3);
tft_drawCenteredText("RESETTING", 3, 104); tft_drawCenteredText("RESETTING", 3, 104);

View File

@ -38,7 +38,7 @@ void switchScreenState() {
void menu_settingsScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData *spriteData) void menu_settingsScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData *spriteData)
{ {
static uint8_t arrowPosition = 0; static int8_t arrowPosition = 0;
static SettingsMenuItem menuItems[] = { static SettingsMenuItem menuItems[] = {
{ "BG", SETTINGS_SUBMENU, BACKGROUND_CHANGE_SCREEN, nullptr, nullptr }, { "BG", SETTINGS_SUBMENU, BACKGROUND_CHANGE_SCREEN, nullptr, nullptr },
@ -47,21 +47,31 @@ void menu_settingsScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteD
{ "RESET", SETTINGS_SUBMENU, RESET_DATA_SCREEN, nullptr, nullptr } { "RESET", SETTINGS_SUBMENU, RESET_DATA_SCREEN, nullptr, nullptr }
}; };
const uint8_t maxItems = sizeof(menuItems) / sizeof(menuItems[0]); const uint8_t numItems = sizeof(menuItems) / sizeof(menuItems[0]);
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case K1_PRESSED: case K1_PRESSED:
arrowPosition = (arrowPosition + 1) % maxItems; printf("[FOOD] arrowPosition=%i\n", arrowPosition);
printf("[SETTINGS] arrowPosition=%i\n", arrowPosition); arrowPosition--;
break; if (arrowPosition < 0) {
arrowPosition = numItems - 1;
}
break;
case K2_PRESSED:
printf("[FOOD] arrowPosition=%i\n", arrowPosition);
arrowPosition++;
if (arrowPosition >= numItems) {
arrowPosition = 0;
}
break;
case K3_PRESSED: case K3_PRESSED:
screenKey = MENU_SCREEN; screenKey = MENU_SCREEN;
return; return;
case K2_PRESSED: case K4_PRESSED:
lastUpdateTime = 0; lastUpdateTime = 0;
if (menuItems[arrowPosition].type == SETTINGS_ACTION) { if (menuItems[arrowPosition].type == SETTINGS_ACTION) {
@ -85,7 +95,7 @@ void menu_settingsScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteD
const int startY = 10; const int startY = 10;
const int spacingY = 40; const int spacingY = 40;
for (uint8_t i = 0; i < maxItems; i++) { for (uint8_t i = 0; i < numItems; i++) {
bool selected = (i == arrowPosition); bool selected = (i == arrowPosition);
int y = startY + (i * spacingY); int y = startY + (i * spacingY);

View File

@ -19,10 +19,12 @@ void menu_sleepyScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData*
uint64_t currentTime = esp_timer_get_time(); uint64_t currentTime = esp_timer_get_time();
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case 8: case K1_PRESSED:
case K2_PRESSED:
screenKey = MENU_SCREEN; screenKey = MENU_SCREEN;
break; break;
case 4:
case K4_PRESSED:
screenKey = CLOCK_SCREEN; screenKey = CLOCK_SCREEN;
break; break;

View File

@ -23,11 +23,12 @@ void menu_sleepingScreen(
uint8_t buttonsPressed = buttons_getPressedButtons(); uint8_t buttonsPressed = buttons_getPressedButtons();
switch (buttonsPressed) { switch (buttonsPressed) {
case 8: case K1_PRESSED:
case K2_PRESSED:
screenKey = MENU_SCREEN; screenKey = MENU_SCREEN;
break; break;
case 4: case K4_PRESSED:
screenKey = CLOCK_SCREEN; screenKey = CLOCK_SCREEN;
break; break;

View File

@ -13,7 +13,7 @@ void menu_statusScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData*
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) { switch (pressedButtons) {
case 2: case K3_PRESSED:
screenKey = MENU_SCREEN; screenKey = MENU_SCREEN;
break; break;

View File

@ -6,7 +6,7 @@
void menu_drawTitle(TFT_eSprite &bg, TFT_eSprite &composite) { void menu_drawTitle(TFT_eSprite &bg, TFT_eSprite &composite) {
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
if (pressedButtons == 8 || pressedButtons == 4) { if (pressedButtons != 0) {
screenKey = CLOCK_EDIT_SCREEN; screenKey = CLOCK_EDIT_SCREEN;
return; return;
} }

View File

@ -58,9 +58,9 @@ void training_screenTraining2(
} }
uint8_t pressedButtons = buttons_getPressedButtons(); uint8_t pressedButtons = buttons_getPressedButtons();
if (pressedButtons == K1_PRESSED || pressedButtons == K2_PRESSED) { if (pressedButtons == K3_PRESSED || pressedButtons == K4_PRESSED) {
randomPosition = rand() % 2; randomPosition = rand() % 2;
projectilePosition = pressedButtons >> 3; // pressedButtons >> 4 == 1 => K1; != 1 => K2 projectilePosition = pressedButtons >> 1; // pressedButtons >> 4 == 1 => K1; != 1 => K2
printf("[TRAIN] projectilePosition=%i\n", projectilePosition); printf("[TRAIN] projectilePosition=%i\n", projectilePosition);
inactivityTimer = currentTime; inactivityTimer = currentTime;