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