From bc6d802aefc07050dce66dbe0c481a87542261a6 Mon Sep 17 00:00:00 2001 From: Jan Grewe <jan@faked.org> Date: Sat, 3 Jun 2023 01:28:28 +0200 Subject: [PATCH] fix background fading --- src/display.cpp | 13 +++++-------- src/display.h | 2 +- src/gameoflife.cpp | 14 ++++---------- src/gameoflife.h | 1 + src/main.cpp | 2 +- 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/display.cpp b/src/display.cpp index 0c667f4..4366bd3 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(255); + backgroundLayer.setBrightness(defaultBrightness); backgroundLayer.enableColorCorrection(true); } @@ -53,14 +53,11 @@ void showEndScreen(int ticks) showEvolutions(ticks); } -void fadeOutGame(int brightness) +void gameBrightness(int brightness) { - char msg[64]; - sprintf(msg, "Setting game layer brightness to: %d", brightness); - logLine(msg); - brightness = lightPowerMap8bit[brightness]; + logLine("Game Brightness: " + (String)brightness); + //brightness = lightPowerMap8bit[brightness]; backgroundLayer.setBrightness(brightness); - //backgroundLayer.swapBuffers(false); } void showEvolutions(int ticks) @@ -80,6 +77,6 @@ void clearDisplay() indexedLayer.fillScreen(0); indexedLayer.swapBuffers(); backgroundLayer.fillScreen({0, 0, 0}); - backgroundLayer.setBrightness(255); + backgroundLayer.setBrightness(defaultBrightness); backgroundLayer.swapBuffers(false); } diff --git a/src/display.h b/src/display.h index ecb82e3..7b21029 100644 --- a/src/display.h +++ b/src/display.h @@ -12,7 +12,7 @@ extern int gameEra; void setupDisplay(); void displayLoop(); void showEndScreen(int ticks); -void fadeOutGame(int brightness); +void gameBrightness(int brightness); void showEvolutions(int ticks); void clearDisplay(); diff --git a/src/gameoflife.cpp b/src/gameoflife.cpp index b455102..8860606 100644 --- a/src/gameoflife.cpp +++ b/src/gameoflife.cpp @@ -123,21 +123,15 @@ void gameLoop() if (gameOver) { + int brightness = floor(defaultBrightness * (1 - ((float)(millis() - currentMillis) / (float)scoreScreenTimeout))); + gameBrightness(brightness); + if (millis() - currentMillis > scoreScreenTimeout) { resetGame(); } - - if (noEvolutionTicks > noEvolutionTicksLimit) - { - if (gameOver) - { - int brightness = 255 * (1 - ((millis() - currentMillis) / scoreScreenTimeout)); - fadeOutGame(brightness); - } - } } - else + else // not gameOver { if (currentTick % 2) diff --git a/src/gameoflife.h b/src/gameoflife.h index cc7b9fa..ab91666 100644 --- a/src/gameoflife.h +++ b/src/gameoflife.h @@ -11,6 +11,7 @@ extern int arrayCopy[SCREEN_HEIGHT][SCREEN_WIDTH]; extern bool runGame; extern int noEvolutionTicksLimit; +extern const int defaultBrightness; void setupGameOfLife(); void createRandomMatrix(int (&a)[SCREEN_HEIGHT][SCREEN_WIDTH]); diff --git a/src/main.cpp b/src/main.cpp index 1c9f642..659579e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,7 +6,7 @@ #include "gameoflife.h" int noEvolutionTicksLimit = 100; -int brightnessPercent = 50; +int brightnessPercent = 30; int gameInterval = 50; TickTwo gameTimer(gameLoop, gameInterval); -- GitLab