diff --git a/src/display.cpp b/src/display.cpp index a523205677b09278cc35280bb890b5aea00eeff5..c30d059b68468cd2a40ca2cacb166afebe8e2e0f 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -14,8 +14,6 @@ const uint8_t kMatrixOptions = (SMARTMATRIX_OPTIONS_NONE); // see http://docs const uint8_t kBackgroundLayerOptions = (SM_BACKGROUND_OPTIONS_NONE); const uint8_t kIndexedLayerOptions = (SM_INDEXED_OPTIONS_NONE); -int defaultBrightness = (brightnessPercent * 255) / 100; - rgb24 colorWhite = {0xff, 0xff, 0xff}; SMARTMATRIX_ALLOCATE_BUFFERS(matrix, kMatrixWidth, kMatrixHeight, kRefreshDepth, kDmaBufferRows, kPanelType, kMatrixOptions); diff --git a/src/display.h b/src/display.h index be4764cd0121af833f5f89c617f126236b14e788..52ccbe387c588de310becfeee9665476b8409879 100644 --- a/src/display.h +++ b/src/display.h @@ -6,7 +6,7 @@ #include <SmartMatrix.h> extern bool runGame; -extern int brightnessPercent; +extern int defaultBrightness; extern int gameEra; void setupDisplay(); diff --git a/src/gameoflife.cpp b/src/gameoflife.cpp index d5d57e2c3bd51890df5c9667a327770823b515dd..58995c62fda1936892a00e3a73699df5d9db0901 100644 --- a/src/gameoflife.cpp +++ b/src/gameoflife.cpp @@ -18,6 +18,7 @@ int finalTicks; int cellsAliveNow; int cellsAliveBefore; int noEvolutionTicks; +int noEvolutionTicksLimit = 100; const uint scoreScreenTimeout = 5000; unsigned long currentMillis; diff --git a/src/main.cpp b/src/main.cpp index 5c4edae84458d2641f5b9a64bc7772f891659eb9..2ed21b6ab5fa4e89ce578d8f56068e61f1664e2c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,13 +1,14 @@ -#define CONFIG_HEAP_CORRUPTION_DETECTION HEAP_POISONING_LIGHT #include <Arduino.h> +#include <Preferences.h> #include "utils.h" #include "network.h" #include "display.h" #include "gameoflife.h" -int noEvolutionTicksLimit = 100; -int brightnessPercent = 20; -int gameInterval = 100; +Preferences preferences; + +int defaultBrightness; +int gameInterval; unsigned long lastTick; @@ -18,10 +19,18 @@ void showTitle() { showMessage(msg); } +void setupSettings() { + preferences.begin("settings", true); // true = readonly + defaultBrightness = preferences.getUInt("brightness", 50); + gameInterval = preferences.getUInt("interval", 100); + preferences.end(); +} + void setup() { Serial.begin(115200); logLine("", true); + setupSettings(); setupDisplay(); showTitle(); setupNetwork(); diff --git a/src/network.cpp b/src/network.cpp index a13222bfabb358245b2153ee03c5f3ddd1f8ddda..272ad9216cab8b72a244efb8c207cf96188299e5 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -266,4 +266,8 @@ void updateConfig(StaticJsonDocument<200U> doc) gameInterval = doc["config"]["interval"]; defaultBrightness = doc["config"]["brightness"]; displayBrightness(defaultBrightness); + preferences.begin("settings", false); + preferences.putUInt("brightness", defaultBrightness); + preferences.putUInt("interval", gameInterval); + preferences.end(); } diff --git a/src/network.h b/src/network.h index f83d9162d5a28c594049c12ff130934000e42d1d..c22f54abbc48cd20c6f8a9c6600c4f2e0036f4ad 100644 --- a/src/network.h +++ b/src/network.h @@ -15,6 +15,7 @@ extern bool runGame; extern int defaultBrightness; extern int gameInterval; +extern Preferences preferences; void setupNetwork(); void setupMDNS();