#include "EEPROM.h"

/*

  How the EEPROM is used:


  First byte: shot counter offset
  Second byte: hit counter offset

  Each counter is a 32-bit unsigned integer (4 bytes). When it reaches a treshold
  which is < 100,000 (the recommended EEPROM cell write limit) a new offset is calculated.
  This way we ensure no cell is written over 100,000 times (assuming the EEPROM is
  new) and you can click away until you run out of EEPROM.


  For initialisation set ShotCounterOffset and HitCounterOffset to
  different values. Keep in mind that Offset * 4 must not be greater than
  the amount of available EEPROM!

  Shot/HitCounterInitial defines the default value to write for
  each counters.

*/
#define ShotCounterOffset 0
#define HitCounterOffset 1

#define ShotCounterInitial 0
#define HitCounterInitial 0

#define counterLocation(offset) 2 + (offset * sizeof(uint32_t))

void setup()
{
  EEPROM.update(0, ShotCounterOffset);
  EEPROM.update(1, HitCounterOffset);

  EEPROM.put(counterLocation(ShotCounterOffset), (uint32_t)ShotCounterInitial);
  EEPROM.put(counterLocation(HitCounterOffset), (uint32_t)HitCounterInitial);

  pinMode(LED_BUILTIN, OUTPUT);
}


void loop()
{
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}
