feat(pixel): 8-Bit-Handwerker laeuft einmal pro Minute durch die Seitenleiste

Im Theme "Pixel Art" laeuft eine kleine Figur ueber die Steinmauer der
Seitenleiste, macht einen Huepfer und verschwindet wieder nach links.
Auftritt alle 60 Sekunden, der erste nach 6 Sekunden.

Die Figur ist eine eigene Zeichnung - gruene Muetze, Schutzbrille,
Latzhose - und steht als Pixelraster 14 x 16 direkt im Code, ohne
Bilddatei. Bewusst kein Sprite aus einem kommerziellen Spiel: solche
Figuren und Grafiken sind geschuetzt und gehoeren nicht in eine
produktiv genutzte Anwendung.

Technik wie bei den Wetter-Ebenen: ein Canvas genau ueber der
Seitenleiste, ohne Klickfang, unter den Dialogen, per ResizeObserver an
die ein- und ausklappbare Breite gebunden. Zwischen zwei Auftritten
laeuft ein Timer statt eines Animationsframes. Bei "Bewegung reduzieren"
und unterhalb der Tabletbreite bleibt alles aus.

Rueckbau: diesen Commit reverten, oder die Datei loeschen und die eine
Zeile in lib/theme.tsx entfernen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
schakal00783
2026-09-18 12:10:19 +02:00
co-authored by Claude Opus 5
parent 3b818bd1c6
commit d9d46fea6a
3 changed files with 261 additions and 1 deletions
+2
View File
@@ -13,6 +13,7 @@ import { THEME_PALETTES, type ThemePalette } from '../types';
import { RainyWeather } from '../components/layout/RainyWeather';
import { SnowWeather } from '../components/layout/SnowWeather';
import { AuraSky } from '../components/layout/AuraSky';
import { PixelRunner } from '../components/layout/PixelRunner';
/*
* Darstellung der Oberflaeche. Sie hat zwei unabhaengige Achsen:
@@ -231,6 +232,7 @@ export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ childre
{palette === 'rainy' && <RainyWeather />}
{palette === 'snow' && <SnowWeather />}
{palette === 'aura' && <AuraSky />}
{palette === 'pixel' && <PixelRunner />}
</ThemeContext.Provider>
);
};