#include "common.h"
#include "menu.h"
#include "buttons.h"
#include "screen.h"
#include "games.h"
#include "wifictrl.h"

typedef enum
{
  MAIN_STATE_MENU = (0),
  MAIN_STATE_SETTINGS,
  MAIN_STATE_GAMES,
  MAIN_STATE_MAX,
} MainState_e;

static MainState_e _mainstate = MAIN_STATE_MENU;
static Menu_st _mainmenu = {0};

void setup()
{
  /* Serial */
  Serial.begin(115200);
  // delay(3000);              //Delay for Serial Monitor startup

  /* Screen */
  SCREEN_Init();
  delay(GAME_START_SCREEN_TIME);

  /* Database */
  DB_Init();

  /* Games */
  GAMES_Init();

  /* Buttons */
#if defined(KEYS_CONTROL_BUTTONS)
  BUTTONS_Init();
#endif

  /* Joystick */
#if defined(KEYS_CONTROL_JOYSTICK)
  JOYSTICK_Init();
#endif

  /* WiFi */
#if defined(KEYS_CONTROL_WIFI)
  WIFI_Init();
#endif

  /* MENU */
  MAINMENU_Init(&_mainmenu, GAMES_GetTotalGamesNum(), &GAMES_GetGameName);
  MAINMENU_DrawPage(&_mainmenu, "MAIN MENU");
}

void loop()
{
  return;
  int8_t gameindex = 0;

  switch (_mainstate)
  {
    case MAIN_STATE_MENU:
      gameindex = MAINMENU_Task(&_mainmenu);
      if (gameindex >= 0)
      {
        _mainstate = MAIN_STATE_GAMES;
        GAMES_Start(gameindex);

        _mainstate = MAIN_STATE_MENU;
        MAINMENU_DrawPage(&_mainmenu, "MAIN MENU");
      }
      break;

    case MAIN_STATE_GAMES:

      break;

    default:

      break;
  }

  WOKWI_DELAY
}