fix(bogen): vorgemerkte Punkte beim Abschicken verbrauchen

Nach Enter stand unspent_points auf 0, waehrend der Screen den Punkt noch
vorgemerkt hielt — die Anzeige rechnete 0 - 1 auf u32 und stuerzte ab.

Der Screen leert sein Feld, waehrend er das Kommando uebergibt, dazu
saturating_sub an den zwei Lesestellen: unspent_points kann sich auch
unter dem offenen Screen aendern.

Erster UI-Test des Projekts. handle_key ist ohne Terminal aufrufbar, und
sobald ein Screen Zustand haelt, ist die Naht zum Spielzustand eine
Fehlerquelle wie jede andere.
This commit is contained in:
2026-08-12 21:20:02 +02:00
parent b19492bb51
commit 6f91b44e50
4 changed files with 78 additions and 7 deletions

View File

@@ -578,7 +578,7 @@ fn draw_sheet(frame: &mut Frame, area: Rect, app: &App, pick: usize, pending: &[
let mut lines = Vec::new();
// Erfahrung und Punkte stehen an `Game`, nicht am `Creature` (Ticket 15).
let offen = app.game.unspent_points - pending.iter().sum::<u32>();
let offen = app.game.unspent_points.saturating_sub(pending.iter().sum::<u32>());
lines.push(Line::from(format!(
"Erfahrung {}/{}",
app.game.current_exp,