#include "StateReset.h"
#include "Globals.h"
#include "NerfStatTrakConfig.h"
#include "StateDefault.h"


void ResetState::setup()
{
  intro = true;
  introStart = currentTime;

  outro = false;
  selected = 0;
}


void ResetState::loop()
{
  if (intro)
  {
    if (currentTime - introStart >= NerfResetIntroTime)
      intro = false;

    char text[] = "Reset";
    display->writeTextLeft(text);
    return;
  }

  if (outro)
  {
    loopOutro();
    return;
  }


  if (buttonA->changed() && !buttonA->pressed())
  {
    switch (selected)
    {
      case 0:
        setCurrentState(new DefaultState());
        return;

      case 1:
        resetHits();
        break;

      case 2:
        resetShots();
        break;

      case 3:
        resetHits();
        resetShots();
        break;
    }

    outroStart = currentTime;
    outro = true;
    return;
  }

  if (buttonB->changed() && !buttonB->pressed())
  {
    selected++;
    if (selected > 3)
      selected = 0;
  }


  switch (selected)
  {
    case 0:
    {
      char text[] = "Cancel";
      display->writeTextLeft(text);
      break;
    }

    case 1:
    {
      char text[] = "Hits";
      display->writeTextLeft(text);
      break;
    }

    case 2:
    {
      char text[] = "Shots";
      display->writeTextLeft(text);
      break;
    }

    case 3:
    {
      char text[] = "Both";
      display->writeTextLeft(text);
      break;
    }
  }
}


void ResetState::loopOutro()
{
  if (currentTime - outroStart >= NerfResetOutroTime)
  {
    setCurrentState(new DefaultState());
    return;
  }

  char text[] = "Done";
  display->writeTextLeft(text);
}
