From 70a7144d52a91a8f3c266e71958f3e7b89ab7abf Mon Sep 17 00:00:00 2001 From: Nacho Date: Fri, 30 May 2025 00:24:36 +0200 Subject: [PATCH] Que acaba de ocurrir? MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ah si, se ha cambiado el buffer, ocupaba todo el espacio contiguo disponible y no podía aprovecharlo para nada mas. Normal que no te dejara reservar un buffer de 240x240... Y menos ahora cuando has metido el light sleep. Ah si, ahora hay light sleep, el micro baja hasta 4mA, lo cual lo considero suficiente para mi causa... --- platformio.ini | 2 +- src/animations/animations.h | 14 +++--- src/animations/sprite_animation.cpp | 21 +++----- src/buttons/buttons.cpp | 4 +- src/defs/defs.h | 14 ++---- src/defs/screen_defs.h | 14 ++++++ src/display/display.cpp | 74 ++++++++++++++++++++++------- src/display/display.h | 8 ++-- src/draw/draw.h | 8 ++-- src/draw/draw_background.cpp | 7 ++- src/draw/draw_sprites.cpp | 14 +++--- src/energy/energy.h | 7 +++ src/energy/start_light_sleep.cpp | 45 ++++++++++++++++++ src/main.cpp | 65 ++++++++++++++----------- src/menu/care_mistake_screen.cpp | 10 ++-- src/menu/clock_screen.cpp | 25 +++++----- src/menu/death_screen.cpp | 10 ++-- src/menu/egg_hatch_screen.cpp | 20 ++++---- src/menu/egg_select_screen.cpp | 10 ++-- src/menu/feeding_screen.cpp | 10 ++-- src/menu/food_select_screen.cpp | 19 ++++---- src/menu/happy_screen.cpp | 12 ++--- src/menu/idle_screen.cpp | 12 ++--- src/menu/menu.h | 48 +++++++++---------- src/menu/menu_screen.cpp | 27 +++++------ src/menu/off_screen.cpp | 6 ++- src/menu/poop_clean.cpp | 10 ++-- src/menu/poop_overlay.cpp | 4 +- src/menu/poop_screen.cpp | 18 +++---- src/menu/refuse_screen.cpp | 8 ++-- src/menu/sleep_screen.cpp | 12 ++--- src/menu/sleeping_screen.cpp | 14 +++--- src/menu/status_screen.cpp | 18 ++++--- src/menu/timer_finished.cpp | 2 +- src/menu/title_screen.cpp | 12 ++--- src/menu/ui_overlay.cpp | 18 +++---- 36 files changed, 360 insertions(+), 262 deletions(-) create mode 100644 src/defs/screen_defs.h create mode 100644 src/energy/energy.h create mode 100644 src/energy/start_light_sleep.cpp diff --git a/platformio.ini b/platformio.ini index 2b474d1..bc9003e 100644 --- a/platformio.ini +++ b/platformio.ini @@ -15,4 +15,4 @@ framework = arduino monitor_speed = 115200 monitor_port = /dev/ttyUSB0 monitor_filters = esp32_exception_decoder -lib_deps = TFT_eSPI, fbiego/ESP32Time@^2.0.6, electroniccats/MPU6050@^1.4.3 \ No newline at end of file +lib_deps = TFT_eSPI, fbiego/ESP32Time@^2.0.6, electroniccats/MPU6050@^1.4.3 diff --git a/src/animations/animations.h b/src/animations/animations.h index 2ccbedc..3fbaaff 100644 --- a/src/animations/animations.h +++ b/src/animations/animations.h @@ -58,12 +58,12 @@ const int hatchingAnimationPositions[] = { 72, 66, 72, 78 }; -void animate_performAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData, uint8_t offsetX); -void animate_performAttentionAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData); -void animate_performEatingAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData); -void animate_performRefuseAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData); -void animate_performSleepyAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData); -void animate_performHappyAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData); -void animate_performHatchingAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData); +void animate_performAnimation(TFT_eSprite &spr, struct SpriteData* spriteData, uint8_t offsetX); +void animate_performAttentionAnimation(TFT_eSprite &spr, struct SpriteData* spriteData); +void animate_performEatingAnimation(TFT_eSprite &spr, struct SpriteData* spriteData); +void animate_performRefuseAnimation(TFT_eSprite &spr, struct SpriteData* spriteData); +void animate_performSleepyAnimation(TFT_eSprite &spr, struct SpriteData* spriteData); +void animate_performHappyAnimation(TFT_eSprite &spr, struct SpriteData* spriteData); +void animate_performHatchingAnimation(TFT_eSprite &spr, struct SpriteData* spriteData); #endif \ No newline at end of file diff --git a/src/animations/sprite_animation.cpp b/src/animations/sprite_animation.cpp index ca4d5a8..a2dda18 100644 --- a/src/animations/sprite_animation.cpp +++ b/src/animations/sprite_animation.cpp @@ -8,9 +8,8 @@ const int spriteHeightOnScreen = 72; int currentAnimationFrame = 0; -void animate_performAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData, uint8_t offsetX) { +void animate_performAnimation(TFT_eSprite &spr, struct SpriteData* spriteData, uint8_t offsetX) { draw_drawSprite( - buffer, spr, animationPositions[currentAnimationFrame] - offsetX, spriteHeightOnScreen, @@ -23,10 +22,9 @@ void animate_performAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct Spri currentAnimationFrame = (currentAnimationFrame + 1) % numFrames; } -void animate_performAttentionAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData) { +void animate_performAttentionAnimation(TFT_eSprite &spr, struct SpriteData* spriteData) { currentAnimationFrame = (currentAnimationFrame + 1) % numFramesAngry; draw_drawSprite( - buffer, spr, spriteHeightOnScreen, spriteHeightOnScreen, @@ -38,10 +36,9 @@ void animate_performAttentionAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, st } -void animate_performEatingAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData) { +void animate_performEatingAnimation(TFT_eSprite &spr, struct SpriteData* spriteData) { currentAnimationFrame = (currentAnimationFrame + 1) % numFramesEating; draw_drawSprite( - buffer, spr, spriteHeightOnScreen, spriteHeightOnScreen, @@ -52,10 +49,9 @@ void animate_performEatingAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struc ); } -void animate_performRefuseAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData) { +void animate_performRefuseAnimation(TFT_eSprite &spr, struct SpriteData* spriteData) { currentAnimationFrame = (currentAnimationFrame + 1) % numFramesRefuse; draw_drawSprite( - buffer, spr, spriteHeightOnScreen, spriteHeightOnScreen, @@ -66,10 +62,9 @@ void animate_performRefuseAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struc ); } -void animate_performSleepyAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData) { +void animate_performSleepyAnimation(TFT_eSprite &spr, struct SpriteData* spriteData) { currentAnimationFrame = (currentAnimationFrame + 1) % numFramesSleepy; draw_drawSprite( - buffer, spr, spriteHeightOnScreen, spriteHeightOnScreen, @@ -80,10 +75,9 @@ void animate_performSleepyAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struc ); } -void animate_performHappyAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData) { +void animate_performHappyAnimation(TFT_eSprite &spr, struct SpriteData* spriteData) { currentAnimationFrame = (currentAnimationFrame + 1) % numFramesHappy; draw_drawSprite( - buffer, spr, spriteHeightOnScreen, spriteHeightOnScreen, @@ -94,10 +88,9 @@ void animate_performHappyAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct ); } -void animate_performHatchingAnimation(TFT_eSprite &buffer, TFT_eSprite &spr, struct SpriteData* spriteData) { +void animate_performHatchingAnimation(TFT_eSprite &spr, struct SpriteData* spriteData) { currentAnimationFrame = (currentAnimationFrame + 1) % numFramesHappy; draw_drawSprite( - buffer, spr, hatchingAnimationPositions[currentAnimationFrame], spriteHeightOnScreen, diff --git a/src/buttons/buttons.cpp b/src/buttons/buttons.cpp index 3973448..7a24509 100644 --- a/src/buttons/buttons.cpp +++ b/src/buttons/buttons.cpp @@ -1,5 +1,6 @@ #include "defs/defs.h" #include "defs/chara_data.h" +#include "defs/screen_defs.h" #include "buttons.h" #include @@ -18,8 +19,7 @@ void buttons_checkInactivity() { if (currentTime - lastPressedButtonTime > INACTIVITY_THRESHOLD_TIME_US && !screenOff) { digitalWrite(BL_PIN, LOW); screenKey = OFF_SCREEN; - screenOff = true; - + } else if (currentTime - lastPressedButtonTime > LAST_PRESSED_BUTTON_THRESHOLD_TIME_US && !inactive) { screenKey = IDLE_SCREEN; inactive = true; diff --git a/src/defs/defs.h b/src/defs/defs.h index 4de8dec..ff20aa2 100644 --- a/src/defs/defs.h +++ b/src/defs/defs.h @@ -17,9 +17,9 @@ #define BL_PIN 25 // BUTTONS PINOUT -#define K1_PIN 33 -#define K2_PIN 35 -#define K3_PIN 34 +#define K1_PIN 27 +#define K2_PIN 26 +#define K3_PIN 33 #define K4_PIN 32 // SPEAKER PINOUT @@ -183,12 +183,4 @@ extern Line_t** currentLine; extern struct SpriteData mainCharacterSprites; -// ALTAMENTE TEMPORAL -extern int xPos; -extern int yPos; - -#include - -extern TFT_eSPI tft; - #endif \ No newline at end of file diff --git a/src/defs/screen_defs.h b/src/defs/screen_defs.h new file mode 100644 index 0000000..82e8a02 --- /dev/null +++ b/src/defs/screen_defs.h @@ -0,0 +1,14 @@ +#ifndef SCREEN_DEFS_H +#define SCREEN_DEFS_H + +#include + +extern TFT_eSPI tft; +extern TFT_eSprite composite1; +extern TFT_eSprite composite2; + +// ALTAMENTE TEMPORAL +extern int xPos; +extern int yPos; + +#endif \ No newline at end of file diff --git a/src/display/display.cpp b/src/display/display.cpp index c7caaca..11b4801 100644 --- a/src/display/display.cpp +++ b/src/display/display.cpp @@ -1,33 +1,75 @@ #include "display.h" +#include "defs/screen_defs.h" int xPos = 0; int yPos = 0; +static const int BUF_W = 240; +static const int BUF_H = 120; + + void tft_initDisplay(TFT_eSPI &tft, uint16_t color) { tft.init(); tft.setRotation(1); - tft.fillScreen(color); + tft.fillScreen(TFT_RED); } -void tft_initScreenBuffer(TFT_eSprite &buffer, uint16_t color) { - buffer.createSprite(SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1); - buffer.fillSprite(color); - buffer.setTextColor(TFT_BLACK); - buffer.setTextSize(4); - buffer.pushSprite(0, 0); +void tft_initScreenBuffer(uint16_t color) { + bool status = composite1.createSprite(240, 120); + composite1.fillSprite(TFT_BLUE); + composite1.setTextColor(TFT_BLACK); + composite1.setTextSize(4); + composite1.pushSprite(0, 0); + + printf("STATUS1: %i", status); + + status = composite2.createSprite(240, 120); + composite2.fillSprite(TFT_BLUE); + composite2.setTextColor(TFT_BLACK); + composite2.setTextSize(4); + composite2.pushSprite(0, 120); } -void tft_drawBuffer(TFT_eSprite &buffer) { - buffer.pushSprite(xPos * -80, yPos * -112); +void tft_drawBuffer() { + tft.startWrite(); + composite1.pushSprite(xPos * -80, yPos * -112); + composite2.pushSprite(xPos * -80, (yPos * -112) + BUF_H); + tft.endWrite(); } -void tft_clearBuffer(TFT_eSprite &buffer, uint16_t color) { - buffer.fillSprite(color); +void tft_clearBuffer(TFT_eSprite &composite, uint16_t color) { + composite.fillSprite(color); } -void tft_drawCenteredText(TFT_eSprite &buffer, const char* text, int factor, int y) { - size_t textWidth = strlen(text) * factor * 6; - int x = (SCREEN_WIDTH - textWidth) / 2; - buffer.setTextSize(factor); - buffer.drawString(text, x, y); +void tft_clearBuffer(uint16_t color) { + composite1.fillSprite(color); + composite2.fillSprite(color); +} + +void tft_drawCenteredText(const char* text, int size, int yGlobal) { + int textW = strlen(text) * size * 6; + int x = (SCREEN_WIDTH - textW) / 2; + + if (yGlobal < BUF_H) { + // only top half + composite1.setTextSize(size); + composite1.setTextColor(TFT_BLACK); + composite1.drawString(text, x, yGlobal); + } else { + // only bottom half, adjust local Y + int yLocal = yGlobal - BUF_H; + composite2.setTextSize(size); + composite2.setTextColor(TFT_BLACK); + composite2.drawString(text, x, yLocal); + } +} + +void tft_drawText(const char* text, uint8_t size, uint8_t x, uint8_t y, uint16_t color) { + composite1.setTextSize(size); + composite1.setTextColor(color); + composite1.drawString(text, x, y); + + composite2.setTextSize(size); + composite2.setTextColor(color); + composite2.drawString(text, x, y - BUF_H); } \ No newline at end of file diff --git a/src/display/display.h b/src/display/display.h index 8b7512c..d6b92d8 100644 --- a/src/display/display.h +++ b/src/display/display.h @@ -7,9 +7,11 @@ const int SCREEN_WIDTH = 240; const int SCREEN_HEIGHT = 240; void tft_initDisplay(TFT_eSPI &tft, uint16_t color = TFT_WHITE); -void tft_initScreenBuffer(TFT_eSprite &spr, uint16_t color = TFT_WHITE); -void tft_drawBuffer(TFT_eSprite &buffer); +void tft_initScreenBuffer(uint16_t color = TFT_WHITE); +void tft_drawBuffer(); void tft_clearBuffer(TFT_eSprite &buffer, uint16_t color = TFT_WHITE); -void tft_drawCenteredText(TFT_eSprite &buffer, const char* text, int factor, int y); +void tft_clearBuffer(uint16_t color = TFT_WHITE); +void tft_drawCenteredText(const char* text, int factor, int y); +void tft_drawText(const char* text, uint8_t size, uint8_t x, uint8_t y, uint16_t color = TFT_BLACK); #endif \ No newline at end of file diff --git a/src/draw/draw.h b/src/draw/draw.h index a5531c1..7c8ee6b 100644 --- a/src/draw/draw.h +++ b/src/draw/draw.h @@ -4,15 +4,13 @@ #include void draw_drawSprite( - TFT_eSprite &buffer, TFT_eSprite &tft, - int x, int y, + TFT_eSprite &tft, int x, int y, struct SpriteData* spriteData, uint8_t spriteNumber, uint8_t factor, bool flipHorizontal = false ); -void draw_drawBackground(TFT_eSprite &buffer, TFT_eSprite &bg, int spr_w, int spr_h, int factor); +void draw_drawBackground(TFT_eSprite &bg, int spr_w, int spr_h, int factor); void draw_drawSpriteCentered( - TFT_eSprite &buffer, TFT_eSprite &spr, - struct SpriteData* spriteData, uint8_t spriteNumber, uint8_t factor, bool flipped = false, int y = -1 + TFT_eSprite &spr, struct SpriteData* spriteData, uint8_t spriteNumber, uint8_t factor, bool flipped = false, int y = -1 ); #endif \ No newline at end of file diff --git a/src/draw/draw_background.cpp b/src/draw/draw_background.cpp index 9707bf5..29d0974 100644 --- a/src/draw/draw_background.cpp +++ b/src/draw/draw_background.cpp @@ -1,9 +1,10 @@ #include "draw.h" +#include "defs/screen_defs.h" const char* TAG_DB = "[DRAW BG]"; -void draw_drawBackground(TFT_eSprite &buffer, TFT_eSprite &bg, int spr_w, int spr_h, int factor) { +void draw_drawBackground(TFT_eSprite &bg, int spr_w, int spr_h, int factor) { int scaledWidth = spr_w * factor; int scaledHeight = spr_h * factor; @@ -13,7 +14,9 @@ void draw_drawBackground(TFT_eSprite &buffer, TFT_eSprite &bg, int spr_w, int sp int srcY = sy / factor; uint16_t color = bg.readPixel(srcX, srcY); - buffer.drawPixel(sx, sy, color); + + composite1.drawPixel(sx, sy, color); + composite2.drawPixel(sx, sy - 120, color); } } } \ No newline at end of file diff --git a/src/draw/draw_sprites.cpp b/src/draw/draw_sprites.cpp index 2766864..5e3b96d 100644 --- a/src/draw/draw_sprites.cpp +++ b/src/draw/draw_sprites.cpp @@ -1,14 +1,15 @@ #include "draw.h" #include "defs/sprite_data.h" +#include "defs/screen_defs.h" -#define BUFFER_X 239 -#define BUFFER_Y 239 +#define BUFFER_X 240 +#define BUFFER_Y 240 const char* TAG_D = "[DRAW]"; void draw_drawSprite( - TFT_eSprite &buffer, TFT_eSprite &spr, int x, int y, + TFT_eSprite &spr, int x, int y, struct SpriteData* spriteData, uint8_t spriteNumber, uint8_t factor, bool flipHorizontal ) { int scaledWidth = spriteData->spriteWidth * factor; @@ -33,13 +34,14 @@ void draw_drawSprite( } } - spr.pushToSprite(&buffer, x, y, TFT_TRANSPARENT); + spr.pushToSprite(&composite1, x, y, TFT_TRANSPARENT); + spr.pushToSprite(&composite2, x, y - 120, TFT_TRANSPARENT); //printf("%s: Sprite %d drawn at (%d, %d) %s\n", TAG_D, spriteNumber, x, y, (flipHorizontal ? "flipped" : "")); } void draw_drawSpriteCentered( - TFT_eSprite &buffer, TFT_eSprite &spr, + TFT_eSprite &spr, struct SpriteData* spriteData, uint8_t spriteNumber, uint8_t factor, bool flipped, int y ) { int x = (BUFFER_X - (spriteData->spriteWidth * factor)) / 2; @@ -51,7 +53,7 @@ void draw_drawSpriteCentered( } draw_drawSprite( - buffer, spr, x, new_y, + spr, x, new_y, spriteData, spriteNumber, factor, flipped ); } \ No newline at end of file diff --git a/src/energy/energy.h b/src/energy/energy.h new file mode 100644 index 0000000..bd92d56 --- /dev/null +++ b/src/energy/energy.h @@ -0,0 +1,7 @@ +#ifndef ENERGY_H +#define ENERGY_H + +void energy_startLightSleep(); +void energy_setUpLightSleep(); + +#endif \ No newline at end of file diff --git a/src/energy/start_light_sleep.cpp b/src/energy/start_light_sleep.cpp new file mode 100644 index 0000000..5506323 --- /dev/null +++ b/src/energy/start_light_sleep.cpp @@ -0,0 +1,45 @@ +#include "energy.h" +#include +#include "defs/defs.h" +#include "display/display.h" +#include "driver/rtc_io.h" +#include "defs/screen_defs.h" + +#define SLEEP_TIME_US 15000000ull + +#define BUTTON_PIN_BITMASK(GPIO) (1ULL << GPIO) // Macro for individual GPIO bitmask + +void energy_setUpLightSleep() { + // Enable EXT1 wake-up source + esp_err_t result = esp_sleep_enable_ext0_wakeup(GPIO_NUM_32, 0); + + if (result == ESP_OK) { + Serial.println("EXT1 Wake-Up set successfully."); + } else { + Serial.println("Failed to set EXT1 Wake-Up as wake-up source."); + } + + //esp_sleep_enable_timer_wakeup(SLEEP_TIME_US); +} + +void energy_startLightSleep() { + esp_light_sleep_start(); + + // 6) Figure out which woke you + auto cause = esp_sleep_get_wakeup_cause(); + if (cause == ESP_SLEEP_WAKEUP_EXT1) { + uint64_t mask = esp_sleep_get_ext1_wakeup_status(); + int pin = mask ? __builtin_ctzll(mask) : -1; + Serial.printf("Woke by button on GPIO %d\n", pin); + } else if (cause == ESP_SLEEP_WAKEUP_TIMER) { + Serial.println("Woke by timer"); + } else { + Serial.printf("Other wakeup: %d\n", cause); + } + + byte pinValue = digitalRead(26); + Serial.println(pinValue); + + // 7) Re-init your display (SPI.begin(), tft.init(), redraw…) +} + \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index eb59045..01c3a3e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -11,12 +11,16 @@ #include "vpet/vpet.h" #include "vpet/steps/steps.h" #include "vpet/lines/lines.h" +#include "energy/energy.h" +#include "driver/rtc_io.h" + const char* TAG = "[MAIN]"; // TFT_eSPI stuff, important TFT_eSPI tft = TFT_eSPI(); -TFT_eSprite composite = TFT_eSprite(&tft); +TFT_eSprite composite1 = TFT_eSprite(&tft); +TFT_eSprite composite2 = TFT_eSprite(&tft); TFT_eSprite sprite = TFT_eSprite(&tft); TFT_eSprite bg = TFT_eSprite(&tft); @@ -66,14 +70,14 @@ void secondCoreTask(void*); void loop_readSteps(void*); void setup() { - Serial.begin(115200); + //Serial.begin(115200); delay(100); // Give MPU6050 and ESP32 time to power up Wire.begin(MPU_SDA_PIN, MPU_SCL_PIN); // I2C init before MPU6050 mpu.initialize(); tft_initDisplay(tft, TFT_BLACK); - tft_initScreenBuffer(composite, TFT_BLACK); + tft_initScreenBuffer(TFT_BLACK); storage_init(); @@ -82,99 +86,106 @@ void setup() { storage_initBackground("/bg.bin", bg); - pinMode(K1_PIN, INPUT_PULLUP); - pinMode(K2_PIN, INPUT_PULLUP); - pinMode(K3_PIN, INPUT_PULLUP); - pinMode(K4_PIN, INPUT_PULLUP); + pinMode(K1_PIN, INPUT_PULLDOWN); + pinMode(K2_PIN, INPUT_PULLDOWN); + pinMode(K3_PIN, INPUT_PULLDOWN); + pinMode(K4_PIN, INPUT_PULLDOWN); xTaskCreatePinnedToCore(secondCoreTask, "VPET_EVAL", 4096, NULL, 0, &secondLoop, 0); lines_initLineStorage(); vpet_initTimer(); + + energy_setUpLightSleep(); } void loop() { + if (screenOff) { + printf("[TEST] Going to sleep\n"); + energy_startLightSleep(); + } + switch (screenKey) { case TITLE_SCREEN: - menu_drawTitle(composite, bg); + menu_drawTitle(bg); break; case CLOCK_EDIT_SCREEN: - menu_drawClockEdit(composite, bg); + menu_drawClockEdit(bg); break; case CLOCK_SCREEN: - menu_drawClock(composite, bg, menuKey); + menu_drawClock(bg); break; case IDLE_SCREEN: - menu_drawIdleScreen(composite, bg, sprite, &mainCharacterSprites, &menuElementsData, &uiElementsData); + menu_drawIdleScreen(bg, sprite, &mainCharacterSprites, &menuElementsData, &uiElementsData); break; case MENU_SCREEN: - menu_drawCurrentMenuOption(composite, bg, sprite, &menuElementsData); + menu_drawCurrentMenuOption(bg, sprite, &menuElementsData); break; case STATUS_SCREEN: - menu_statusScreen(composite, bg, sprite, &uiElementsData, &charaData); + menu_statusScreen(bg, sprite, &uiElementsData, &charaData); break; case OFF_SCREEN: - menu_offScreen(composite); + menu_offScreen(); break; case TIMER_FINISHED_SCREEN: - menu_timerFinishedScreen(composite, bg, sprite, &mainCharacterSprites); + menu_timerFinishedScreen(bg, sprite, &mainCharacterSprites); break; case FOOD_SCREEN: - menu_foodScreen(composite, bg, sprite, &uiElementsData); + menu_foodScreen(bg, sprite, &uiElementsData); break; case FEEDING_SCREEN: - menu_feedingScreen(composite, bg, sprite, &uiElementsData, &mainCharacterSprites, submenuKey); + menu_feedingScreen(bg, sprite, &uiElementsData, &mainCharacterSprites, submenuKey); break; case REFUSING_SCREEN: - menu_refuseScreen(composite, bg, sprite, &mainCharacterSprites); + menu_refuseScreen(bg, sprite, &mainCharacterSprites); break; case SLEEPY_SCREEN: - menu_sleepyScreen(composite, bg, sprite, &mainCharacterSprites, &menuElementsData); + menu_sleepyScreen(bg, sprite, &mainCharacterSprites, &menuElementsData); break; case SLEEP_SCREEN: - menu_sleepingScreen(composite, bg, sprite, &mainCharacterSprites, &menuElementsData, &uiElementsData); + menu_sleepingScreen(bg, sprite, &mainCharacterSprites, &menuElementsData, &uiElementsData); break; case CARE_MISTAKE_SCREEN: - menu_careMistakeScreen(composite, bg, sprite, &mainCharacterSprites, &menuElementsData); + menu_careMistakeScreen(bg, sprite, &mainCharacterSprites, &menuElementsData); break; case POOPING_SCREEN: - menu_poopScreen(composite, bg, sprite, &mainCharacterSprites, &uiElementsData, &menuElementsData); + menu_poopScreen(bg, sprite, &mainCharacterSprites, &uiElementsData, &menuElementsData); break; case CLEAR_POOP_SCREEN: - menu_clearPoopScreen(composite, bg, sprite, &mainCharacterSprites, &menuElementsData, &uiElementsData); + menu_clearPoopScreen(bg, sprite, &mainCharacterSprites, &menuElementsData, &uiElementsData); break; case HAPPY_SCREEN: - menu_drawHappyScreen(composite, bg, sprite, &mainCharacterSprites, &uiElementsData); + menu_drawHappyScreen(bg, sprite, &mainCharacterSprites, &uiElementsData); break; case EGG_HATCH_SCREEN: - menu_eggHatchScreen(composite, bg, sprite, &menuElementsData, &uiElementsData); + menu_eggHatchScreen(bg, sprite, &menuElementsData, &uiElementsData); break; case EGG_SELECT_SCREEN: - menu_lineSwitcher(composite, bg, sprite, &uiElementsData); + menu_lineSwitcher(bg, sprite, &uiElementsData); break; case EGG_EMPTY_SCREEN: - menu_drawDeathScreen(composite, bg, sprite, &menuElementsData, &uiElementsData); + menu_drawDeathScreen( bg, sprite, &menuElementsData, &uiElementsData); break; } diff --git a/src/menu/care_mistake_screen.cpp b/src/menu/care_mistake_screen.cpp index 42f10dd..12eb91d 100644 --- a/src/menu/care_mistake_screen.cpp +++ b/src/menu/care_mistake_screen.cpp @@ -8,7 +8,7 @@ uint64_t lastBeepTime = esp_timer_get_time(); uint8_t beepCounter = 0; -void menu_careMistakeScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* uiSpritesBig) { +void menu_careMistakeScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* uiSpritesBig) { uint64_t currentTime = esp_timer_get_time(); uint8_t pressedButtons = buttons_getPressedButtons(); @@ -22,13 +22,13 @@ void menu_careMistakeScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite } if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) { - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - animate_performAttentionAnimation(composite, sprite, spriteData); + animate_performAttentionAnimation(sprite, spriteData); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, uiSpritesBig); + menu_uiOverlay(sprite, uiSpritesBig); lastUpdateTime = currentTime; } @@ -38,5 +38,5 @@ void menu_careMistakeScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite beepCounter = 0; } - tft_drawBuffer(composite); + tft_drawBuffer(); } \ No newline at end of file diff --git a/src/menu/clock_screen.cpp b/src/menu/clock_screen.cpp index 6fe7165..8fc3208 100644 --- a/src/menu/clock_screen.cpp +++ b/src/menu/clock_screen.cpp @@ -4,8 +4,9 @@ #include "display/display.h" #include "buttons/buttons.h" #include "vpet/vpet.h" +#include "defs/screen_defs.h" -void menu_drawClock(TFT_eSprite &composite, TFT_eSprite &bg, int menuOption) { +void menu_drawClock(TFT_eSprite &bg) { uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { case K2_PRESSED: @@ -18,21 +19,18 @@ void menu_drawClock(TFT_eSprite &composite, TFT_eSprite &bg, int menuOption) { char hourBuffer[6]; - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); snprintf(hourBuffer, 6, "%02d:%02d", timeInfo.tm_hour, timeInfo.tm_min); - composite.setTextSize(4); - composite.drawString(hourBuffer, 40, 90); + tft_drawText(hourBuffer, 4, 40, 90); sniprintf(hourBuffer, 3, "%02d", timeInfo.tm_sec); - composite.setTextSize(2); - composite.drawString(hourBuffer, 170, 104); - - tft_drawBuffer(composite); + tft_drawText(hourBuffer, 2, 170, 104); + tft_drawBuffer(); } -void menu_drawClockEdit(TFT_eSprite &composite, TFT_eSprite &bg) { +void menu_drawClockEdit(TFT_eSprite &bg) { char textBuffer[6]; static int clockHourCount = 0; @@ -64,13 +62,12 @@ void menu_drawClockEdit(TFT_eSprite &composite, TFT_eSprite &bg) { break; } - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); snprintf(textBuffer, 6, "%02d:%02d", clockHourCount, clockMinuteCount); - composite.setTextSize(4); - composite.drawString(textBuffer, 40, 90); - composite.drawString("SET", 40, 122); + tft_drawText(textBuffer, 4, 40, 90); + tft_drawText("SET", 4, 40, 122); - tft_drawBuffer(composite); + tft_drawBuffer(); } diff --git a/src/menu/death_screen.cpp b/src/menu/death_screen.cpp index 44637ab..e118a09 100644 --- a/src/menu/death_screen.cpp +++ b/src/menu/death_screen.cpp @@ -6,7 +6,7 @@ #include "defs/sprite_data.h" #include "vpet/lines/lines.h" -void menu_drawDeathScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite) { +void menu_drawDeathScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite) { static uint8_t frameCounter = 0; uint64_t currentTime = esp_timer_get_time(); @@ -32,15 +32,15 @@ void menu_drawDeathScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite & } if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) { - draw_drawBackground(composite, bg, 90, 90, 3); - draw_drawSprite(composite, sprite, 72 + (6 * (frameCounter == 0)), 72, uiBigSprite, EMPTY_EGG, 6); + draw_drawBackground(bg, 90, 90, 3); + draw_drawSprite(sprite, 72 + (6 * (frameCounter == 0)), 72, uiBigSprite, EMPTY_EGG, 6); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, uiSmallSprite); + menu_uiOverlay(sprite, uiSmallSprite); tft_clearBuffer(sprite, TFT_TRANSPARENT); frameCounter = (frameCounter + 1) % 32; lastUpdateTime = currentTime; } - tft_drawBuffer(composite); + tft_drawBuffer(); } \ No newline at end of file diff --git a/src/menu/egg_hatch_screen.cpp b/src/menu/egg_hatch_screen.cpp index c2d9ba5..b4a9984 100644 --- a/src/menu/egg_hatch_screen.cpp +++ b/src/menu/egg_hatch_screen.cpp @@ -9,7 +9,7 @@ #include "vpet/vpet.h" #include "vpet/lines/lines.h" -void menu_eggHatchScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite) { +void menu_eggHatchScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite) { static bool eggSpriteFrame = false; uint8_t frameCounter = 0; @@ -30,13 +30,13 @@ void menu_eggHatchScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &s uint64_t currentTime = esp_timer_get_time(); if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) { if (charaData.hatchTimer <= currentLine[currentCharacter]->hatchTime) { - draw_drawBackground(composite, bg, 90, 90, 3); - draw_drawSpriteCentered(composite, sprite, ¤tEgg->eggSprite, eggSpriteFrame, 6); + draw_drawBackground(bg, 90, 90, 3); + draw_drawSpriteCentered(sprite, ¤tEgg->eggSprite, eggSpriteFrame, 6); eggSpriteFrame = !eggSpriteFrame; lastUpdateTime = currentTime; - tft_drawBuffer(composite); + tft_drawBuffer(); } else if (charaData.hatchTimer > currentLine[currentCharacter]->hatchTime && !charaData.hatched) { @@ -44,16 +44,16 @@ void menu_eggHatchScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &s tone(SPK_PIN, 4100, 35); tone(SPK_PIN, 3500, 35); - draw_drawBackground(composite, bg, 90, 90, 3); - animate_performHatchingAnimation(composite, sprite, ¤tEgg->eggSprite); + draw_drawBackground(bg, 90, 90, 3); + animate_performHatchingAnimation(sprite, ¤tEgg->eggSprite); - tft_drawBuffer(composite); + tft_drawBuffer(); } - draw_drawBackground(composite, bg, 90, 90, 3); - draw_drawSpriteCentered(composite, sprite, ¤tEgg->eggSprite, 2, 6); + draw_drawBackground(bg, 90, 90, 3); + draw_drawSpriteCentered(sprite, ¤tEgg->eggSprite, 2, 6); - tft_drawBuffer(composite); + tft_drawBuffer(); delay(2000); diff --git a/src/menu/egg_select_screen.cpp b/src/menu/egg_select_screen.cpp index d71f581..652ac53 100644 --- a/src/menu/egg_select_screen.cpp +++ b/src/menu/egg_select_screen.cpp @@ -9,7 +9,7 @@ #include "defs/chara_data.h" -void menu_lineSwitcher(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiSmallSprite) { +void menu_lineSwitcher(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiSmallSprite) { static uint8_t eggCounter = 0; uint8_t buttonsPressed = buttons_getPressedButtons(); @@ -34,13 +34,13 @@ void menu_lineSwitcher(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &spr break; } - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSpriteCentered(composite, sprite, &eggSelection[eggCounter].eggSprite, 0, 6); + draw_drawSpriteCentered(sprite, &eggSelection[eggCounter].eggSprite, 0, 6); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSprite(composite, sprite, 194, 96, uiSmallSprite, ARROW_ICON, 6); + draw_drawSprite(sprite, 194, 96, uiSmallSprite, ARROW_ICON, 6); - tft_drawBuffer(composite); + tft_drawBuffer(); } void menu_reloadEggs(uint8_t selectedEgg) { diff --git a/src/menu/feeding_screen.cpp b/src/menu/feeding_screen.cpp index 9751c8b..90525d9 100644 --- a/src/menu/feeding_screen.cpp +++ b/src/menu/feeding_screen.cpp @@ -5,7 +5,7 @@ #include "display/display.h" void menu_feedingScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &charaSprite, + TFT_eSprite &bg, TFT_eSprite &charaSprite, struct SpriteData* uiSpriteData, struct SpriteData* charaSpriteData, uint8_t item ) { static int currentAnimationFrame = 0; @@ -13,13 +13,13 @@ void menu_feedingScreen( uint64_t currentTime = esp_timer_get_time(); if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) { - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(charaSprite, TFT_TRANSPARENT); - animate_performEatingAnimation(composite, charaSprite, charaSpriteData); + animate_performEatingAnimation(charaSprite, charaSpriteData); tft_clearBuffer(charaSprite, TFT_TRANSPARENT); - draw_drawSprite(composite, charaSprite, 24, 120, uiSpriteData, item, 6); + draw_drawSprite(charaSprite, 24, 120, uiSpriteData, item, 6); lastUpdateTime = currentTime; currentAnimationFrame++; @@ -32,7 +32,7 @@ void menu_feedingScreen( submenuKey = -1; } - tft_drawBuffer(composite); + tft_drawBuffer(); uint8_t pressedButtons = buttons_getPressedButtons(); switch (pressedButtons) { diff --git a/src/menu/food_select_screen.cpp b/src/menu/food_select_screen.cpp index 8b34f53..5b5ee95 100644 --- a/src/menu/food_select_screen.cpp +++ b/src/menu/food_select_screen.cpp @@ -5,7 +5,7 @@ #include "defs/chara_data.h" #include "vpet/vpet.h" -void menu_foodScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData) { +void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData) { if (charaData.sleepy) { tone(SPK_PIN, BEEP_FREQ_HZ, BEEP_LEN_MS); delay(100); @@ -72,22 +72,21 @@ void menu_foodScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mainC vpet_computeCallLight(); } - composite.setTextSize(4); - draw_drawBackground(composite, bg, 90, 90, 3); - menu_foodScreen_drawEntry(composite, mainChara, spriteData, 0, FOOD_ICON, "Meat"); - menu_foodScreen_drawEntry(composite, mainChara, spriteData, 1, PILL_ICON, "Pill"); + draw_drawBackground(bg, 90, 90, 3); + menu_foodScreen_drawEntry(mainChara, spriteData, 0, FOOD_ICON, "Meat"); + menu_foodScreen_drawEntry(mainChara, spriteData, 1, PILL_ICON, "Pill"); - draw_drawSprite(composite, mainChara, 5, (arrowPosition * 34) + 5, spriteData, ARROW_ICON, 4); + draw_drawSprite(mainChara, 5, (arrowPosition * 34) + 5, spriteData, ARROW_ICON, 4); - tft_drawBuffer(composite); + tft_drawBuffer(); } void menu_foodScreen_drawEntry( - TFT_eSprite &composite, TFT_eSprite &mainChara, struct SpriteData* spriteData, + TFT_eSprite &mainChara, struct SpriteData* spriteData, uint8_t entryId, uint8_t spriteNumber, const char* textEntry ) { tft_clearBuffer(mainChara, TFT_TRANSPARENT); - draw_drawSprite(composite, mainChara, 45, (entryId * 34) + 5, spriteData, spriteNumber, 4); - composite.drawString(textEntry, 80, (entryId * 34) + 5); + draw_drawSprite(mainChara, 45, (entryId * 34) + 5, spriteData, spriteNumber, 4); + tft_drawText(textEntry, 4, 80, (entryId * 34) + 5); } \ No newline at end of file diff --git a/src/menu/happy_screen.cpp b/src/menu/happy_screen.cpp index 34a5985..cd5f7b8 100644 --- a/src/menu/happy_screen.cpp +++ b/src/menu/happy_screen.cpp @@ -6,7 +6,7 @@ #include "animations/animations.h" void menu_drawHappyScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, + TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* smallUiElements ) { uint8_t frameCounter = 0; @@ -21,10 +21,10 @@ void menu_drawHappyScreen( return; } - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - animate_performHappyAnimation(composite, sprite, spriteData); + animate_performHappyAnimation(sprite, spriteData); if (frameCounter % 2 == 0) { tone(SPK_PIN, 7500, 50); @@ -33,14 +33,14 @@ void menu_drawHappyScreen( tone(SPK_PIN, 1000, 50); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSprite(composite, sprite, 18, 72, smallUiElements, FIREWORKS_ICON, 6); - draw_drawSprite(composite, sprite, 174, 72, smallUiElements, FIREWORKS_ICON, 6); + draw_drawSprite(sprite, 18, 72, smallUiElements, FIREWORKS_ICON, 6); + draw_drawSprite(sprite, 174, 72, smallUiElements, FIREWORKS_ICON, 6); } frameCounter++; lastUpdateTime = currentTime; } - tft_drawBuffer(composite); + tft_drawBuffer(); } } \ No newline at end of file diff --git a/src/menu/idle_screen.cpp b/src/menu/idle_screen.cpp index bf4a769..118597b 100644 --- a/src/menu/idle_screen.cpp +++ b/src/menu/idle_screen.cpp @@ -8,7 +8,7 @@ uint64_t lastUpdateTime = esp_timer_get_time(); -void menu_drawIdleScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements) { +void menu_drawIdleScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements) { if (coldBoot) { screenKey = TITLE_SCREEN; return; @@ -45,19 +45,19 @@ void menu_drawIdleScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &s uint64_t currentTime = esp_timer_get_time(); if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) { - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - uint8_t offsetX = menu_poopOverlay(composite, sprite, smallUiElements); + uint8_t offsetX = menu_poopOverlay(sprite, smallUiElements); tft_clearBuffer(sprite, TFT_TRANSPARENT); - animate_performAnimation(composite, sprite, spriteData, offsetX); + animate_performAnimation(sprite, spriteData, offsetX); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, bigUiElements); + menu_uiOverlay(sprite, bigUiElements); lastUpdateTime = currentTime; } - tft_drawBuffer(composite); + tft_drawBuffer(); } diff --git a/src/menu/menu.h b/src/menu/menu.h index 1c132cb..fcccf81 100644 --- a/src/menu/menu.h +++ b/src/menu/menu.h @@ -4,46 +4,46 @@ #include #include "defs/defs.h" -void menu_drawCurrentMenuOption(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &icon, struct SpriteData* spriteData); -void menu_drawClock(TFT_eSprite &composite, TFT_eSprite &bg, int menuOption); -void menu_drawClockEdit(TFT_eSprite &composite, TFT_eSprite &bg); -void menu_drawTitle(TFT_eSprite &composite, TFT_eSprite &bg); -void menu_drawIdleScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements); -void menu_offScreen(TFT_eSprite &buffer); -void menu_statusScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct CharacterData* charaData); -void menu_statusScreen_drawStat(TFT_eSprite &composite, TFT_eSprite &sprite, struct SpriteData* spriteData, int x, int y, const char* text, uint8_t statValue); -void menu_timerFinishedScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData); -void menu_uiOverlay(TFT_eSprite &composite, TFT_eSprite &charSprite, struct SpriteData* uiElements); -void menu_foodScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData); +void menu_drawCurrentMenuOption(TFT_eSprite &bg, TFT_eSprite &icon, struct SpriteData* spriteData); +void menu_drawClock(TFT_eSprite &bg); +void menu_drawClockEdit(TFT_eSprite &bg); +void menu_drawTitle(TFT_eSprite &bg); +void menu_drawIdleScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements); +void menu_offScreen(); +void menu_statusScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct CharacterData* charaData); +void menu_statusScreen_drawStat(TFT_eSprite &sprite, struct SpriteData* spriteData, int x, int y, const char* text, uint8_t statValue); +void menu_timerFinishedScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData); +void menu_uiOverlay(TFT_eSprite &charSprite, struct SpriteData* uiElements); +void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData); void menu_foodScreen_drawEntry( - TFT_eSprite &composite, TFT_eSprite &mainChara, struct SpriteData* spriteData, + TFT_eSprite &mainChara, struct SpriteData* spriteData, uint8_t entryId, uint8_t spriteNumber, const char* textEntry ); void menu_feedingScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &charaSprite, + TFT_eSprite &bg, TFT_eSprite &charaSprite, struct SpriteData* uiSpriteData, struct SpriteData* charaSpriteData, uint8_t item ); -void menu_refuseScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData); -void menu_sleepyScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* charaSprites, struct SpriteData* uiSprites); -void menu_careMistakeScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* uiSpritesBig); +void menu_refuseScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData); +void menu_sleepyScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* charaSprites, struct SpriteData* uiSprites); +void menu_careMistakeScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* uiSpritesBig); void menu_sleepingScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, + TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* mainCharaData, struct SpriteData* bigUiElements, struct SpriteData* smallUIElements ); void menu_poopScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, + TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* smallUiElements, struct SpriteData* bigUiElements ); -uint8_t menu_poopOverlay(TFT_eSprite &composite, TFT_eSprite &sprite, struct SpriteData* smallUiElements); -void menu_clearPoopScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements); +uint8_t menu_poopOverlay(TFT_eSprite &sprite, struct SpriteData* smallUiElements); +void menu_clearPoopScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements); void menu_drawHappyScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, + TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* smallUiElements ); -void menu_lineSwitcher(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiSmallSprite); -void menu_eggHatchScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite); +void menu_lineSwitcher(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiSmallSprite); +void menu_eggHatchScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite); void menu_reloadEggs(uint8_t selectedEgg); -void menu_drawDeathScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite); +void menu_drawDeathScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite); void menu_sleepScreen_sleepAction(); void menu_sleepScreen_recalculateSleep(); diff --git a/src/menu/menu_screen.cpp b/src/menu/menu_screen.cpp index 89d225c..65cf48c 100644 --- a/src/menu/menu_screen.cpp +++ b/src/menu/menu_screen.cpp @@ -11,8 +11,8 @@ const int textXPos = 10; const int textYPos = 180; -void menu_drawCurrentMenuOption(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &icon, struct SpriteData* spriteData) { - draw_drawBackground(composite, bg, 90, 90, 3); +void menu_drawCurrentMenuOption(TFT_eSprite &bg, TFT_eSprite &icon, struct SpriteData* spriteData) { + draw_drawBackground(bg, 90, 90, 3); uint8_t pressedButtons = buttons_getPressedButtons(); @@ -58,40 +58,39 @@ void menu_drawCurrentMenuOption(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSp return; } - composite.setTextSize(4); - draw_drawSpriteCentered(composite, icon, spriteData, menuKey % 8, 6); + draw_drawSpriteCentered(icon, spriteData, menuKey % 8, 6); switch(menuKey % 9) { case STATUS_SCREEN_MENU: - tft_drawCenteredText(composite, "Status", 4, textYPos); + tft_drawCenteredText("Status", 4, textYPos); break; case FOOD_SCREEN_MENU: - tft_drawCenteredText(composite, "Food", 4, textYPos); + tft_drawCenteredText("Food", 4, textYPos); break; case TRAIN_SCREEN_MENU: - tft_drawCenteredText(composite, "Train", 4, textYPos); + tft_drawCenteredText("Train", 4, textYPos); break; case BATTLE_SCREEN_MENU: - tft_drawCenteredText(composite, "Battle", 4, textYPos); + tft_drawCenteredText("Battle", 4, textYPos); break; case POOP_SCREEN_MENU: - tft_drawCenteredText(composite, "Cleanup", 4, textYPos); + tft_drawCenteredText("Cleanup", 4, textYPos); break; case MEDICAL_SCREEN_MENU: - tft_drawCenteredText(composite, "Medical", 4, textYPos); + tft_drawCenteredText("Medical", 4, textYPos); break; case SLEEP_SCREEN_MENU: - tft_drawCenteredText(composite, "Sleep", 4, textYPos); + tft_drawCenteredText("Sleep", 4, textYPos); break; case SETTINGS_SCREEN_MENU: - tft_drawCenteredText(composite, "Settings", 4, textYPos); + tft_drawCenteredText("Settings", 4, textYPos); break; case 8: @@ -101,9 +100,9 @@ void menu_drawCurrentMenuOption(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSp break; } - menu_uiOverlay(composite, icon, spriteData); + menu_uiOverlay(icon, spriteData); - tft_drawBuffer(composite); + tft_drawBuffer(); } void menu_sleepScreen_sleepAction() { diff --git a/src/menu/off_screen.cpp b/src/menu/off_screen.cpp index af55574..8e66a7c 100644 --- a/src/menu/off_screen.cpp +++ b/src/menu/off_screen.cpp @@ -3,11 +3,13 @@ #include "buttons/buttons.h" #include "display/display.h" -void menu_offScreen(TFT_eSprite &buffer) { +void menu_offScreen() { uint8_t buttons = buttons_getPressedButtons(); if (buttons != 0) { - tft_drawBuffer(buffer); + tft_drawBuffer(); digitalWrite(BL_PIN, HIGH); screenKey = IDLE_SCREEN; + } else { + screenOff = true; } } \ No newline at end of file diff --git a/src/menu/poop_clean.cpp b/src/menu/poop_clean.cpp index dbde706..fe6ec58 100644 --- a/src/menu/poop_clean.cpp +++ b/src/menu/poop_clean.cpp @@ -6,17 +6,17 @@ #include "defs/sprite_data.h" void menu_clearPoopScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements + TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements ) { int cleanerXPos = 174; - menu_drawIdleScreen(composite, bg, sprite, spriteData, bigUiElements, smallUiElements); + menu_drawIdleScreen(bg, sprite, spriteData, bigUiElements, smallUiElements); tft_clearBuffer(sprite, TFT_TRANSPARENT); while (cleanerXPos > 18) { - draw_drawSprite(composite, sprite, cleanerXPos, 72, smallUiElements, CLEANER_ICON, 6); - draw_drawSprite(composite, sprite, cleanerXPos, 120, smallUiElements, CLEANER_ICON, 6); - tft_drawBuffer(composite); + draw_drawSprite(sprite, cleanerXPos, 72, smallUiElements, CLEANER_ICON, 6); + draw_drawSprite(sprite, cleanerXPos, 120, smallUiElements, CLEANER_ICON, 6); + tft_drawBuffer(); cleanerXPos -= 6; delay(50); } diff --git a/src/menu/poop_overlay.cpp b/src/menu/poop_overlay.cpp index 7400c0e..3c1e8b7 100644 --- a/src/menu/poop_overlay.cpp +++ b/src/menu/poop_overlay.cpp @@ -5,14 +5,14 @@ #include "defs/chara_data.h" #include "display/display.h" -uint8_t menu_poopOverlay(TFT_eSprite &composite, TFT_eSprite &sprite, struct SpriteData* smallUiElements) { +uint8_t menu_poopOverlay(TFT_eSprite &sprite, struct SpriteData* smallUiElements) { static bool poopFlip = false; const uint8_t poopStartY = 120; uint8_t poopStartX = 174; bool poopTop = false; for (int i = 0; i < charaData.poopNumber; i++) { - draw_drawSprite(composite, sprite, poopStartX, poopStartY - (48 * poopTop), smallUiElements, POOP_ICON, 6, poopFlip); + draw_drawSprite(sprite, poopStartX, poopStartY - (48 * poopTop), smallUiElements, POOP_ICON, 6, poopFlip); poopStartX -= (i % 2) * 48; poopTop = !poopTop; } diff --git a/src/menu/poop_screen.cpp b/src/menu/poop_screen.cpp index e2184e1..866815f 100644 --- a/src/menu/poop_screen.cpp +++ b/src/menu/poop_screen.cpp @@ -7,7 +7,7 @@ #include "defs/sprite_data.h" void menu_poopScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, + TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* smallUiElements, struct SpriteData* bigUiElements ) { uint8_t animationFrame = 0; @@ -19,13 +19,13 @@ void menu_poopScreen( uint64_t currentTime = esp_timer_get_time(); if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US && animationFrame < 4) { - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSprite(composite, sprite, 72 + (animationPosition * 6), 72, spriteData, 6, 6); + draw_drawSprite(sprite, 72 + (animationPosition * 6), 72, spriteData, 6, 6); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, bigUiElements); + menu_uiOverlay(sprite, bigUiElements); animationFrame++; animationPosition = !animationPosition; @@ -42,16 +42,16 @@ void menu_poopScreen( beepedAlready = true; } - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSprite(composite, sprite, 174, 120, smallUiElements, POOP_ICON, 6); + draw_drawSprite(sprite, 174, 120, smallUiElements, POOP_ICON, 6); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, bigUiElements); + menu_uiOverlay(sprite, bigUiElements); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSprite(composite, sprite, 72, 72, spriteData, 7, 6); + draw_drawSprite(sprite, 72, 72, spriteData, 7, 6); animationFrame++; animationPosition = !animationPosition; @@ -76,6 +76,6 @@ void menu_poopScreen( break; } - tft_drawBuffer(composite); + tft_drawBuffer(); } } \ No newline at end of file diff --git a/src/menu/refuse_screen.cpp b/src/menu/refuse_screen.cpp index d8afaf9..6d5a331 100644 --- a/src/menu/refuse_screen.cpp +++ b/src/menu/refuse_screen.cpp @@ -6,7 +6,7 @@ #include "defs/sprite_data.h" #include "animations/animations.h" -void menu_refuseScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData) { +void menu_refuseScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData) { static uint8_t currentAnimationFrame = 0; static bool soundPlayed = false; @@ -26,8 +26,8 @@ void menu_refuseScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mai } if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) { - draw_drawBackground(composite, bg, 90, 90, 3); - animate_performRefuseAnimation(composite, mainChara, spriteData); + draw_drawBackground(bg, 90, 90, 3); + animate_performRefuseAnimation(mainChara, spriteData); lastUpdateTime = currentTime; currentAnimationFrame++; @@ -46,5 +46,5 @@ void menu_refuseScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mai screenKey = IDLE_SCREEN; } - tft_drawBuffer(composite); + tft_drawBuffer(); } \ No newline at end of file diff --git a/src/menu/sleep_screen.cpp b/src/menu/sleep_screen.cpp index 7e75c92..6f8f9a3 100644 --- a/src/menu/sleep_screen.cpp +++ b/src/menu/sleep_screen.cpp @@ -6,7 +6,7 @@ #include "animations/animations.h" #include "defs/chara_data.h" -void menu_sleepyScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* charaSprites, struct SpriteData* uiSprites) { +void menu_sleepyScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* charaSprites, struct SpriteData* uiSprites) { if (!charaData.asleep && !charaData.sleepy) { screenKey = IDLE_SCREEN; return; @@ -30,16 +30,16 @@ void menu_sleepyScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &spr } if (currentTime - lastUpdateTime > ANIMATION_SLEEPY_THRESHOLD_TIME_US) { - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - animate_performSleepyAnimation(composite, sprite, charaSprites); + animate_performSleepyAnimation(sprite, charaSprites); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, uiSprites); + menu_uiOverlay(sprite, uiSprites); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, uiSprites); + menu_uiOverlay(sprite, uiSprites); lastUpdateTime = currentTime; } @@ -53,5 +53,5 @@ void menu_sleepyScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &spr beepCounter++; } - tft_drawBuffer(composite); + tft_drawBuffer(); } diff --git a/src/menu/sleeping_screen.cpp b/src/menu/sleeping_screen.cpp index cf9646f..cd96a3c 100644 --- a/src/menu/sleeping_screen.cpp +++ b/src/menu/sleeping_screen.cpp @@ -7,7 +7,7 @@ #include "defs/chara_data.h" void menu_sleepingScreen( - TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, + TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* mainCharaData, struct SpriteData* bigUiElements, struct SpriteData* smallUIElements ) { if (charaData.sleepy && !charaData.asleep) { @@ -36,22 +36,22 @@ void menu_sleepingScreen( } if (currentTime - lastUpdateTime > ANIMATION_SLEEPY_THRESHOLD_TIME_US) { - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); tft_clearBuffer(sprite, TFT_TRANSPARENT); - animate_performSleepyAnimation(composite, sprite, mainCharaData); + animate_performSleepyAnimation(sprite, mainCharaData); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSprite(composite, sprite, 72, 72, bigUiElements, BED_SPRITE, 6); + draw_drawSprite(sprite, 72, 72, bigUiElements, BED_SPRITE, 6); tft_clearBuffer(sprite, TFT_TRANSPARENT); - draw_drawSprite(composite, sprite, 172, 72, smallUIElements, ZZZ_ICON, 6); + draw_drawSprite(sprite, 172, 72, smallUIElements, ZZZ_ICON, 6); tft_clearBuffer(sprite, TFT_TRANSPARENT); - menu_uiOverlay(composite, sprite, bigUiElements); + menu_uiOverlay(sprite, bigUiElements); lastUpdateTime = currentTime; } - tft_drawBuffer(composite); + tft_drawBuffer(); } \ No newline at end of file diff --git a/src/menu/status_screen.cpp b/src/menu/status_screen.cpp index 523753d..9e1a48c 100644 --- a/src/menu/status_screen.cpp +++ b/src/menu/status_screen.cpp @@ -6,7 +6,7 @@ #include "display/display.h" #include "draw/draw.h" -void menu_statusScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct CharacterData* charaData) { +void menu_statusScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct CharacterData* charaData) { tft_clearBuffer(sprite, TFT_TRANSPARENT); uint8_t pressedButtons = buttons_getPressedButtons(); @@ -19,27 +19,25 @@ void menu_statusScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &spr break; } - draw_drawBackground(composite, bg, 90, 90, 3); - composite.setTextSize(4); + draw_drawBackground(bg, 90, 90, 3); - menu_statusScreen_drawStat(composite, sprite, spriteData, 10, 10, "Hunger", charaData->hunger); - menu_statusScreen_drawStat(composite, sprite, spriteData, 10, 80, "Strength", charaData->strength); - menu_statusScreen_drawStat(composite, sprite, spriteData, 10, 150, "Effort", charaData->effort); + menu_statusScreen_drawStat(sprite, spriteData, 10, 10, "Hunger", charaData->hunger); + menu_statusScreen_drawStat(sprite, spriteData, 10, 80, "Strength", charaData->strength); + menu_statusScreen_drawStat(sprite, spriteData, 10, 150, "Effort", charaData->effort); - tft_drawBuffer(composite); + tft_drawBuffer(); } -void menu_statusScreen_drawStat(TFT_eSprite &composite, TFT_eSprite &sprite, struct SpriteData* spriteData, int x, int y, const char* text, uint8_t statValue) { +void menu_statusScreen_drawStat(TFT_eSprite &sprite, struct SpriteData* spriteData, int x, int y, const char* text, uint8_t statValue) { uint8_t icon; - composite.drawString(text, x, y); + tft_drawText(text, 4, x, y); for (int i = 0; i < 4; i++) { if (i < statValue) { icon = FULL_HEART_ICON; } else { icon = EMPTY_HEART_ICON; } draw_drawSprite( - composite, sprite, 15 + (i * 32), y + 30, diff --git a/src/menu/timer_finished.cpp b/src/menu/timer_finished.cpp index 9986af1..293eb6f 100644 --- a/src/menu/timer_finished.cpp +++ b/src/menu/timer_finished.cpp @@ -2,7 +2,7 @@ int interruptKey = -1; -void menu_timerFinishedScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData) { +void menu_timerFinishedScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData) { lastPressedButtonTime = esp_timer_get_time(); digitalWrite(BL_PIN, HIGH); diff --git a/src/menu/title_screen.cpp b/src/menu/title_screen.cpp index 0dbebfd..5e255f4 100644 --- a/src/menu/title_screen.cpp +++ b/src/menu/title_screen.cpp @@ -4,20 +4,18 @@ #include "defs/defs.h" #include "buttons/buttons.h" -void menu_drawTitle(TFT_eSprite &composite, TFT_eSprite &bg) { +void menu_drawTitle(TFT_eSprite &bg) { uint8_t pressedButtons = buttons_getPressedButtons(); if (pressedButtons == 8 || pressedButtons == 4) { screenKey = CLOCK_EDIT_SCREEN; return; } - draw_drawBackground(composite, bg, 90, 90, 3); + draw_drawBackground(bg, 90, 90, 3); - composite.setTextSize(4); - tft_drawCenteredText(composite, "NacaPet", 4, 40); + tft_drawCenteredText("NacaPet", 4, 40); - composite.setTextSize(2); - tft_drawCenteredText(composite, VERSION, 2, 80); + tft_drawCenteredText(VERSION, 2, 80); - tft_drawBuffer(composite); + tft_drawBuffer(); } \ No newline at end of file diff --git a/src/menu/ui_overlay.cpp b/src/menu/ui_overlay.cpp index b0a4932..4fe4dbf 100644 --- a/src/menu/ui_overlay.cpp +++ b/src/menu/ui_overlay.cpp @@ -2,27 +2,23 @@ #include "draw/draw.h" #include "display/display.h" #include "defs/chara_data.h" +#include "defs/screen_defs.h" -void menu_uiOverlay(TFT_eSprite &composite, TFT_eSprite &charSprite, struct SpriteData* uiElements) { +void menu_uiOverlay(TFT_eSprite &charSprite, struct SpriteData* uiElements) { struct tm timeInfo; char hourBuffer[6]; - composite.setTextSize(2); - composite.setTextColor(TFT_WHITE); - composite.fillRect(0, 0, 240, 24, TFT_BLACK); - getLocalTime(&timeInfo, RTC_TIMEOUT_THRESHOLD_TIME_MS); - snprintf(hourBuffer, 6, "%02d:%02d", timeInfo.tm_hour, timeInfo.tm_min); + snprintf(hourBuffer, 6, "%02d:%02d", timeInfo.tm_hour, timeInfo.tm_min); - composite.drawString(hourBuffer, 4, 4); + composite1.fillRect(0, 0, 240, 24, TFT_BLACK); + tft_drawText(hourBuffer, 2, 4, 4, TFT_WHITE); snprintf(hourBuffer, 6, "%05d", stepCounter); - - composite.drawString(hourBuffer, 176, 4); + tft_drawText(hourBuffer, 2, 176, 4, TFT_WHITE); - composite.setTextColor(TFT_BLACK); if (charaData.careMistakeCallLight) { tft_clearBuffer(charSprite, TFT_TRANSPARENT); - draw_drawSprite(composite, charSprite, 192, 192, uiElements, CARE_MISTAKE_CALL_LIGHT, 2); + draw_drawSprite(charSprite, 192, 192, uiElements, CARE_MISTAKE_CALL_LIGHT, 2); } } \ No newline at end of file