mirror of
https://github.com/nacabaro/nacapet.git
synced 2026-10-01 07:31:38 +00:00
Add a way to switch backgrounds
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
#include "menu.h"
|
||||
#include "defs/sprite_data.h"
|
||||
#include "buttons/buttons.h"
|
||||
#include "draw/draw.h"
|
||||
#include "storage/storage.h"
|
||||
#include "display/display.h"
|
||||
#include "defs/screen_defs.h"
|
||||
|
||||
void menu_changeBackgroundScreen(
|
||||
TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiSpriteData
|
||||
) {
|
||||
int8_t selectedBackground = currentBackground;
|
||||
|
||||
fs::File bgFolder = SPIFFS.open("/bg");
|
||||
fs::File background = bgFolder.openNextFile();
|
||||
|
||||
uint8_t backgrounds = 0;
|
||||
|
||||
uint64_t currentTime = esp_timer_get_time();
|
||||
|
||||
int8_t selectedPreviousBackground = 0;
|
||||
|
||||
while (background) {
|
||||
if (!background.isDirectory()) {
|
||||
backgrounds++;
|
||||
}
|
||||
|
||||
background = background.openNextFile();
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
uint8_t buttonsPressed = buttons_getPressedButtons();
|
||||
currentTime = esp_timer_get_time();
|
||||
|
||||
switch (buttonsPressed) {
|
||||
case K1_PRESSED:
|
||||
selectedBackground++;
|
||||
if (selectedBackground > backgrounds) {
|
||||
selectedBackground = 0;
|
||||
}
|
||||
storage_initBackground(selectedBackground, bg);
|
||||
lastUpdateTime = currentTime;
|
||||
break;
|
||||
|
||||
case K2_PRESSED:
|
||||
selectedBackground--;
|
||||
if (selectedBackground < 0) {
|
||||
selectedBackground = backgrounds - 1;
|
||||
}
|
||||
storage_initBackground(selectedBackground, bg);
|
||||
lastUpdateTime = currentTime;
|
||||
break;
|
||||
|
||||
case K3_PRESSED:
|
||||
currentBackground = selectedBackground;
|
||||
lastUpdateTime = currentTime;
|
||||
return;
|
||||
|
||||
case K4_PRESSED:
|
||||
storage_initBackground(currentBackground, bg);
|
||||
lastUpdateTime = currentTime;
|
||||
return;
|
||||
}
|
||||
|
||||
if (selectedPreviousBackground != selectedBackground) {
|
||||
draw_drawBackground(bg, 90, 90, 3);
|
||||
draw_drawSprite(sprite, 174, 96, uiSpriteData, ARROW_ICON);
|
||||
tft_drawBuffer();
|
||||
}
|
||||
|
||||
if (currentTime - lastUpdateTime > INACTIVITY_THRESHOLD_TIME_US) {
|
||||
storage_initBackground(currentBackground, bg);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+3
-1
@@ -53,11 +53,13 @@ void menu_drawAngryScreen(
|
||||
struct SpriteData* spriteData, struct SpriteData* smallUiElements
|
||||
);
|
||||
void menu_drawFridgeScreen(TFT_eSprite &bg, TFT_eSprite& sprite, struct SpriteData* smallUiElements, struct SpriteData* bigUiElements);
|
||||
|
||||
void training_screenTraining2(
|
||||
TFT_eSprite &bg, TFT_eSprite &sprite,
|
||||
struct SpriteData* mainCharaData, struct SpriteData* attackSprites
|
||||
);
|
||||
void menu_changeBackgroundScreen(
|
||||
TFT_eSprite &bg, TFT_eSprite &sprite, struct SpriteData* uiSpriteData
|
||||
);
|
||||
|
||||
void menu_sleepScreen_sleepAction();
|
||||
void menu_sleepScreen_recalculateSleep();
|
||||
|
||||
Reference in New Issue
Block a user