Files
planar-EL512.256-H/tools/trek_sprites.py
T
mangavalkandClaude Opus 5.5 13a499fd97 Add four Star Trek / Lower Decks pages with a 3D printer red alert
LCARS ship status, the Cerritos duty roster from the agenda, a warp core
driven by solar power with Rutherford's advice, and a captain's log under
a viewscreen. Original pixel art in tools/trek_sprites.py.

When the 3D printer (Moonraker current_print_state, `printer`
substitution) is paused or in error, the panel jumps to LCARS Status in
red alert and holds the rotation until it carries on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 16:29:29 +02:00

110 lines
3.3 KiB
Python

#!/usr/bin/env python3
"""Pixel art for the Star Trek / Lower Decks pages (components/el512/trek.cpp).
Original 1-bit fan art: '#' is a lit pixel. Writes
components/el512/trek_sprites.h and, with --preview, a magnified PNG.
python tools/trek_sprites.py
python tools/trek_sprites.py --preview sprites.png
"""
from konosuba_sprites import main, padded
# Starfleet uniform shared by the ensigns: lit shoulders, combadge on the chest.
BODY = [
"....#######.....",
"..###########...",
".#############..",
".##.###.#####...",
".##.##...###.#..",
".##.#######.##..",
".##.#.....#.##..",
".#..#.....#..#..",
"....#######.....",
"....##...##.....",
"....##...##.....",
"....##...##.....",
"...###...###....",
]
SPRITES = {
# Mariner: hair up in a bun, a smirk.
"MARINER": [
".......##.......",
"......####......",
"....########....",
"...##########...",
"...#.#....#.#...",
"...#........#...",
"...#.##..##.#...",
"...#........#...",
"...#......#.#...",
"....#..###.#....",
".....######.....",
] + BODY,
# Boimler: neat side part, worried open mouth.
"BOIMLER": [
"....#######.....",
"...#########....",
"...######...#...",
"...#........#...",
"...#.##..##.#...",
"...#........#...",
"...#...##...#...",
"...#..####..#...",
"...#..#..#..#...",
"....#.####.#....",
".....######.....",
] + BODY,
# Tendi: long hair down both sides, big smile.
"TENDI": [
".....######.....",
"...##########...",
"..############..",
"..##........##..",
"..#..##..##..#..",
"..#..........#..",
"..#.#......#.#..",
"..#..######..#..",
"..##........##..",
"..###......###..",
"..###.####.###..",
] + BODY,
# Rutherford: cybernetic implant over his left eye and temple.
"RUTHERFORD": [
"....########....",
"...##########...",
"...#.#.#.#.##...",
"..####......#...",
"..#..#.##...#...",
"..####......#...",
"..####......#...",
"...##...##..#...",
"...#..#####.#...",
"....#......#....",
".....######.....",
] + BODY,
# A Starfleet ship in profile, heading right: nacelle, pylons, engineering
# hull and saucer.
"SHIP": [
"######################..........................",
"#....................###........................",
"######################..........................",
".....#.......#..................................",
"......#.......#...................#############.",
".......#.......#...............##################",
"........###########......#######################.",
"........#.........######.........##############..",
"........#.....................#..................",
"........#######################..................",
".........#.....#####.........#...................",
"..........######...##########....................",
],
}
for _name in SPRITES:
SPRITES[_name] = padded(SPRITES[_name])
if __name__ == "__main__":
main(SPRITES, "Star Trek", "trek_sprites.py", "trek", __doc__)