const int NUM_DRINKS = 4;
const int drinkButton[NUM_DRINKS] = {6,7,8,9};
const int drinksSelectedButton = 10;
bool drinkSelected[NUM_DRINKS];
byte lastDrinkButtonStatus[NUM_DRINKS];
  
void setup()
{
  Serial.begin(115200);
  Serial.println("drinks on the house.\n");

  pinMode(drinksSelectedButton, INPUT_PULLUP);
  for (int i = 0; i < NUM_DRINKS; i++)
  {
	drinkSelected[i] = false;
    pinMode(drinkButton[i], INPUT_PULLUP);
    lastDrinkButtonStatus[i] = digitalRead(drinkButton[i]);
  }
}

void loop()   
{
  static byte lastDrinksSelectedStatus = digitalRead(drinksSelectedButton);
  byte drinksSelectedStatus = digitalRead(drinksSelectedButton);

  // Check to see if any drinks have been selected
/*
  for (int i = 0; i < NUM_DRINKS; i++)
    if (!digitalRead(drinkButton[i])) drinkSelected[i]) = true;
*/

  for (int i = 0; i < NUM_DRINKS; i++) {
    byte drinkButtonStatus = digitalRead(drinkButton[i]);
    if (drinkButtonStatus != lastDrinkButtonStatus[i]) {
      delay(50); // debounce
      if (drinkButtonStatus == LOW) {
        if (!drinkSelected[i]) {
          drinkSelected[i] = true;

          Serial.print("mark selected ");
          Serial.println(i + 1);
        }
        else {
          drinkSelected[i] = false;

          Serial.print("unmark ");
          Serial.println(i + 1);
        }        
      }
      lastDrinkButtonStatus[i] = drinkButtonStatus;
    }
 }
  


  if (drinksSelectedStatus != lastDrinksSelectedStatus)
  {
    delay(50); // debounce
    if (drinksSelectedStatus == LOW)
    {
      Serial.println("Drinks Selected:");
      displayDrinks();
    }
    lastDrinksSelectedStatus = drinksSelectedStatus;
  }
}

void displayDrinks()
{
  for (int i = 0; i < NUM_DRINKS; i++)
  {
    if (drinkSelected[i])
    {
      Serial.print(i+1);
      Serial.print(" ");
      drinkSelected[i] = false;
    }
  }
  Serial.println("");
}