Cosas, muchas cosas, exageracion de cossas, abundancia de cosas....

- Seleccion de huevo
- Scripts de conversion de linea
- Carga de sprites
- Se produce nacimiento
This commit is contained in:
Nacho
2025-05-28 03:15:48 +02:00
parent 0186f3e436
commit cc5fcd4ac2
24 changed files with 494 additions and 94 deletions
+10 -11
View File
@@ -8,12 +8,12 @@
void menu_drawClock(TFT_eSprite &composite, TFT_eSprite &bg, int menuOption) {
uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) {
case 4:
screenKey = IDLE_SCREEN;
break;
case K2_PRESSED:
screenKey = IDLE_SCREEN;
break;
default:
break;
break;
}
char hourBuffer[6];
@@ -39,26 +39,25 @@ void menu_drawClockEdit(TFT_eSprite &composite, TFT_eSprite &bg) {
static int clockMinuteCount = 0;
uint8_t pressedButtons = buttons_getPressedButtons();
lastPressedButtonTime = esp_timer_get_time();
switch (pressedButtons) {
case 8:
case K1_PRESSED:
clockHourCount = (clockHourCount + 1) % 24;
break;
case 4:
case K2_PRESSED:
clockMinuteCount = (clockMinuteCount + 1) % 60;
break;
case 2:
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) % 86400;
screenKey = CLOCK_SCREEN;
onActionTimerDelta();
vpet_initTimer();
coldBoot = false;
screenKey = CLOCK_SCREEN;
break;
default:
+46
View File
@@ -0,0 +1,46 @@
#include "menu.h"
#include "defs/defs.h"
#include "draw/draw.h"
#include "display/display.h"
#include "buttons/buttons.h"
#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) {
static uint8_t frameCounter = 0;
uint64_t currentTime = esp_timer_get_time();
uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) {
case K1_PRESSED:
lines_getAvailableLines();
screenKey = EGG_SELECT_SCREEN;
return;
break;
case K2_PRESSED:
screenKey = CLOCK_SCREEN;
return;
break;
case K3_PRESSED:
lastUpdateTime = currentTime;
frameCounter = 0;
default:
break;
}
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);
tft_clearBuffer(sprite, TFT_TRANSPARENT);
menu_uiOverlay(composite, sprite, uiSmallSprite);
tft_clearBuffer(sprite, TFT_TRANSPARENT);
frameCounter = (frameCounter + 1) % 32;
lastUpdateTime = currentTime;
}
tft_drawBuffer(composite);
}
+70
View File
@@ -0,0 +1,70 @@
#include "menu.h"
#include "draw/draw.h"
#include "display/display.h"
#include "buttons/buttons.h"
#include "defs/defs.h"
#include "defs/sprite_data.h"
#include "defs/chara_data.h"
#include "animations/animations.h"
#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) {
static bool eggSpriteFrame = false;
uint8_t frameCounter = 0;
uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) {
case K3_PRESSED:
case K1_PRESSED:
break;
case K2_PRESSED:
screenKey = CLOCK_SCREEN;
break;
default:
break;
}
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, &currentEgg->eggSprite, eggSpriteFrame, 6);
eggSpriteFrame = !eggSpriteFrame;
lastUpdateTime = currentTime;
tft_drawBuffer(composite);
} else if (charaData.hatchTimer > currentLine[currentCharacter]->hatchTime && !charaData.hatched) {
for (int i = 0; i < 30; i++) {
tone(SPK_PIN, 4100, 35);
tone(SPK_PIN, 3500, 35);
draw_drawBackground(composite, bg, 90, 90, 3);
animate_performHatchingAnimation(composite, sprite, &currentEgg->eggSprite);
tft_drawBuffer(composite);
}
draw_drawBackground(composite, bg, 90, 90, 3);
draw_drawSpriteCentered(composite, sprite, &currentEgg->eggSprite, 2, 6);
tft_drawBuffer(composite);
delay(2000);
lines_onHatchComplete();
vpet_computeCallLight();
interruptKey = CARE_MISTAKE_SCREEN;
screenKey = TIMER_FINISHED_SCREEN;
return;
}
}
}
+58
View File
@@ -0,0 +1,58 @@
#include "menu.h"
#include "draw/draw.h"
#include "defs/defs.h"
#include "vpet/vpet.h"
#include "display/display.h"
#include "defs/sprite_data.h"
#include "buttons/buttons.h"
#include "vpet/lines/lines.h"
#include "defs/chara_data.h"
void menu_lineSwitcher(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiSmallSprite) {
static uint8_t eggCounter = 0;
uint8_t buttonsPressed = buttons_getPressedButtons();
switch(buttonsPressed) {
case K1_PRESSED:
eggCounter = (eggCounter + 1) % eggNumber;
break;
case K2_PRESSED:
menu_reloadEggs(eggCounter);
eggCounter = 0;
screenKey = EGG_HATCH_SCREEN;
return;
break;
case K3_PRESSED:
screenKey = IDLE_SCREEN;
return;
break;
default:
break;
}
draw_drawBackground(composite, bg, 90, 90, 3);
tft_clearBuffer(sprite, TFT_TRANSPARENT);
draw_drawSpriteCentered(composite, sprite, &eggSelection[eggCounter].eggSprite, 0, 6);
tft_clearBuffer(sprite, TFT_TRANSPARENT);
draw_drawSprite(composite, sprite, 194, 96, uiSmallSprite, ARROW_ICON, 6);
tft_drawBuffer(composite);
}
void menu_reloadEggs(uint8_t selectedEgg) {
char fileName[strlen(eggSelection[selectedEgg].fileName) + 1];
strcpy(fileName, eggSelection[selectedEgg].fileName);
lines_freeEggList();
printf("[DEBUG] fileName=%s\n", fileName);
lines_getSingleLine(fileName);
lines_getLineCareMistakes(fileName);
charaData.hatching = true;
}
+2
View File
@@ -37,6 +37,7 @@ void menu_foodScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mainC
if (charaData.hunger < 8) {
charaData.weight++;
charaData.hunger++;
charaData.hungerCareMistakeTimer = charaData.initialStatsReductionTime;
screenKey = FEEDING_SCREEN;
submenuKey = FOOD_ICON;
} else {
@@ -48,6 +49,7 @@ void menu_foodScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &mainC
if (charaData.strength < 8) {
charaData.strength++;
charaData.weight += 2;
charaData.strengthCareMistakeTimer = charaData.initialStatsReductionTime;
screenKey = FEEDING_SCREEN;
submenuKey = PILL_ICON;
} else {
+12 -3
View File
@@ -9,7 +9,16 @@
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) {
if (charaData.sleepy && !charaData.asleep) {
if (coldBoot) {
screenKey = TITLE_SCREEN;
return;
} else if (!charaData.hatched && !charaData.hatching) {
screenKey = EGG_EMPTY_SCREEN;
return;
} else if (!charaData.hatched && charaData.hatching) {
screenKey = EGG_HATCH_SCREEN;
return;
} else if (charaData.sleepy && !charaData.asleep) {
screenKey = SLEEPY_SCREEN;
return;
} else if ((charaData.sleepy && charaData.asleep) || charaData.asleep) {
@@ -20,12 +29,12 @@ void menu_drawIdleScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &s
uint8_t pressedButtons = buttons_getPressedButtons();
switch (pressedButtons) {
case 8:
case K1_PRESSED:
screenKey = MENU_SCREEN;
menuKey = 0;
break;
case 4:
case K2_PRESSED:
screenKey = CLOCK_SCREEN;
break;
+4
View File
@@ -40,5 +40,9 @@ void menu_drawHappyScreen(
TFT_eSprite &composite, 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_reloadEggs(uint8_t selectedEgg);
void menu_drawDeathScreen(TFT_eSprite &composite, TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite);
#endif
+1 -2
View File
@@ -6,10 +6,9 @@
void menu_drawTitle(TFT_eSprite &composite, TFT_eSprite &bg) {
uint8_t pressedButtons = buttons_getPressedButtons();
lastPressedButtonTime = esp_timer_get_time();
if (pressedButtons == 8 || pressedButtons == 4) {
screenKey = CLOCK_EDIT_SCREEN;
return;
}
draw_drawBackground(composite, bg, 90, 90, 3);