Few things (broke everything related to sleep)

This commit is contained in:
Nacho
2025-08-30 16:21:24 +02:00
parent e138334e06
commit f1c1035c74
21 changed files with 529 additions and 62 deletions
+46
View File
@@ -0,0 +1,46 @@
#include "menu.h"
#include "defs/defs.h"
#include "defs/sprite_data.h"
#include "display/display.h"
#include "draw/draw.h"
#include "animations/animations.h"
void menu_drawAngryScreen(
TFT_eSprite &bg, TFT_eSprite &sprite,
struct SpriteData* spriteData, struct SpriteData* smallUiElements
) {
uint8_t frameCounter = 0;
while (true) {
uint64_t currentTime = esp_timer_get_time();
if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) {
if (frameCounter > 3) {
screenKey = MAIN_SCREEN; // TODO: Change for while battling
menuKey = STATUS_SCREEN;
vTaskResume(secondLoop);
return;
}
draw_drawBackground(bg, 90, 90, 3);
tft_clearBuffer(sprite, TFT_TRANSPARENT);
animate_performAngryAnimation(sprite, spriteData);
if (frameCounter % 2 == 0) {
tone(SPK_PIN, 1000, 100);
tone(SPK_PIN, 1000, 200);
tft_clearBuffer(sprite, TFT_TRANSPARENT);
draw_drawSprite(sprite, 18, 72, smallUiElements, FIREWORKS_ICON, 6);
draw_drawSprite(sprite, 174, 72, smallUiElements, FIREWORKS_ICON, 6);
}
frameCounter++;
lastUpdateTime = currentTime;
}
tft_drawBuffer();
}
}
+1 -1
View File
@@ -150,7 +150,7 @@ void menu_evolutionScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteDat
menu_freeCheckerboard();
loop_resumeLoop();
vTaskResume(secondLoop);
screenKey = MAIN_SCREEN;
+5 -4
View File
@@ -9,7 +9,7 @@
void menu_changeCharaScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* mainSpriteData, struct SpriteData* uiSpriteData) {
loop_pauseLoop();
vTaskSuspend(secondLoop);
uint8_t selectedChara = currentCharacter;
CharacterData* selectedCharaData = &charaData[selectedChara];
@@ -30,7 +30,7 @@ void menu_changeCharaScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteD
case K2_PRESSED:
currentCharacter = selectedChara;
loop_resumeLoop();
vTaskResume(secondLoop);
screenKey = MAIN_SCREEN;
menuKey = STATUS_SCREEN;
@@ -42,7 +42,7 @@ void menu_changeCharaScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteD
sprintf(fileName, "/chara/%02x.bin", charaData[currentCharacter].idChara);
storage_readFile(fileName, mainSpriteData);
loop_resumeLoop();
vTaskResume(secondLoop);
screenKey = MAIN_SCREEN;
menuKey = STATUS_SCREEN;
@@ -64,6 +64,7 @@ void menu_changeCharaScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteD
storage_readFile(fileName, mainSpriteData);
draw_drawSprite(sprite, 18, 72, mainSpriteData, 0, 6);
} else {
tft_drawCenteredText("EMPTY", 4, 120);
}
@@ -81,7 +82,7 @@ void menu_changeCharaScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteD
sprintf(fileName, "/chara/%02x.bin", charaData[currentCharacter].idChara);
storage_readFile(fileName, mainSpriteData);
loop_resumeLoop();
vTaskResume(secondLoop);
screenKey = MAIN_SCREEN;
menuKey = STATUS_SCREEN;
-2
View File
@@ -50,8 +50,6 @@ void menu_drawClockEdit(TFT_eSprite &bg) {
case K3_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);
getLocalTime(&timeInfo, 50);
dayUnixTime = mktime(&timeInfo) % SECONDS_IN_DAY;
coldBoot = false;
+2
View File
@@ -18,6 +18,8 @@ void menu_drawHappyScreen(
screenKey = MAIN_SCREEN; // TODO: Change for while battling
menuKey = STATUS_SCREEN;
vTaskResume(secondLoop);
return;
}
+4
View File
@@ -47,6 +47,10 @@ void menu_drawDeathScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteDat
void menu_evolutionScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* mainCharacterSprites);
void menu_mainScreen();
void menu_changeCharaScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* mainSpriteData, struct SpriteData* uiSpriteData);
void menu_drawAngryScreen(
TFT_eSprite &bg, TFT_eSprite &sprite,
struct SpriteData* spriteData, struct SpriteData* smallUiElements
);
void menu_sleepScreen_sleepAction();
void menu_sleepScreen_recalculateSleep();
+24 -1
View File
@@ -3,16 +3,39 @@
#include "display/display.h"
#include "defs/defs.h"
#include "defs/chara_data.h"
#include "animations/animations.h"
#include "defs/sprite_data.h"
void menu_clearPoopScreen(
TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements
) {
printf("[AAAAAAA] pausing loop...\n");
vTaskSuspend(secondLoop);
printf("[AAAAAAA] loop paused...\n");
int cleanerXPos = 174;
menu_drawIdleScreen(bg, sprite, spriteData, bigUiElements, smallUiElements);
lastUpdateTime = 0;
printf("[AAAAAAA] drawing idle screen...\n");
draw_drawBackground(bg, 90, 90, 3);
uint8_t offsetX = menu_poopOverlay(bg, sprite, smallUiElements);
printf("[AAAAAAA] drawing animation...\n");
animate_performAnimation(sprite, spriteData, offsetX);
printf("[AAAAAAA] drawing overlay...\n");
menu_uiOverlay(sprite, bigUiElements);
printf("[AAAAAAA] idle screen down...\n");
tft_clearBuffer(sprite, TFT_TRANSPARENT);
while (cleanerXPos > 18) {
draw_drawSprite(sprite, cleanerXPos, 72, smallUiElements, CLEANER_ICON, 6);
draw_drawSprite(sprite, cleanerXPos, 120, smallUiElements, CLEANER_ICON, 6);
+2 -5
View File
@@ -11,7 +11,8 @@ void training_screenTraining1(
TFT_eSprite &bg, TFT_eSprite &sprite,
struct SpriteData* mainCharaData, struct SpriteData* attackSprites
) {
vTaskSuspend(secondLoop);
draw_drawBackground(bg, 90, 90, 3);
draw_drawSpriteCentered(sprite, mainCharaData, 11, 6);
@@ -74,9 +75,5 @@ void training_screenTraining1(
attackResult = ATTACK_PATTERN_MEDIOCRE;
}
loop_pauseLoop();
training_displayTrainingResult(bg, sprite, mainCharaData, attackSprites, attackResult);
loop_resumeLoop();
}
-2
View File
@@ -5,10 +5,8 @@
#include "defs/screen_defs.h"
void menu_uiOverlay(TFT_eSprite &charSprite, struct SpriteData* uiElements) {
struct tm timeInfo;
char hourBuffer[6];
getLocalTime(&timeInfo, RTC_TIMEOUT_THRESHOLD_TIME_MS);
snprintf(hourBuffer, 6, "%02d:%02d", timeInfo.tm_hour, timeInfo.tm_min);
composite1.fillRect(0, 0, 240, 24, TFT_BLACK);