diff --git a/src/main.cpp b/src/main.cpp index 5e5c695..4c20608 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -97,6 +97,8 @@ void setup() { tft_initDisplay(tft, TFT_BLACK); tft_initScreenBuffer(TFT_TRANSPARENT); + tft.setRotation(2); + sound_init(); storage_init(); diff --git a/src/menu/change_background_screen.cpp b/src/menu/change_background_screen.cpp index 5a1c741..3e11b7d 100644 --- a/src/menu/change_background_screen.cpp +++ b/src/menu/change_background_screen.cpp @@ -42,18 +42,18 @@ void menu_changeBackgroundScreen( switch (buttonsPressed) { case K1_PRESSED: - selectedBackground++; - if (selectedBackground >= backgrounds) { - selectedBackground = 0; + selectedBackground--; + if (selectedBackground < 0) { + selectedBackground = backgrounds - 1; } storage_initBackground(selectedBackground, bg); screenLastActionTime = currentTime; break; - + case K2_PRESSED: - selectedBackground--; - if (selectedBackground < 0) { - selectedBackground = backgrounds - 1; + selectedBackground++; + if (selectedBackground >= backgrounds) { + selectedBackground = 0; } storage_initBackground(selectedBackground, bg); screenLastActionTime = currentTime; diff --git a/src/menu/change_chara_screen.cpp b/src/menu/change_chara_screen.cpp index 779e282..bdec7bc 100644 --- a/src/menu/change_chara_screen.cpp +++ b/src/menu/change_chara_screen.cpp @@ -24,6 +24,15 @@ void menu_changeCharaScreen(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteD uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { case K1_PRESSED: + selectedChara--; + if (selectedChara < 0) { + selectedChara = CHARA_COUNT_IN_DEVICE - 1; + } + selectedCharaData = &charaData[selectedChara]; + updateScreen = true; + break; + + case K2_PRESSED: selectedChara++; if (selectedChara >= CHARA_COUNT_IN_DEVICE) { selectedChara = 0; @@ -32,14 +41,14 @@ void menu_changeCharaScreen(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteD updateScreen = true; break; - case K2_PRESSED: + case K3_PRESSED: currentCharacter = selectedChara; initialized = false; screenKey = MAIN_SCREEN; menuKey = STATUS_SCREEN; return; - case K3_PRESSED: { + case K4_PRESSED: { char fileName[20]; sprintf(fileName, "/chara/%02x.bin", charaData[currentCharacter].idChara); diff --git a/src/menu/clock_screen.cpp b/src/menu/clock_screen.cpp index 1448ef6..3bbe212 100644 --- a/src/menu/clock_screen.cpp +++ b/src/menu/clock_screen.cpp @@ -9,7 +9,14 @@ void menu_drawClock(TFT_eSprite& bg) { uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { + case K2_PRESSED | K3_PRESSED: + screenKey = CLOCK_EDIT_SCREEN; + break; + + case K1_PRESSED: case K2_PRESSED: + case K3_PRESSED: + case K4_PRESSED: draw_drawBackground(bg, 90, 90, 3); screenKey = MAIN_SCREEN; break; @@ -47,8 +54,8 @@ void menu_drawClockEdit(TFT_eSprite& bg) { case K2_PRESSED: clockMinuteCount = (clockMinuteCount + 1) % 60; break; - - case K3_PRESSED: + + case K4_PRESSED: // Es un dia random, nada significativo, ya pondre mas adelante que tenga dia del año rtc.setTime(0, clockMinuteCount, clockHourCount, 1, 11, 2024); srand(time(NULL)); diff --git a/src/menu/death_screen.cpp b/src/menu/death_screen.cpp index f3d5f36..6d9de0e 100644 --- a/src/menu/death_screen.cpp +++ b/src/menu/death_screen.cpp @@ -12,18 +12,19 @@ void menu_drawDeathScreen(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteDat uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { - case K1_PRESSED: + case K4_PRESSED: lines_getAvailableLines(); screenKey = EGG_SELECT_SCREEN; return; break; - case K2_PRESSED: + case K3_PRESSED: screenKey = CLOCK_SCREEN; return; break; - case K3_PRESSED: + case K1_PRESSED: + case K2_PRESSED: lastUpdateTime = currentTime; frameCounter = 0; diff --git a/src/menu/egg_select_screen.cpp b/src/menu/egg_select_screen.cpp index 16ec0a4..4e65302 100644 --- a/src/menu/egg_select_screen.cpp +++ b/src/menu/egg_select_screen.cpp @@ -15,10 +15,14 @@ void menu_lineSwitcher(TFT_eSprite& bg, TFT_eSprite &sprite, struct SpriteData* uint8_t buttonsPressed = buttons_getPressedButtons(); switch(buttonsPressed) { case K1_PRESSED: + eggCounter = (eggCounter - 1) % eggNumber; + break; + + case K2_PRESSED: eggCounter = (eggCounter + 1) % eggNumber; break; - case K2_PRESSED: + case K4_PRESSED: menu_reloadEggs(eggCounter); eggCounter = 0; screenKey = EGG_HATCH_SCREEN; diff --git a/src/menu/food_select_screen.cpp b/src/menu/food_select_screen.cpp index 9b038d9..9784ea8 100644 --- a/src/menu/food_select_screen.cpp +++ b/src/menu/food_select_screen.cpp @@ -15,12 +15,25 @@ void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, return; } - static uint8_t arrowPosition = 0; + static int8_t arrowPosition = 0; + const int numItems = 2; uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { 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; case K3_PRESSED: @@ -31,7 +44,7 @@ void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, break; } - if (pressedButtons == K2_PRESSED) { + if (pressedButtons == K4_PRESSED) { lastUpdateTime = 0; switch (arrowPosition) { case 0: diff --git a/src/menu/freeze_screen.cpp b/src/menu/freeze_screen.cpp index 593b3e2..750d63c 100644 --- a/src/menu/freeze_screen.cpp +++ b/src/menu/freeze_screen.cpp @@ -7,11 +7,12 @@ void menu_drawFridgeScreen(TFT_eSprite &bg, TFT_eSprite& sprite, struct SpriteDa uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { case K1_PRESSED: + case K2_PRESSED: screenKey = MENU_SCREEN; menuKey = STATUS_SCREEN_MENU; break; - case K2_PRESSED: + case K4_PRESSED: screenKey = CLOCK_SCREEN; break; diff --git a/src/menu/idle_screen.cpp b/src/menu/idle_screen.cpp index 5f2da0f..2513b19 100644 --- a/src/menu/idle_screen.cpp +++ b/src/menu/idle_screen.cpp @@ -12,11 +12,12 @@ void menu_drawIdleScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { case K1_PRESSED: + case K2_PRESSED: screenKey = MENU_SCREEN; menuKey = STATUS_SCREEN_MENU; break; - case K2_PRESSED: + case K4_PRESSED: screenKey = CLOCK_SCREEN; break; diff --git a/src/menu/menu_screen.cpp b/src/menu/menu_screen.cpp index 0d22d2a..f49090a 100644 --- a/src/menu/menu_screen.cpp +++ b/src/menu/menu_screen.cpp @@ -22,6 +22,13 @@ void menu_drawCurrentMenuOption(TFT_eSprite& bg, TFT_eSprite &icon, struct Sprit menuKey++; break; + case K2_PRESSED: + menuKey--; + if (menuKey < 0) { + menuKey = FREEZE_SCREEN_MENU; + } + break; + case K3_PRESSED: screenKey = MAIN_SCREEN; menuKey = STATUS_SCREEN_MENU; @@ -33,7 +40,7 @@ void menu_drawCurrentMenuOption(TFT_eSprite& bg, TFT_eSprite &icon, struct Sprit } // Separaíto mas guapito - if (pressedButtons == K2_PRESSED) { + if (pressedButtons == K4_PRESSED) { const uint64_t currentTime = esp_timer_get_time(); lastUpdateTime = currentTime; diff --git a/src/menu/refuse_screen.cpp b/src/menu/refuse_screen.cpp index 06fa334..7648b66 100644 --- a/src/menu/refuse_screen.cpp +++ b/src/menu/refuse_screen.cpp @@ -14,8 +14,10 @@ void menu_refuseScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteDat uint64_t currentTime = esp_timer_get_time(); uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { - case 8: - case 4: + case K1_PRESSED: + case K2_PRESSED: + case K3_PRESSED: + case K4_PRESSED: currentAnimationFrame = 0; screenKey = FOOD_SCREEN; soundPlayed = false; diff --git a/src/menu/reset_data_screen.cpp b/src/menu/reset_data_screen.cpp index aa438d1..c6fd7f5 100644 --- a/src/menu/reset_data_screen.cpp +++ b/src/menu/reset_data_screen.cpp @@ -13,10 +13,14 @@ void menu_resetDataScreen(TFT_eSprite &bg) { uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { case K1_PRESSED: - selectedOption = (selectedOption + 1) % 2; + selectedOption = (selectedOption - 1) % 2; break; case K2_PRESSED: + selectedOption = (selectedOption + 1) % 2; + break; + + case K4_PRESSED: if (selectedOption == 1) { draw_drawBackground(bg, 90, 90, 3); tft_drawCenteredText("RESETTING", 3, 104); diff --git a/src/menu/settings_screen.cpp b/src/menu/settings_screen.cpp index 4395218..4d3e39e 100644 --- a/src/menu/settings_screen.cpp +++ b/src/menu/settings_screen.cpp @@ -38,7 +38,7 @@ void switchScreenState() { 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[] = { { "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 } }; - const uint8_t maxItems = sizeof(menuItems) / sizeof(menuItems[0]); + const uint8_t numItems = sizeof(menuItems) / sizeof(menuItems[0]); uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { - case K1_PRESSED: - arrowPosition = (arrowPosition + 1) % maxItems; - printf("[SETTINGS] arrowPosition=%i\n", arrowPosition); - break; + 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; case K3_PRESSED: screenKey = MENU_SCREEN; return; - case K2_PRESSED: + case K4_PRESSED: lastUpdateTime = 0; 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 spacingY = 40; - for (uint8_t i = 0; i < maxItems; i++) { + for (uint8_t i = 0; i < numItems; i++) { bool selected = (i == arrowPosition); int y = startY + (i * spacingY); diff --git a/src/menu/sleep_screen.cpp b/src/menu/sleep_screen.cpp index 0c116a7..0ae4ed9 100644 --- a/src/menu/sleep_screen.cpp +++ b/src/menu/sleep_screen.cpp @@ -19,10 +19,12 @@ void menu_sleepyScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uint64_t currentTime = esp_timer_get_time(); uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { - case 8: + case K1_PRESSED: + case K2_PRESSED: screenKey = MENU_SCREEN; break; - case 4: + + case K4_PRESSED: screenKey = CLOCK_SCREEN; break; diff --git a/src/menu/sleeping_screen.cpp b/src/menu/sleeping_screen.cpp index af012a2..0ecf427 100644 --- a/src/menu/sleeping_screen.cpp +++ b/src/menu/sleeping_screen.cpp @@ -23,11 +23,12 @@ void menu_sleepingScreen( uint8_t buttonsPressed = buttons_getPressedButtons(); switch (buttonsPressed) { - case 8: + case K1_PRESSED: + case K2_PRESSED: screenKey = MENU_SCREEN; break; - case 4: + case K4_PRESSED: screenKey = CLOCK_SCREEN; break; diff --git a/src/menu/status_screen.cpp b/src/menu/status_screen.cpp index b50b2bb..b7c09cf 100644 --- a/src/menu/status_screen.cpp +++ b/src/menu/status_screen.cpp @@ -13,7 +13,7 @@ void menu_statusScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { - case 2: + case K3_PRESSED: screenKey = MENU_SCREEN; break; diff --git a/src/menu/title_screen.cpp b/src/menu/title_screen.cpp index 39deca9..277be4e 100644 --- a/src/menu/title_screen.cpp +++ b/src/menu/title_screen.cpp @@ -6,7 +6,7 @@ void menu_drawTitle(TFT_eSprite &bg, TFT_eSprite &composite) { uint8_t pressedButtons = buttons_getPressedButtons(); - if (pressedButtons == 8 || pressedButtons == 4) { + if (pressedButtons != 0) { screenKey = CLOCK_EDIT_SCREEN; return; } diff --git a/src/menu/training_screen2.cpp b/src/menu/training_screen2.cpp index 02cb712..933cbba 100644 --- a/src/menu/training_screen2.cpp +++ b/src/menu/training_screen2.cpp @@ -58,9 +58,9 @@ void training_screenTraining2( } uint8_t pressedButtons = buttons_getPressedButtons(); - if (pressedButtons == K1_PRESSED || pressedButtons == K2_PRESSED) { + if (pressedButtons == K3_PRESSED || pressedButtons == K4_PRESSED) { 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); inactivityTimer = currentTime;