From ebb9efef21443f63a66de2f74e15b5948bb48620 Mon Sep 17 00:00:00 2001 From: Jan Grewe <jan@faked.org> Date: Sat, 3 Jun 2023 03:04:10 +0200 Subject: [PATCH] show title screen show OTA progress --- src/display.cpp | 29 ++++++++++++++++------------- src/display.h | 2 +- src/gameoflife.cpp | 6 ++---- src/main.cpp | 9 ++++++++- src/network.cpp | 15 +++++++++++---- 5 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index 4366bd3..8280b49 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 7b21029..e550e21 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 8860606..4ba0309 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 659579e..eb08576 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 02d57e1..f8717ef 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(); -- GitLab