mirror of
https://github.com/nacabaro/nacapet.git
synced 2026-10-01 23:51:38 +00:00
Na, poca cosa
- Soporte para varios bichos a la vez - Algunos bugs menos
This commit is contained in:
@@ -34,7 +34,7 @@ void menu_careMistakeScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteD
|
||||
}
|
||||
|
||||
if (pressedButtons != 0) {
|
||||
screenKey = IDLE_SCREEN;
|
||||
screenKey = MAIN_SCREEN;
|
||||
beepCounter = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "display/display.h"
|
||||
#include "defs/screen_defs.h"
|
||||
#include "vpet/evolution/evolution.h"
|
||||
#include "loop/loop.h"
|
||||
|
||||
struct SpriteData* checkerboardPattern;
|
||||
|
||||
@@ -31,7 +32,6 @@ void menu_freeCheckerboard() {
|
||||
}
|
||||
|
||||
// Don't worry, I hate this too
|
||||
|
||||
void menu_evolutionScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* mainCharacterSprites) {
|
||||
menu_createCheckerboard();
|
||||
TFT_eSprite checkerboard = TFT_eSprite(&tft);
|
||||
@@ -150,7 +150,9 @@ void menu_evolutionScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteDat
|
||||
|
||||
menu_freeCheckerboard();
|
||||
|
||||
pauseLoop = false;
|
||||
screenKey = IDLE_SCREEN;
|
||||
loop_resumeLoop();
|
||||
|
||||
screenKey = MAIN_SCREEN;
|
||||
|
||||
lastUpdateTime = 0; // Un pequeño empujoncito
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
#include "menu.h"
|
||||
#include "buttons/buttons.h"
|
||||
#include "draw/draw.h"
|
||||
#include "loop/loop.h"
|
||||
#include "defs/chara_data.h"
|
||||
#include "storage/storage.h"
|
||||
#include "display/display.h"
|
||||
#include "defs/defs.h"
|
||||
|
||||
|
||||
void menu_changeCharaScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* mainSpriteData, struct SpriteData* uiSpriteData) {
|
||||
loop_pauseLoop();
|
||||
|
||||
uint8_t selectedChara = currentCharacter;
|
||||
CharacterData* selectedCharaData = &charaData[selectedChara];
|
||||
|
||||
bool updateScreen = true;
|
||||
|
||||
for (;;) {
|
||||
uint8_t pressedButtons = buttons_getPressedButtons();
|
||||
switch (pressedButtons) {
|
||||
case K1_PRESSED:
|
||||
selectedChara++;
|
||||
if (selectedChara >= CHARA_COUNT_IN_DEVICE) {
|
||||
selectedChara = 0;
|
||||
}
|
||||
selectedCharaData = &charaData[selectedChara];
|
||||
updateScreen = true;
|
||||
break;
|
||||
|
||||
case K2_PRESSED:
|
||||
currentCharacter = selectedChara;
|
||||
loop_resumeLoop();
|
||||
|
||||
screenKey = MAIN_SCREEN;
|
||||
menuKey = STATUS_SCREEN;
|
||||
return;
|
||||
break;
|
||||
|
||||
case K3_PRESSED:
|
||||
char fileName[20];
|
||||
sprintf(fileName, "/chara/%02x.bin", charaData[currentCharacter].idChara);
|
||||
|
||||
storage_readFile(fileName, mainSpriteData);
|
||||
loop_resumeLoop();
|
||||
|
||||
screenKey = MAIN_SCREEN;
|
||||
menuKey = STATUS_SCREEN;
|
||||
return;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
delay(15);
|
||||
|
||||
if (updateScreen) {
|
||||
draw_drawBackground(bg, 90, 90, 3);
|
||||
|
||||
if (selectedCharaData->hatched) {
|
||||
char fileName[20];
|
||||
sprintf(fileName, "/chara/%02x.bin", selectedCharaData->idChara);
|
||||
|
||||
storage_readFile(fileName, mainSpriteData);
|
||||
draw_drawSprite(sprite, 18, 72, mainSpriteData, 0, 6);
|
||||
} else {
|
||||
tft_drawCenteredText("EMPTY", 4, 120);
|
||||
}
|
||||
|
||||
draw_drawSprite(sprite, 174, 96, uiSpriteData, ARROW_ICON, 6);
|
||||
|
||||
tft_drawBuffer();
|
||||
|
||||
updateScreen = false;
|
||||
}
|
||||
|
||||
uint64_t currentTime = esp_timer_get_time();
|
||||
if (currentTime - lastPressedButtonTime > INACTIVITY_THRESHOLD_TIME_US) {
|
||||
char fileName[20];
|
||||
sprintf(fileName, "/chara/%02x.bin", charaData[currentCharacter].idChara);
|
||||
|
||||
storage_readFile(fileName, mainSpriteData);
|
||||
loop_resumeLoop();
|
||||
|
||||
screenKey = MAIN_SCREEN;
|
||||
menuKey = STATUS_SCREEN;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,8 @@ void menu_drawClock(TFT_eSprite &bg) {
|
||||
uint8_t pressedButtons = buttons_getPressedButtons();
|
||||
switch (pressedButtons) {
|
||||
case K2_PRESSED:
|
||||
screenKey = IDLE_SCREEN;
|
||||
draw_drawBackground(bg, 90, 90, 3);
|
||||
screenKey = MAIN_SCREEN;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -24,7 +24,7 @@ void menu_eggHatchScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData
|
||||
|
||||
uint64_t currentTime = esp_timer_get_time();
|
||||
if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) {
|
||||
if (charaData.hatchTimer <= currentLine[currentCharacter]->hatchTime) {
|
||||
if (charaData[currentCharacter].hatchTimer <= currentLine[currentCharacter]->hatchTime) {
|
||||
draw_drawBackground(bg, 90, 90, 3);
|
||||
draw_drawSpriteCentered(sprite, ¤tEgg->eggSprite, eggSpriteFrame, 6);
|
||||
|
||||
@@ -34,7 +34,7 @@ void menu_eggHatchScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData
|
||||
tft_drawBuffer();
|
||||
|
||||
|
||||
} else if (charaData.hatchTimer > currentLine[currentCharacter]->hatchTime && !charaData.hatched) {
|
||||
} else if (charaData[currentCharacter].hatchTimer > currentLine[currentCharacter]->hatchTime && !charaData[currentCharacter].hatched) {
|
||||
for (int i = 0; i < 30; i++) {
|
||||
tone(SPK_PIN, 4100, 35);
|
||||
tone(SPK_PIN, 3500, 35);
|
||||
|
||||
@@ -26,7 +26,7 @@ void menu_lineSwitcher(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData*
|
||||
break;
|
||||
|
||||
case K3_PRESSED:
|
||||
screenKey = IDLE_SCREEN;
|
||||
screenKey = MAIN_SCREEN;
|
||||
return;
|
||||
break;
|
||||
|
||||
@@ -56,5 +56,5 @@ void menu_reloadEggs(uint8_t selectedEgg) {
|
||||
|
||||
vpetLastEvaluationTime = esp_timer_get_time();
|
||||
|
||||
charaData.hatching = true;
|
||||
charaData[currentCharacter].hatching = true;
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "vpet/vpet/vpet.h"
|
||||
|
||||
void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData* spriteData) {
|
||||
if (charaData.sleepy) {
|
||||
if (charaData[currentCharacter].sleepy) {
|
||||
tone(SPK_PIN, BEEP_FREQ_HZ, BEEP_LEN_MS);
|
||||
delay(100);
|
||||
tone(SPK_PIN, BEEP_FREQ_HZ, BEEP_LEN_MS);
|
||||
@@ -35,28 +35,28 @@ void menu_foodScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteData*
|
||||
lastUpdateTime = 0;
|
||||
switch(arrowPosition) {
|
||||
case 0:
|
||||
if (charaData.hunger < 8) {
|
||||
charaData.hungerCareMistakeTimer = charaData.initialStatsReductionTime;
|
||||
charaData.hungerCareMistakeObtained = false;
|
||||
charaData.weight++;
|
||||
charaData.hunger++;
|
||||
if (charaData[currentCharacter].hunger < 8) {
|
||||
charaData[currentCharacter].hungerCareMistakeTimer = charaData[currentCharacter].initialStatsReductionTime;
|
||||
charaData[currentCharacter].hungerCareMistakeObtained = false;
|
||||
charaData[currentCharacter].weight++;
|
||||
charaData[currentCharacter].hunger++;
|
||||
screenKey = FEEDING_SCREEN;
|
||||
submenuKey = FOOD_ICON;
|
||||
} else {
|
||||
screenKey = REFUSING_SCREEN;
|
||||
if (!charaData.overfeedHappened) {
|
||||
charaData.overfeed++;
|
||||
charaData.overfeedHappened = true;
|
||||
if (!charaData[currentCharacter].overfeedHappened) {
|
||||
charaData[currentCharacter].overfeed++;
|
||||
charaData[currentCharacter].overfeedHappened = true;
|
||||
}
|
||||
}
|
||||
return;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (charaData.strength < 8) {
|
||||
charaData.strengthCareMistakeTimer = charaData.initialStatsReductionTime;
|
||||
charaData.strength++;
|
||||
charaData.weight += 2;
|
||||
if (charaData[currentCharacter].strength < 8) {
|
||||
charaData[currentCharacter].strengthCareMistakeTimer = charaData[currentCharacter].initialStatsReductionTime;
|
||||
charaData[currentCharacter].strength++;
|
||||
charaData[currentCharacter].weight += 2;
|
||||
screenKey = FEEDING_SCREEN;
|
||||
submenuKey = PILL_ICON;
|
||||
} else {
|
||||
|
||||
@@ -15,7 +15,7 @@ void menu_drawHappyScreen(
|
||||
uint64_t currentTime = esp_timer_get_time();
|
||||
if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) {
|
||||
if (frameCounter > 3) {
|
||||
screenKey = IDLE_SCREEN; // TODO: Change for while battling
|
||||
screenKey = MAIN_SCREEN; // TODO: Change for while battling
|
||||
menuKey = STATUS_SCREEN;
|
||||
|
||||
return;
|
||||
|
||||
@@ -9,25 +9,7 @@
|
||||
uint64_t lastUpdateTime = esp_timer_get_time();
|
||||
|
||||
void menu_drawIdleScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct SpriteData* bigUiElements, struct SpriteData* smallUiElements) {
|
||||
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) {
|
||||
screenKey = SLEEP_SCREEN;
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t pressedButtons = buttons_getPressedButtons();
|
||||
|
||||
switch (pressedButtons) {
|
||||
case K1_PRESSED:
|
||||
screenKey = MENU_SCREEN;
|
||||
@@ -43,17 +25,11 @@ void menu_drawIdleScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData
|
||||
}
|
||||
|
||||
uint64_t currentTime = esp_timer_get_time();
|
||||
|
||||
if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) {
|
||||
if (currentTime - lastUpdateTime > ANIMATION_THRESHOLD_TIME_US) {
|
||||
draw_drawBackground(bg, 90, 90, 3);
|
||||
uint8_t offsetX = menu_poopOverlay(bg, sprite, smallUiElements);
|
||||
|
||||
tft_clearBuffer(sprite, TFT_TRANSPARENT);
|
||||
uint8_t offsetX = menu_poopOverlay(sprite, smallUiElements);
|
||||
|
||||
tft_clearBuffer(sprite, TFT_TRANSPARENT);
|
||||
animate_performAnimation(sprite, spriteData, offsetX);
|
||||
|
||||
tft_clearBuffer(sprite, TFT_TRANSPARENT);
|
||||
menu_uiOverlay(sprite, bigUiElements);
|
||||
|
||||
lastUpdateTime = currentTime;
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
#include "menu.h"
|
||||
#include "defs/defs.h"
|
||||
#include "defs/chara_data.h"
|
||||
|
||||
void menu_mainScreen() {
|
||||
printf("[MAINSCR] on main screen\n");
|
||||
|
||||
if (coldBoot) {
|
||||
screenKey = TITLE_SCREEN;
|
||||
return;
|
||||
} else if (!charaData[currentCharacter].hatched && !charaData[currentCharacter].hatching) {
|
||||
screenKey = EGG_EMPTY_SCREEN;
|
||||
return;
|
||||
} else if (!charaData[currentCharacter].hatched && charaData[currentCharacter].hatching) {
|
||||
screenKey = EGG_HATCH_SCREEN;
|
||||
return;
|
||||
} else if (charaData[currentCharacter].sleepy && !charaData[currentCharacter].asleep) {
|
||||
screenKey = SLEEPY_SCREEN;
|
||||
return;
|
||||
} else if ((charaData[currentCharacter].sleepy && charaData[currentCharacter].asleep) || charaData[currentCharacter].asleep) {
|
||||
screenKey = SLEEP_SCREEN;
|
||||
return;
|
||||
} else {
|
||||
screenKey = IDLE_SCREEN;
|
||||
return;
|
||||
}
|
||||
}
|
||||
+4
-2
@@ -10,7 +10,7 @@ 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(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData);
|
||||
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);
|
||||
@@ -34,7 +34,7 @@ void menu_poopScreen(
|
||||
TFT_eSprite &bg, TFT_eSprite &sprite,
|
||||
struct SpriteData* spriteData, struct SpriteData* smallUiElements, struct SpriteData* bigUiElements
|
||||
);
|
||||
uint8_t menu_poopOverlay(TFT_eSprite &sprite, struct SpriteData* smallUiElements);
|
||||
uint8_t menu_poopOverlay(TFT_eSprite &bg, 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 &bg, TFT_eSprite &sprite,
|
||||
@@ -45,6 +45,8 @@ void menu_eggHatchScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData
|
||||
void menu_reloadEggs(uint8_t selectedEgg);
|
||||
void menu_drawDeathScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiBigSprite, struct SpriteData* uiSmallSprite);
|
||||
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_sleepScreen_sleepAction();
|
||||
void menu_sleepScreen_recalculateSleep();
|
||||
|
||||
+27
-17
@@ -23,7 +23,7 @@ void menu_drawCurrentMenuOption(TFT_eSprite &bg, TFT_eSprite &icon, struct Sprit
|
||||
break;
|
||||
|
||||
case K3_PRESSED:
|
||||
screenKey = IDLE_SCREEN;
|
||||
screenKey = MAIN_SCREEN;
|
||||
menuKey = STATUS_SCREEN_MENU;
|
||||
return;
|
||||
break;
|
||||
@@ -58,15 +58,21 @@ void menu_drawCurrentMenuOption(TFT_eSprite &bg, TFT_eSprite &icon, struct Sprit
|
||||
return;
|
||||
break;
|
||||
|
||||
case CHANGE_SCREEN_MENU:
|
||||
menuKey = STATUS_SCREEN;
|
||||
screenKey = CHANGE_SCREEN;
|
||||
return;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
draw_drawSpriteCentered(icon, spriteData, menuKey % 8, 6);
|
||||
draw_drawSpriteCentered(icon, spriteData, menuKey % 9, 6);
|
||||
|
||||
switch(menuKey % 9) {
|
||||
switch(menuKey % 10) {
|
||||
case STATUS_SCREEN_MENU:
|
||||
tft_drawCenteredText("Status", 4, textYPos);
|
||||
break;
|
||||
@@ -94,14 +100,18 @@ void menu_drawCurrentMenuOption(TFT_eSprite &bg, TFT_eSprite &icon, struct Sprit
|
||||
case SLEEP_SCREEN_MENU:
|
||||
tft_drawCenteredText("Sleep", 4, textYPos);
|
||||
break;
|
||||
|
||||
|
||||
case CHANGE_SCREEN_MENU:
|
||||
tft_drawCenteredText("Change", 4, textYPos);
|
||||
break;
|
||||
|
||||
case SETTINGS_SCREEN_MENU:
|
||||
tft_drawCenteredText("Settings", 4, textYPos);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
menuKey = 0;
|
||||
screenKey = IDLE_SCREEN;
|
||||
case 9:
|
||||
menuKey = STATUS_SCREEN_MENU;
|
||||
screenKey = MAIN_SCREEN;
|
||||
return;
|
||||
break;
|
||||
}
|
||||
@@ -112,19 +122,19 @@ void menu_drawCurrentMenuOption(TFT_eSprite &bg, TFT_eSprite &icon, struct Sprit
|
||||
}
|
||||
|
||||
void menu_sleepScreen_sleepAction() {
|
||||
if (charaData.asleep && charaData.sleepy) {
|
||||
if (charaData[currentCharacter].asleep && charaData[currentCharacter].sleepy) {
|
||||
menu_sleepScreen_recalculateSleep();
|
||||
|
||||
charaData.sleepy = false;
|
||||
charaData.asleep = false;
|
||||
charaData[currentCharacter].sleepy = false;
|
||||
charaData[currentCharacter].asleep = false;
|
||||
|
||||
charaData.sleepDisturbances++;
|
||||
charaData[currentCharacter].sleepDisturbances++;
|
||||
|
||||
menuKey = STATUS_SCREEN;
|
||||
screenKey = IDLE_SCREEN;
|
||||
screenKey = MAIN_SCREEN;
|
||||
|
||||
} else {
|
||||
charaData.asleep = true;
|
||||
charaData[currentCharacter].asleep = true;
|
||||
|
||||
vpet_computeCallLight(); // Lo hago por cortesia, no me gusta
|
||||
|
||||
@@ -135,10 +145,10 @@ void menu_sleepScreen_sleepAction() {
|
||||
|
||||
void menu_sleepScreen_recalculateSleep() {
|
||||
uint32_t newSleepTime = (dayUnixTime + 3600) % SECONDS_IN_DAY;
|
||||
uint32_t newWakeUpTime = charaData.wakeupTime + 3600;
|
||||
uint32_t newWakeUpTime = charaData[currentCharacter].wakeupTime + 3600;
|
||||
|
||||
charaData.sleepTime = newSleepTime;
|
||||
charaData.wakeupTime = newWakeUpTime;
|
||||
charaData[currentCharacter].sleepTime = newSleepTime;
|
||||
charaData[currentCharacter].wakeupTime = newWakeUpTime;
|
||||
|
||||
charaData.dynamicSleepDists++;
|
||||
charaData[currentCharacter].dynamicSleepDists++;
|
||||
}
|
||||
@@ -8,7 +8,7 @@ void menu_offScreen() {
|
||||
if (buttons != 0) {
|
||||
tft_drawBuffer();
|
||||
digitalWrite(BL_PIN, HIGH);
|
||||
screenKey = IDLE_SCREEN;
|
||||
screenKey = MAIN_SCREEN;
|
||||
} else {
|
||||
screenOff = true;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ void menu_clearPoopScreen(
|
||||
}
|
||||
|
||||
screenKey = HAPPY_SCREEN;
|
||||
charaData.poopNumber = 0;
|
||||
charaData[currentCharacter].poopNumber = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
+16
-12
@@ -5,19 +5,23 @@
|
||||
#include "defs/chara_data.h"
|
||||
#include "display/display.h"
|
||||
|
||||
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;
|
||||
uint8_t menu_poopOverlay(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* smallUiElements) {
|
||||
if (charaData[currentCharacter].poopNumber > 0) {
|
||||
static bool poopFlip = false;
|
||||
const uint8_t poopStartY = 120;
|
||||
uint8_t poopStartX = 174;
|
||||
bool poopTop = false;
|
||||
|
||||
for (int i = 0; i < charaData[currentCharacter].poopNumber; i++) {
|
||||
draw_drawSprite(sprite, poopStartX, poopStartY - (48 * poopTop), smallUiElements, POOP_ICON, 6, poopFlip);
|
||||
poopStartX -= (i % 2) * 48;
|
||||
poopTop = !poopTop;
|
||||
}
|
||||
|
||||
for (int i = 0; i < charaData.poopNumber; i++) {
|
||||
draw_drawSprite(sprite, poopStartX, poopStartY - (48 * poopTop), smallUiElements, POOP_ICON, 6, poopFlip);
|
||||
poopStartX -= (i % 2) * 48;
|
||||
poopTop = !poopTop;
|
||||
poopFlip = !poopFlip;
|
||||
|
||||
return 222 - (poopStartX + ((charaData[currentCharacter].poopNumber % 2 == 0) * 48));
|
||||
}
|
||||
|
||||
poopFlip = !poopFlip;
|
||||
|
||||
return 222 - (poopStartX + ((charaData.poopNumber % 2 == 0) * 48));
|
||||
return 0;
|
||||
}
|
||||
@@ -60,13 +60,13 @@ void menu_poopScreen(
|
||||
|
||||
} else if (animationFrame >= 6) {
|
||||
if (
|
||||
(charaData.hunger == 0 && !charaData.hungerCareMistakeObtained) ||
|
||||
(charaData.strength == 0 && !charaData.strengthCareMistakeObtained) ||
|
||||
(charaData.sleepy && !charaData.asleep && !charaData.sleepCareMistakeObtained)
|
||||
(charaData[currentCharacter].hunger == 0 && !charaData[currentCharacter].hungerCareMistakeObtained) ||
|
||||
(charaData[currentCharacter].strength == 0 && !charaData[currentCharacter].strengthCareMistakeObtained) ||
|
||||
(charaData[currentCharacter].sleepy && !charaData[currentCharacter].asleep && !charaData[currentCharacter].sleepCareMistakeObtained)
|
||||
) {
|
||||
screenKey = CARE_MISTAKE_SCREEN;
|
||||
} else {
|
||||
screenKey = IDLE_SCREEN;
|
||||
screenKey = MAIN_SCREEN;
|
||||
}
|
||||
|
||||
menuKey = 0;
|
||||
|
||||
@@ -43,7 +43,7 @@ void menu_refuseScreen(TFT_eSprite &bg, TFT_eSprite &mainChara, struct SpriteDat
|
||||
if (currentAnimationFrame > 4) {
|
||||
currentAnimationFrame = 0;
|
||||
soundPlayed = false;
|
||||
screenKey = IDLE_SCREEN;
|
||||
screenKey = MAIN_SCREEN;
|
||||
}
|
||||
|
||||
tft_drawBuffer();
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
#include "defs/chara_data.h"
|
||||
|
||||
void menu_sleepyScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* charaSprites, struct SpriteData* uiSprites) {
|
||||
if (!charaData.asleep && !charaData.sleepy) {
|
||||
screenKey = IDLE_SCREEN;
|
||||
if (!charaData[currentCharacter].asleep && !charaData[currentCharacter].sleepy) {
|
||||
screenKey = MAIN_SCREEN;
|
||||
return;
|
||||
} else if (charaData.asleep && charaData.sleepy) {
|
||||
} else if (charaData[currentCharacter].asleep && charaData[currentCharacter].sleepy) {
|
||||
screenKey = SLEEP_SCREEN;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -10,11 +10,11 @@ void menu_sleepingScreen(
|
||||
TFT_eSprite &bg, TFT_eSprite &sprite,
|
||||
struct SpriteData* mainCharaData, struct SpriteData* bigUiElements, struct SpriteData* smallUIElements
|
||||
) {
|
||||
if (charaData.sleepy && !charaData.asleep) {
|
||||
if (charaData[currentCharacter].sleepy && !charaData[currentCharacter].asleep) {
|
||||
screenKey = SLEEPY_SCREEN;
|
||||
return;
|
||||
} else if (!charaData.sleepy && !charaData.asleep) {
|
||||
screenKey = IDLE_SCREEN;
|
||||
} else if (!charaData[currentCharacter].sleepy && !charaData[currentCharacter].asleep) {
|
||||
screenKey = MAIN_SCREEN;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "display/display.h"
|
||||
#include "draw/draw.h"
|
||||
|
||||
void menu_statusScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData, struct CharacterData* charaData) {
|
||||
void menu_statusScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* spriteData) {
|
||||
tft_clearBuffer(sprite, TFT_TRANSPARENT);
|
||||
|
||||
uint8_t pressedButtons = buttons_getPressedButtons();
|
||||
@@ -21,9 +21,9 @@ void menu_statusScreen(TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData*
|
||||
|
||||
draw_drawBackground(bg, 90, 90, 3);
|
||||
|
||||
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);
|
||||
menu_statusScreen_drawStat(sprite, spriteData, 10, 10, "Hunger", charaData[currentCharacter].hunger);
|
||||
menu_statusScreen_drawStat(sprite, spriteData, 10, 80, "Strength", charaData[currentCharacter].strength);
|
||||
menu_statusScreen_drawStat(sprite, spriteData, 10, 150, "Effort", charaData[currentCharacter].effort);
|
||||
|
||||
tft_drawBuffer();
|
||||
}
|
||||
|
||||
@@ -5,11 +5,13 @@
|
||||
#include "buttons/buttons.h"
|
||||
#include "display/display.h"
|
||||
#include "draw/draw.h"
|
||||
#include "loop/loop.h"
|
||||
|
||||
void training_screenTraining1(
|
||||
TFT_eSprite &bg, TFT_eSprite &sprite,
|
||||
struct SpriteData* mainCharaData, struct SpriteData* attackSprites
|
||||
) {
|
||||
|
||||
draw_drawBackground(bg, 90, 90, 3);
|
||||
draw_drawSpriteCentered(sprite, mainCharaData, 11, 6);
|
||||
|
||||
@@ -28,15 +30,24 @@ void training_screenTraining1(
|
||||
|
||||
uint8_t attackPower = 0;
|
||||
uint64_t currentTime = lastUpdateTime = esp_timer_get_time();
|
||||
int16_t lineYPos = 0;
|
||||
bool counted = false;
|
||||
|
||||
while (currentTime - lastUpdateTime < 8000000) {
|
||||
while (currentTime - lastUpdateTime < 5000000) {
|
||||
currentTime = esp_timer_get_time();
|
||||
|
||||
uint8_t buttonsRead = buttons_getPressedButtons();
|
||||
|
||||
switch (buttonsRead) {
|
||||
case 8:
|
||||
case 8:
|
||||
attackPower++;
|
||||
if (attackPower % 4 == 0) {
|
||||
tft_drawRectangle(18, 168 - lineYPos, 18, 6, TFT_BLACK);
|
||||
tft_drawBuffer();
|
||||
lineYPos += 8;
|
||||
} else {
|
||||
delay(15);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
@@ -63,6 +74,9 @@ void training_screenTraining1(
|
||||
attackResult = ATTACK_PATTERN_MEDIOCRE;
|
||||
}
|
||||
|
||||
loop_pauseLoop();
|
||||
|
||||
training_displayTrainingResult(bg, sprite, mainCharaData, attackSprites, attackResult);
|
||||
|
||||
loop_resumeLoop();
|
||||
}
|
||||
@@ -17,7 +17,7 @@ void menu_uiOverlay(TFT_eSprite &charSprite, struct SpriteData* uiElements) {
|
||||
snprintf(hourBuffer, 6, "%05d", stepCounter);
|
||||
tft_drawText(hourBuffer, 2, 176, 4, TFT_WHITE);
|
||||
|
||||
if (charaData.careMistakeCallLight) {
|
||||
if (charaData[currentCharacter].careMistakeCallLight) {
|
||||
tft_clearBuffer(charSprite, TFT_TRANSPARENT);
|
||||
draw_drawSprite(charSprite, 192, 192, uiElements, CARE_MISTAKE_CALL_LIGHT, 2);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user