GoL - Game start transition

Starting alive cells are randomly colored in and bg fades on game start.
This commit is contained in:
Brandon502
2024-06-19 23:09:31 -04:00
parent 4aee7eb6c6
commit 086b0e3e0e

View File

@@ -5210,10 +5210,8 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
cIndex = y * cols + x; cIndex = y * cols + x;
if (random8(100) < 32) { // ~32% chance of being alive if (random8(100) < 32) { // ~32% chance of being alive
setBitValue(cells, cIndex, true); setBitValue(cells, cIndex, true);
color = SEGMENT.color_from_palette(random8(), false, PALETTE_SOLID_WRAP, 0); SEGMENT.setPixelColorXY(x,y, bgColor); // Initial color set in redraw loop
SEGMENT.setPixelColorXY(x,y, allColors ? random16() * random16() : color);
} }
else if (!overlayBG) SEGMENT.setPixelColorXY(x,y, bgColor); // set background color if not overlaying
} }
memcpy(futureCells, cells, dataSize); memcpy(futureCells, cells, dataSize);
@@ -5231,7 +5229,6 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
a = t; a = t;
} }
*gliderLength = cols * rows / a * 4; *gliderLength = cols * rows / a * 4;
return FRAMETIME;
} }
int aliveCount = 0; // Solo glider detection int aliveCount = 0; // Solo glider detection
@@ -5246,6 +5243,15 @@ uint16_t mode_2Dgameoflife(void) { // Written by Ewoud Wijma, inspired by https:
bool alive = getBitValue(cells, cIndex); bool alive = getBitValue(cells, cIndex);
if (alive) aliveCount++; if (alive) aliveCount++;
uint32_t cellColor = SEGMENT.getPixelColorXY(x,y); uint32_t cellColor = SEGMENT.getPixelColorXY(x,y);
if (generation == 1) {// Spawn initial colors randomly
bool aliveBgColor = (alive && cellColor == bgColor);
if (aliveBgColor && !random(12)) SEGMENT.setPixelColorXY(x,y, allColors ? random16() * random16() : SEGMENT.color_from_palette(random8(), false, PALETTE_SOLID_WRAP, 0)); // Color alive cell
else if (alive && !aliveBgColor) SEGMENT.setPixelColorXY(x,y, cellColor); // Redraw alive cells
else if (!alive && !overlayBG && !bgBlendMode) SEGMENT.setPixelColorXY(x,y, bgColor); // Redraw dead cells for default overlayFG
else if (!alive && !overlayBG) SEGMENT.setPixelColorXY(x,y, color_blend(cellColor, bgColor, 16)); // Fade dead cells (bgBlendMode)
continue;
}
if ( alive && palChanged) SEGMENT.setPixelColorXY(x,y, SEGMENT.color_from_palette(random8(), false, PALETTE_SOLID_WRAP, 0)); // Recolor alive cells if ( alive && palChanged) SEGMENT.setPixelColorXY(x,y, SEGMENT.color_from_palette(random8(), false, PALETTE_SOLID_WRAP, 0)); // Recolor alive cells
else if ( alive && overlayBG) SEGMENT.setPixelColorXY(x,y, cellColor); // Redraw alive cells for overlayBG else if ( alive && overlayBG) SEGMENT.setPixelColorXY(x,y, cellColor); // Redraw alive cells for overlayBG
if (!alive && palChanged && !overlayBG) SEGMENT.setPixelColorXY(x,y, bgColor); // Remove blurred cells from previous palette if (!alive && palChanged && !overlayBG) SEGMENT.setPixelColorXY(x,y, bgColor); // Remove blurred cells from previous palette