#include "NerfStatTrekConfig.h"
#include "Globals.h"

#include "StateHandler.h"
#include "StateDefault.h"


void setup()
{
  // Configure display
  display = new SegmentDisplay();

  #ifdef SDUseSPI
  display->setClockSpeed(NerfClockSpeed);
  #else
  display->setClockPin(NerfClockPin);
  display->setDataPin(NerfDataPin);
  #endif

  display->setLatchPin(NerfLatchPin);
  display->setDigits(NerfDigits);
  display->begin();


  // Configure buttons
  buttonA = new Button();
  buttonA->init(NerfButtonA);

  buttonB = new Button();
  buttonB->init(NerfButtonB);

  buttonArmed = new Button();
  buttonArmed->init(NerfButtonArmed, LOW);


  setCurrentState(new DefaultState());
}


void loop()
{
  currentTime = millis();

  buttonA->update(currentTime);
  buttonB->update(currentTime);
  buttonArmed->update(currentTime);

  // Count the shot no matter which state we're in
  if (buttonArmed->changed() && !buttonArmed->pressed())
    shots++;

  currentState->loop();
}
