feat(debug): Werkbank auf F12
Gegenstandsliste mit Cursor, dazu heilen, absteigen und Raum leeren. Laeuft ueber ein Kommando Debug(Cheat) statt am Spielkern vorbei — die Zusage aus Ticket 11, dass Response::Command der einzige Weg nach game/ ist, gilt auch fuer Cheats. ClearRoom toetet die Gegner, statt die Liste zu leeren: So laeuft der normale Weg samt Todes-Triggern und "Der Raum ist geraeumt".
This commit is contained in:
@@ -139,6 +139,7 @@ fn draw(frame: &mut Frame, app: &App) {
|
||||
Screen::CharacterSheet => draw_sheet(frame, area, app),
|
||||
Screen::Dialog { pick } => draw_dialog(frame, area, app, *pick),
|
||||
Screen::Shop { pick, selling } => draw_shop(frame, area, app, *pick, *selling),
|
||||
Screen::Debug { pick } => draw_debug(frame, area, app, *pick),
|
||||
Screen::GameOver => draw_game_over(frame, area, app),
|
||||
}
|
||||
}
|
||||
@@ -344,6 +345,34 @@ fn draw_shop(frame: &mut Frame, area: Rect, app: &App, pick: usize, selling: boo
|
||||
);
|
||||
}
|
||||
|
||||
/// Die Werkbank. Eine Liste, vier Tasten — was sich mit zwei vorhandenen
|
||||
/// Kommandos nachstellen laesst, steht hier nicht.
|
||||
fn draw_debug(frame: &mut Frame, area: Rect, app: &App, pick: usize) {
|
||||
// ponytail: kein mitlaufender Ausschnitt wie im Grid — mehr Gegenstaende
|
||||
// als Zeilen fallen stumm hinten raus. `core` hat sieben; der Ausschnitt
|
||||
// kommt, wenn der erste Mod das sprengt.
|
||||
let mut zeilen = Vec::new();
|
||||
for (i, def) in app.registries.items_ordered().iter().enumerate() {
|
||||
let zeiger = if i == pick { "›" } else { " " };
|
||||
let menge = if def.stackable { "×10" } else { " " };
|
||||
zeilen.push(
|
||||
Line::from(format!("{zeiger} {:<26} {menge} {}", def.name, def.id))
|
||||
.style(Style::new().fg(if i == pick { Color::Yellow } else { Color::Reset })),
|
||||
);
|
||||
}
|
||||
zeilen.push(Line::from(""));
|
||||
zeilen.push(
|
||||
Line::from("↑↓ wählen · Enter geben · h heilen · > abstiegen · x Raum leeren · Esc")
|
||||
.style(Style::new().fg(Color::DarkGray)),
|
||||
);
|
||||
|
||||
frame.render_widget(
|
||||
Paragraph::new(zeilen)
|
||||
.block(Block::bordered().title(" Werkbank ").title_bottom(" F12 ")),
|
||||
area,
|
||||
);
|
||||
}
|
||||
|
||||
/// Menue-Kampf (Charter: Dungeon Master / Etrian Odyssey). Links die Gegner mit
|
||||
/// Ziffern, rechts die Faehigkeiten mit Kosten und **Sperrgrund** — der kommt
|
||||
/// aus dem Spielkern, nicht aus der UI (Ticket 14).
|
||||
|
||||
Reference in New Issue
Block a user