feat: window mode with minifb — direct keyboard polling, no terminal

New --mode window (now default):
- minifb creates a real OS window (no terminal needed)
- fontdue rasterizes DejaVu Sans Mono glyphs to pixel buffer
- ASCII characters rendered as colored pixels — same aesthetic
- Keyboard polled via get_pressed_keys() every frame:
  - Instant response, no terminal delay
  - Proper multi-key support (W+A strafing works)
  - No Release event hacks needed
  - No key repeat timeout hacks
  - Instant stop when key released

Controls: WASD/arrows, 1-9/0 paint, X erase, HJKL camera, Q/Esc quit
--mode terminal still available as fallback

109 tests, 0 warnings, 0 failures
This commit is contained in:
Emil
2026-06-20 23:58:05 +03:00
parent 6d98c09ece
commit 19bd883645
5 changed files with 351 additions and 1 deletions
+2
View File
@@ -8,6 +8,8 @@ crossterm = "0.28"
clap = { version = "4", features = ["derive"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
minifb = "0.27"
fontdue = "0.9"
[profile.release]
opt-level = 3