feat: m2 etagengenerierung — prefabs, floors, korridore, abstieg und sieg
Der handgebaute Testraum ist weg; Etagen entstehen aus Daten. - game/rng.rs: xorshift64*, Seed im Game (Ticket 14) - game/generate.rs: freie Platzierung, Pflichtraeume zuerst, Kette i->i-1 fuer strukturelle Erreichbarkeit, acht Orientierungen - data/: [[prefabs]] und [[floors]] als neunte und zehnte Registry, Ladepruefungen fuer rechteckige Layouts und Pflichtraum-Flaeche - Descend plus Siegbedingung: keine [[floors]] mit der naechsten Nummer heisst gewonnen — die Zahl 5 steht nirgends im Code - GameOver-Screen, mitlaufender Bildausschnitt im Grid Befund: Korridore stanzten 2340 Loecher in gezeichnete Waende, weil sie AUF der Tuer starteten. Erst Schritt nach aussen, dann L-Form, sonst Wegsuche ueber den freien Raum — die kann eine Raumwand nicht beruehren. Der Test zaehlt jetzt null. 21 Tests.
This commit is contained in:
@@ -11,9 +11,12 @@ pub enum Screen {
|
||||
MainMenu,
|
||||
Explore,
|
||||
CharacterSheet,
|
||||
// TODO(M2+): `CharacterCreation`, `Combat`, `Inventory`, `QuestLog`,
|
||||
// `Shop`, `Dialog`, `Confirm`, `GameOver` — elf sind es am Ende
|
||||
// (Ticket 11/14).
|
||||
/// Vollbild, kein Overlay. Bewusst nicht die lazy Variante mit einer
|
||||
/// Meldungszeile im Hauptmenue: Ein Abstiegs-Roguelike lebt davon, dass der
|
||||
/// Lauf am Ende *erzaehlt* wird (Ticket 14).
|
||||
GameOver,
|
||||
// TODO(M3+): `CharacterCreation`, `Combat`, `Inventory`, `QuestLog`,
|
||||
// `Shop`, `Dialog`, `Confirm` — elf sind es am Ende (11/14).
|
||||
}
|
||||
|
||||
/// Der Screen **gibt zurueck, statt selbst zu schieben**: sonst haelt er ein
|
||||
@@ -58,6 +61,7 @@ impl Screen {
|
||||
Response::Command(Command::Move(Direction::East))
|
||||
}
|
||||
KeyCode::Char('.') => Response::Command(Command::Wait),
|
||||
KeyCode::Char('>') => Response::Command(Command::Descend),
|
||||
// Screen-Navigation ist reine UI und fasst `Game` nie an.
|
||||
KeyCode::Char('c') => Response::Push(Screen::CharacterSheet),
|
||||
KeyCode::Esc => Response::Pop,
|
||||
@@ -68,6 +72,8 @@ impl Screen {
|
||||
KeyCode::Esc | KeyCode::Char('c') | KeyCode::Char('q') => Response::Pop,
|
||||
_ => Response::None,
|
||||
},
|
||||
|
||||
Screen::GameOver => Response::Quit,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user