nacapet/src/defs/defs.h

220 lines
4.5 KiB
C

#ifndef DEFS_H
#define DEFS_H
#include <ESP32Time.h>
#include <MPU6050.h>
#include "defs/background_data.h"
#include "defs/sprite_data.h"
#include "defs/file_chara.h"
#define VERSION "Alpha v0.1"
// SCREEN PINOUT
// BUTTONS PINOUT
#ifdef DEV_UNIT
#define K1_PIN 1
#define K2_PIN 2
#define K3_PIN 3
#define K4_PIN 4
#define BUTTON_MODE INPUT_PULLDOWN
#define BL_PIN 10
#endif
#ifdef ANDREW_UNIT
#define K1_PIN 39
#define K2_PIN 8
#define K3_PIN 9
#define K4_PIN 38
#define BUTTON_MODE INPUT_PULLUP
#define BL_PIN 42
#endif
// SPEAKER PINOUT
#define SPK_PIN 7
// I2C PINOUT
#define I2C_SCL_PIN 9
#define I2C_SDA_PIN 8
// SPECIAL SCREEN THAT OPENS WHEN TIMERS ARE DONE
// RECEIVES AN EXTRA PARAMETER (INTERRUPTKEY)
#define TIMER_FINISHED_SCREEN 999
// ANIMATION FRAMERATE DEFINITION IN µS
#define ANIMATION_THRESHOLD_TIME_US 500000
#define ANIMATION_SLEEPY_THRESHOLD_TIME_US 2500000
// INACTIVITY TIMERS (LAST TIME A BUTTON WAS PRESSED)
#define LAST_PRESSED_BUTTON_THRESHOLD_TIME_US 10000000
#define INACTIVITY_THRESHOLD_TIME_US 30000000
// RTC TIMEOUT WHEN TIME NOT DEFINED
#define RTC_TIMEOUT_THRESHOLD_TIME_MS 100
// STANDARD BEEP WHEN PRESSING BUTTON
#define BEEP_FREQ_HZ 4100
#define BEEP_LEN_MS 35
// MENU ENTRIES
#define STATUS_SCREEN_MENU 0
#define FOOD_SCREEN_MENU 1
#define TRAIN_SCREEN_MENU 2
#define BATTLE_SCREEN_MENU 3
#define POOP_SCREEN_MENU 4
#define MEDICAL_SCREEN_MENU 5
#define SLEEP_SCREEN_MENU 6
#define CHANGE_SCREEN_MENU 7
#define SETTINGS_SCREEN_MENU 8
#define FREEZE_SCREEN_MENU 9
// SCREENS THAT OPEN AFTER CLICKING ON A MENU ENTRY
#define STATUS_SCREEN 10
#define FOOD_SCREEN 11
#define TRAIN_SCREEN 12
#define BATTLE_SCREEN 13
#define CLEAR_POOP_SCREEN 14
#define MEDICAL_SCREEN 15
#define SLEEP_SCREEN 16
#define CHANGE_SCREEN 17
#define SETTINGS_SCREEN 18
// ICONS FOR EACH MENU ENTRY (MENU.BIN)
#define STATUS_SCREEN_ICON 0
#define FOOD_SCREEN_ICON 1
#define TRAIN_SCREEN_ICON 2
#define BATTLE_SCREEN_ICON 3
#define CLEAR_POOP_ICON 4
#define MEDICAL_SCREEN_ICON 5
#define SLEEP_SCREEN_ICON 6
#define SETTINGS_SCREEN_ICON 8
#define FRIDGE_DOOR 9
#define BED_SPRITE 10
#define EMPTY_EGG 11
#define CARE_MISTAKE_CALL_LIGHT 12
// SCREENS
#define OFF_SCREEN -1
#define TITLE_SCREEN 0
#define CLOCK_EDIT_SCREEN 1
#define CLOCK_SCREEN 2
#define IDLE_SCREEN 3
#define MENU_SCREEN 4
#define EGG_SELECT_SCREEN 5
#define EGG_HATCH_SCREEN 6
#define EGG_EMPTY_SCREEN 7
#define EVOLUTION_SCREEN 8
#define FEEDING_SCREEN 20
#define REFUSING_SCREEN 21
#define SLEEPY_SCREEN 22
#define FROZEN_SCREEN 28
#define CARE_MISTAKE_SCREEN 23
#define POOPING_SCREEN 24
#define HAPPY_SCREEN 25
#define ANGRY_SCREEN 26
#define MAIN_SCREEN 27
// TRAINING MODES
#define TRAINING_SCREEN_1 30
// SMALL UI ICONS (UI.BIN)
#define POOP_ICON 0
#define FOOD_ICON 1
#define PILL_ICON 2
#define ZZZ_ICON 3
#define AGE_ICON 4
#define SCALE_ICON 5
#define ARROW_ICON 6
#define FIREWORKS_ICON 7
#define COMPLAIN_ICON 8
#define FULL_HEART_ICON 9
#define EMPTY_HEART_ICON 10
#define CLEANER_ICON 11
#define SECONDS_IN_DAY 86400
// STANDARD VPET PARAMETER (CARE MISTAKES)
#define CARE_MISTAKE_COUNTER_MAX 60
#define SLEEP_CARE_MISTAKE_COUNTER_MAX 60
#define SLEEP_COUNTER_MAX 120
// ATTACK PATTERNS
#define ATTACK_PATTERN_MEDIOCRE 0
#define ATTACK_PATTERN_BAD 1
#define ATTACK_PATTERN_GOOD 2
#define ATTACK_PATTERN_GREAT 3
#define ATTACK_PATTERN_EXCELLENT 4
// BUTTON PRESSES DEFINITIONS
#define K1_PRESSED 8
#define K2_PRESSED 4
#define K3_PRESSED 2
#define K4_PRESSED 1
#define NONE_PRESSED 0
#define SCALE_FACTOR 3
#define CHARA_COUNT_IN_DEVICE 5
#define SPRITE_SCALE 6
extern int screenKey;
extern int menuKey;
extern int submenuKey;
extern int interruptKey;
extern bool k1_prev;
extern bool k2_prev;
extern bool k3_prev;
extern bool k4_prev;
extern bool inactive;
extern bool screenOff;
extern uint64_t lastPressedButtonTime;
extern uint64_t lastUpdateTime;
extern uint64_t lastBeepTime;
extern struct tm timeInfo;
extern uint32_t dayUnixTime;
extern ESP32Time rtc;
extern MPU6050 mpu;
extern hw_timer_t *actionTimerDelta;
extern TaskHandle_t secondLoop;
extern bool runVpetTasks;
extern uint8_t beepCounter;
extern uint16_t stepCounter;
extern bool timeSet;
extern uint8_t eggNumber;
extern Egg_t* eggSelection;
extern uint8_t currentCharacter;
// Rescatar
extern Egg_t* currentEgg;
extern LineCare_t** currentLineCareInstr;
extern Line_t** currentLine;
extern struct CharacterData* charaData;
extern struct SpriteData mainCharacterSprites;
extern bool isSamplingSteps;
extern uint64_t sampleStartTime;
extern uint16_t initialSteps;
#endif