#include <Adafruit_NeoPixel.h> // library for the individually addressable LEDs I used

#define NeoPixelPIN 3

#define MAXBRIGHTNESS 255

#define NUMPIXELS 318 //Number of LEDs - should be 318 with more LEDS on strip

#define LEDperTILE 3

#define DELAYVAL 50

Adafruit_NeoPixel pixels(NUMPIXELS, NeoPixelPIN, NEO_GRB + NEO_KHZ800);
 
int * getTileColor(int tileType);
void shuffleBoard();
void readButtons();
void setTiles();
void setNumbers();

int tileValues[106];
int tileNumbers[106];
bool gameChanged = true;

void setup() {
  Serial.begin(115200);
  pixels.begin();
  buttonsSetup();
  numberSetup();
  shuffleBoard();
}

void loop() {  
  pixels.clear();

  if (gameChanged){ //Only update tiles if change has occured
    setTiles();
    setNumbers();
    gameChanged = false;
  }
  
  for(int i=0; i < NUMPIXELS; i++) {
    int* color = getTileColor(tileValues[i / LEDperTILE]);
    pixels.setPixelColor(i, pixels.Color(color[0], color[1], color[2]));
  }   
  pixels.show();
  
  readButtons();
    
  delay(DELAYVAL); // Pause before next pass through loop
}