diff --git a/src/display.cpp b/src/display.cpp index 4366bd3f50412b85bea64314458958d94dd2f0d2..8280b497e20b753485ad4b8b3baefa0fd0022449 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -29,7 +29,7 @@ void setupDisplay() matrix.addLayer(&indexedLayer); matrix.begin(); matrix.setBrightness(defaultBrightness); - backgroundLayer.setBrightness(defaultBrightness); + backgroundLayer.setBrightness(255); backgroundLayer.enableColorCorrection(true); } @@ -48,19 +48,15 @@ void displayLoop() } } -void showEndScreen(int ticks) -{ - showEvolutions(ticks); -} - -void gameBrightness(int brightness) +void showMessage(char* msg) { - logLine("Game Brightness: " + (String)brightness); - //brightness = lightPowerMap8bit[brightness]; - backgroundLayer.setBrightness(brightness); + indexedLayer.setFont(font3x5); + indexedLayer.fillScreen(0); + indexedLayer.drawString((matrix.getScreenWidth() / 2) - (strlen(msg) * 4) / 2, (matrix.getScreenHeight() / 2) - 3, 1, msg); + indexedLayer.swapBuffers(); } -void showEvolutions(int ticks) +void showEndScreen(int ticks) { char msg_game[15]; sprintf(msg_game, "Game %d ended", gameEra); @@ -72,11 +68,18 @@ void showEvolutions(int ticks) indexedLayer.swapBuffers(); } +void gameBrightness(int brightness) +{ + logLine("Game Brightness: " + (String)brightness); + //brightness = lightPowerMap8bit[brightness]; + backgroundLayer.setBrightness(brightness); +} + void clearDisplay() { indexedLayer.fillScreen(0); indexedLayer.swapBuffers(); backgroundLayer.fillScreen({0, 0, 0}); - backgroundLayer.setBrightness(defaultBrightness); - backgroundLayer.swapBuffers(false); + backgroundLayer.setBrightness(255); + backgroundLayer.swapBuffers(); } diff --git a/src/display.h b/src/display.h index 7b21029aa5f831ae95b89fee42ea6c9ce65461d7..e550e2171e544f69c7213ee01475dd98ad14f3e4 100644 --- a/src/display.h +++ b/src/display.h @@ -12,8 +12,8 @@ extern int gameEra; void setupDisplay(); void displayLoop(); void showEndScreen(int ticks); +void showMessage(char* msg); void gameBrightness(int brightness); -void showEvolutions(int ticks); void clearDisplay(); #endif diff --git a/src/gameoflife.cpp b/src/gameoflife.cpp index 8860606b70766166182f1af9a0e752ceccb4f752..4ba030909bd27e8e2f4aab9e0f2a21d3293a24e5 100644 --- a/src/gameoflife.cpp +++ b/src/gameoflife.cpp @@ -36,7 +36,6 @@ void setupGameOfLife() { addGlider(random(SCREEN_HEIGHT), random(SCREEN_WIDTH), g); } - logLine("Initialized Game " + gameEra); } void createRandomMatrix(int (&a)[SCREEN_HEIGHT][SCREEN_WIDTH]) @@ -123,7 +122,7 @@ void gameLoop() if (gameOver) { - int brightness = floor(defaultBrightness * (1 - ((float)(millis() - currentMillis) / (float)scoreScreenTimeout))); + int brightness = constrain(floor(255 * (1 - ((float)(millis() - currentMillis) / (float)scoreScreenTimeout * 2))), 0, 255); gameBrightness(brightness); if (millis() - currentMillis > scoreScreenTimeout) @@ -136,7 +135,7 @@ void gameLoop() if (currentTick % 2) { - char msg[66]; + char msg[80]; sprintf(msg, "Tick: %4d, Cells now: %4d, before: %4d - No evolution since: %3d", currentTick, cellsAliveNow, cellsAliveBefore, noEvolutionTicks); logLine(msg); cellsAliveBefore = cellsAliveNow; @@ -158,7 +157,6 @@ void gameLoop() currentMillis = millis(); showEndScreen(finalTicks); gameOver = true; - logLine("Ending Game: " + gameEra); } } } diff --git a/src/main.cpp b/src/main.cpp index 659579e1a06e464e3df296be9349c253e039521e..eb08576101a2e71b6376293ae276ebe630ffc720 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,18 +6,25 @@ #include "gameoflife.h" int noEvolutionTicksLimit = 100; -int brightnessPercent = 30; +int brightnessPercent = 20; int gameInterval = 50; TickTwo gameTimer(gameLoop, gameInterval); TickTwo displayTimer(displayLoop, gameInterval); +String titleMsg = "Game of Life"; + void setup() { Serial.begin(115200); logLine("", true); setupNetwork(); setupDisplay(); + char msg[13]; + titleMsg.toCharArray(msg, 13); + showMessage(msg); + delay(3000); + clearDisplay(); setupGameOfLife(); gameTimer.start(); displayTimer.start(); diff --git a/src/network.cpp b/src/network.cpp index 02d57e10c240f39d96b9b00130c9ccb2b75fbe63..f8717ef5fba5eae4ac41bc72752ef94620563dc0 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -3,6 +3,7 @@ #include "config.h" #include "utils.h" #include "network.h" +#include "display.h" MDNSResponder mdns; AsyncWebServer server(80); @@ -53,23 +54,29 @@ void setupOTA() ArduinoOTA.onStart([]() { runGame = false; - logLine("Update Start"); }); + logLine("Update Start"); + clearDisplay(); }); ArduinoOTA.onEnd([]() { runGame = true; - logLine("Update End"); }); + logLine("Update End"); + clearDisplay(); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { char p[32]; sprintf(p, "Progress: %u%%\n", (progress/(total/100))); - logLine(p); }); + logLine(p); + char msg[10]; + sprintf(msg, "OTA:%3d%%", (progress/(total/100))); + showMessage(msg); }); ArduinoOTA.onError([](ota_error_t error) { if(error == OTA_AUTH_ERROR) logLine("OTA Auth Failed"); else if(error == OTA_BEGIN_ERROR) logLine("OTA Begin Failed"); else if(error == OTA_CONNECT_ERROR) logLine("OTA Connect Failed"); else if(error == OTA_RECEIVE_ERROR) logLine("OTA Receive Failed"); - else if(error == OTA_END_ERROR) logLine("OTA End Failed"); + else if(error == OTA_END_ERROR) logLine("OTA End Failed"); + clearDisplay(); runGame = true; }); ArduinoOTA.setHostname(HOSTNAME); ArduinoOTA.begin();