Public Access
Add four Steins;Gate pages; shuffle the page rotation hourly
Divergence meter (Nixie tubes, world lines and clock), a D-mail sent through the Phone Microwave using the panel's Message text, the Future Gadget Lab inventory with live sensors, and a world line chart of today's solar power. Original pixel art in tools/steins_sprites.py; the sprite tool is shared between themes and Sprite, sprite(), polar() and arc() move to el512_pages.h. HomeData gains the message and a 24 h solar history in 15-minute slots. The rotation now walks all pages in a random order that is reshuffled every hour (Still Alive stays out, Now playing is skipped when idle). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e9b91c5628
commit
1e8a9a5958
11 files changed
+1057
-76
No files matched your search
@@ -0,0 +1,164 @@
|
||||
// Pixel art for the Steins;Gate pages, generated by tools/steins_sprites.py;
|
||||
// edit the art there. Original 1-bit fan art, '#' = lit pixel.
|
||||
#pragma once
|
||||
|
||||
#include "el512_pages.h" // Sprite
|
||||
|
||||
namespace esphome::el512::steins {
|
||||
|
||||
static const char *const OKABE_A_ROWS[] = {
|
||||
"......#######.........",
|
||||
"....##########.#......",
|
||||
"...############.......",
|
||||
"..#############.#.....",
|
||||
"..##.#.#.##.####......",
|
||||
"..#.........###.......",
|
||||
"..#..##..##..#........",
|
||||
"..#...........#.......",
|
||||
"..#.....#.....#.......",
|
||||
"...#..#####..#........",
|
||||
"....#.......#.........",
|
||||
".....#######..........",
|
||||
"...###.....###........",
|
||||
"..##..#...#..##.......",
|
||||
".##....#.#....##......",
|
||||
".#.#....#....#.#......",
|
||||
".#.#....#....#.#......",
|
||||
".#..#...#...#..#......",
|
||||
"#...#...#...#...#.....",
|
||||
"#...#...#...#...#.....",
|
||||
"#..#....#....#..#.....",
|
||||
"#..#....#....#..#.....",
|
||||
"##.#....#....#.##.....",
|
||||
"##.#....#....#.##.....",
|
||||
"...#....#....#........",
|
||||
"...#...###...#........",
|
||||
"...#...#.#...#........",
|
||||
"..#....#.#....#.......",
|
||||
"..#....#.#....#.......",
|
||||
".#.....#.#.....#......",
|
||||
".#.....#.#.....#......",
|
||||
"#......#.#......#.....",
|
||||
"########.########.....",
|
||||
".......#.#............",
|
||||
".......#.#............",
|
||||
"......##.##...........",
|
||||
};
|
||||
static constexpr Sprite OKABE_A{22, 36, OKABE_A_ROWS};
|
||||
|
||||
static const char *const OKABE_B_ROWS[] = {
|
||||
"......#######.........",
|
||||
"....##########.#......",
|
||||
"...############.......",
|
||||
"..#############.#.....",
|
||||
"..##.#.#.##.####......",
|
||||
"..#.........###.......",
|
||||
"..#..##..##..#........",
|
||||
"..#...........#.......",
|
||||
"..#.....#.....#.......",
|
||||
"...#..#####..#........",
|
||||
"....#.......#.........",
|
||||
".....#######..........",
|
||||
"...###.....###........",
|
||||
"..##..#...#..##.......",
|
||||
".##....#.#....##......",
|
||||
".#.#....#....#.##.....",
|
||||
".#.#....#....#.#.#....",
|
||||
".#..#...#...#..#..#...",
|
||||
"#...#...#...#...#..#..",
|
||||
"#...#...#...#...#...#.",
|
||||
"#..#....#....#..#....#",
|
||||
"#..#....#....#..#....#",
|
||||
"##.#....#....#.##....#",
|
||||
"##.#....#....#......#.",
|
||||
"...#....#....#......#.",
|
||||
"...#...###...#.....#..",
|
||||
"...#...#.#...#.....#..",
|
||||
"..#....#.#....#...#...",
|
||||
"..#....#.#....#...#...",
|
||||
".#.....#.#.....#.#....",
|
||||
".#.....#.#.....##.....",
|
||||
"#......#.#......#.....",
|
||||
"########.########.....",
|
||||
".......#.#............",
|
||||
".......#.#............",
|
||||
"......##.##...........",
|
||||
};
|
||||
static constexpr Sprite OKABE_B{22, 36, OKABE_B_ROWS};
|
||||
|
||||
static const char *const KURISU_ROWS[] = {
|
||||
".....######.......",
|
||||
"...##########.....",
|
||||
"..############....",
|
||||
"..##.#.##.#.##....",
|
||||
"..#..........#....",
|
||||
"..#..##..##..#....",
|
||||
"..#..........#....",
|
||||
"..#....#.....#....",
|
||||
"..##..###...##....",
|
||||
"..###......###....",
|
||||
"..#.##....##.#....",
|
||||
"..#..######..#....",
|
||||
"..#.#..#..#..#....",
|
||||
"..##..###..#.#....",
|
||||
"..#....#....##....",
|
||||
".##...###...###...",
|
||||
".#.#...#...#..#...",
|
||||
".#.#.......#..#...",
|
||||
".#..#.....#...#...",
|
||||
".#..#######...#...",
|
||||
"....#.....#.......",
|
||||
"....#.....#.......",
|
||||
"....##...##.......",
|
||||
".....#...#........",
|
||||
".....#...#........",
|
||||
".....#...#........",
|
||||
".....#...#........",
|
||||
"....##...##.......",
|
||||
};
|
||||
static constexpr Sprite KURISU{18, 28, KURISU_ROWS};
|
||||
|
||||
static const char *const UPA_A_ROWS[] = {
|
||||
"..#........#..",
|
||||
"..##......##..",
|
||||
"..#.######.#..",
|
||||
".#..........#.",
|
||||
"#...#....#...#",
|
||||
"#............#",
|
||||
"#.....##.....#",
|
||||
".#..........#.",
|
||||
"..##########..",
|
||||
};
|
||||
static constexpr Sprite UPA_A{14, 9, UPA_A_ROWS};
|
||||
|
||||
static const char *const UPA_B_ROWS[] = {
|
||||
"..............",
|
||||
"...#......#...",
|
||||
"..##.####.##..",
|
||||
".#..........#.",
|
||||
"#...#....#...#",
|
||||
"#.....##.....#",
|
||||
"##..........##",
|
||||
".############.",
|
||||
"..............",
|
||||
};
|
||||
static constexpr Sprite UPA_B{14, 9, UPA_B_ROWS};
|
||||
|
||||
static const char *const CAN_ROWS[] = {
|
||||
"..######..",
|
||||
".#......#.",
|
||||
"##########",
|
||||
"#........#",
|
||||
"#.######.#",
|
||||
"#.#....#.#",
|
||||
"#.#.##.#.#",
|
||||
"#.#....#.#",
|
||||
"#.######.#",
|
||||
"#........#",
|
||||
"#........#",
|
||||
"##########",
|
||||
".########.",
|
||||
};
|
||||
static constexpr Sprite CAN{10, 13, CAN_ROWS};
|
||||
|
||||
} // namespace esphome::el512::steins
|
||||
Reference in new issue
Block a user