Files
mangavalkandClaude Opus 5.5 e9b91c5628 Add four animated KonoSuba ESPHome pages
Megumin's daily explosion, the Adventurers' Guild quest board (agenda,
weather, solar), Megumin's adventurer card and a party battle against a
giant toad with a live-data battle log. Original 1-bit pixel art lives in
tools/konosuba_sprites.py, which generates konosuba_sprites.h and can
render a preview PNG.

Home data and drawing helpers shared by the themed pages move to
el512_pages.h; the display gains dither_mask() for a dissolve-in intro.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 23:46:24 +02:00

40 lines
1.6 KiB
C++

// Cyberpunk-style animated pages for the ESPHome display: a netrunner HUD, a
// self-solving breach protocol, an optics boot-and-scan sequence, and a HUD
// with a small breach matrix. Inspired by the look of Cyberpunk 2077; the
// layouts and graphics are drawn from scratch, no game assets are used.
//
// Each function draws a whole page. Call it from a page lambda and list that
// page under animated_pages: the animation clock is the display's
// page_age_ms(), so every page starts its intro when it is shown.
#pragma once
#include "el512_pages.h"
#include "esphome/components/display/display.h"
#include "esphome/core/time.h"
namespace esphome::el512 {
class EL512Display;
namespace cyber {
using el512::HomeData;
using el512::Reading;
struct Fonts {
display::BaseFont *title{nullptr}; // wide display face for headers (Orbitron)
display::BaseFont *label{nullptr}; // condensed labels (Rajdhani)
display::BaseFont *value{nullptr}; // condensed readouts (Rajdhani bold)
display::BaseFont *huge{nullptr}; // clock digits (Rajdhani bold)
display::BaseFont *mono{nullptr}; // small monospace for logs and tickers (Share Tech Mono)
display::BaseFont *code{nullptr}; // larger monospace for breach codes (Share Tech Mono)
};
void netrunner_hud(EL512Display &it, const Fonts &f, const HomeData &d, ESPTime now);
void breach_protocol(EL512Display &it, const Fonts &f);
void optics_scan(EL512Display &it, const Fonts &f, const HomeData &d, ESPTime now);
void split_hud(EL512Display &it, const Fonts &f, const HomeData &d, ESPTime now);
} // namespace cyber
} // namespace esphome::el512