//    ───▄▀▀▀▄▄▄▄▄▄▄▀▀▀▄───
//    ───█▒▒░░░░░░░░░▒▒█───
//    ────█░░█░░░░░█░░█────
//    ─▄▄──█░░░▀█▀░░░█──▄▄─
//    █░░█─▀▄░░░░░░░▄▀─█░░█
//    █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
//    █░░     Andrew,    ░░█
//    █░░ Welcome to the ░░█
//    █░░     C L U B    ░░█
//    █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "cool.h"

#define SCREEN_I2C_ADDR 0x3C
#define SCREEN_WIDTH 128     // OLED display width, in pixels
#define SCREEN_HEIGHT 64     // OLED display height, in pixels
#define OLED_RST_PIN -1      // Reset pin (-1 if not available)

Adafruit_SSD1306 display(128, 64, &Wire, OLED_RST_PIN);

int frame = 0;
String message = "Welcome, Andrew!";
int messageIndex = 0;

void drawFrame() {
  display.clearDisplay();
  display.drawBitmap(40, 0, cool_frames[frame], COOL_FRAME_WIDTH, COOL_FRAME_HEIGHT, 1);
  display.setCursor(16, 52);
  display.print(message.substring(0, messageIndex));
  display.display();
  frame = (frame + 1) % COOL_FRAME_COUNT;
  if (frame % 3 == 0) {
    messageIndex = (messageIndex + 1) % 40;
  }
}

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_I2C_ADDR);
  display.setTextColor(SSD1306_WHITE);
}

void loop() {
  drawFrame();
  delay(COOL_FRAME_DELAY);
}