//! Headless-Kern: alles, was läuft, ohne dass ein Frontend existiert. //! //! Schicht-Regel: `engine` kennt keine Frontends. Nach außen kommuniziert //! der Kern nur über Rückgabewerte (`StoryState`, Tags) und die //! [`game::Action`]-Queue — niemals über Aufrufe in Frontend-Module. //! Frontends (CLI-REPL jetzt, Renderer später) sind Geschwister-Module, //! die `engine` konsumieren; die Richtung kehrt sich nie um. //! //! Interner Abhängigkeitsgraph (azyklisch, Pfeil = „benutzt"): //! //! kv ← ink ← game ← story_ctrl ← signals //! ↑ ↑ //! kv assets //! //! Bitte azyklisch halten: neue Querverbindungen lieber über Rückgabewerte //! an den Aufrufer lösen (so wie story_ctrl Tags zurückgibt, statt selbst //! signals::dispatch zu rufen). //! //! `map` und `tga` sind reine Decoder (Bytes → owned Daten, hängen an //! nichts) — die geteilte Heimat für Format-Dekodierung, die jedes Frontend //! per Pull konsumiert. `map` ist zugleich der Anfang des headless //! Datenmodells (Phase 2 des Renderer-Plans). //! //! `player` ist die First-Person-Physik, aus der der Renderer seine View //! ableitet; `collision` (hängt an `map`) liefert ihr die Brush-Welt für den //! Swept-AABB-Trace in `player::step`. Beide bleiben headless. pub mod assets; pub mod collision; pub mod game; pub mod ink; pub mod kv; pub mod map; pub mod player; pub mod signals; pub mod story_ctrl; pub mod tga;