From 624626b9a10ae47cf7d5f6e91765570ed759bd74 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Tue, 29 Sep 2026 18:58:28 -0400 Subject: feat: better roulette racetrack graphics and payout table --- building_guide/roulette.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'building_guide') diff --git a/building_guide/roulette.md b/building_guide/roulette.md index e257b31..3960e2b 100644 --- a/building_guide/roulette.md +++ b/building_guide/roulette.md @@ -35,8 +35,12 @@ ANSI). Three views share one renderer: pockets, and outside bets. The whole five-row zero lane (three numbered rows plus the two separators between them) carries the green background, and its outer corners are rounded in Unicode mode. A racetrack table draws - `renderRouletteRacetrack` above the board: a rounded panel listing each call - bet's chips and wheel-order number series, plus the Neighbors syntax. + `renderRouletteRacetrack` above the board: a numbered oval in physical + clockwise wheel order, with 26 at the right tip. Interior dividers meet + each call bet's pockets, left to right: Tiers du Cylindre, Orphelins, + Voisins du Zero, Zero. Connected box-drawing steps separate Tiers from + Orphelins; Zero has a curved boundary within Voisins. Neighbors is not + drawn on the board, but remains in the payout reference and help. - **Spinning**: a stylised 17x9 wheel (wider than tall so it reads as a circle in a terminal cell grid). Only the rim is colored, as solid red and black pockets alternating around the circumference; pockets are two cells wide @@ -51,8 +55,14 @@ ANSI). Three views share one renderer: The smallest (five-row) cards drop the rule so the ball can sit directly under the number. -The odds reminder (`Numbers 35:1 ...`) is not part of the ambient board. It is -shown only by the `table` command (and `table rules`). Each table's one-line +The colored payout tables in `internal/game/render_casino_help.go` use the +shared ANSI-aware `ui.Table` renderer, respecting ASCII/Unicode and wrap width. +They show wheel-specific win chances and net profit odds, including call-bet +exceptions. They appear only with `table` and `table rules`, not ambient art. +`table help` opens the current game's guide; `help casino` indexes the brief +casino guides in `data/help/`. `help racetrack` explains chip placements and +rounding, including `zero`/`jeu zero` versus the straight-number target `0`. +Each table's one-line overview is kept short (`Label | Limits 1-10000 | n/m seated | state`) so it fits beside a look minimap; `writeLookSideBySide` also wraps any content line that would otherwise run into the map column. @@ -69,12 +79,12 @@ simultaneous wagers remain future work: `Participant.Wager` still holds a single stake. Single-zero tables may set `roulette.racetrack: true`. That adds the four -French call bets (Voisins du Zéro, Tiers du Cylindre, Orphelins, Zero Spiel) +French call bets (Voisins du Zéro, Tiers du Cylindre, Orphelins, Jeu Zero) and the Neighbors bet (a chosen number plus four on each side in wheel order). The racetrack is a single-zero layout only: the validator rejects `racetrack: true` together with `double_zero: true`. A call bet is **one wager** whose amount is the total stake spread evenly over the bet's chips -(Voisins 9, Tiers 6, Orphelins 5, Zero Spiel 4, Neighbors 9). Because the +(Voisins 9, Tiers 6, Orphelins 5, Jeu Zero 4, Neighbors 9). Because the components are ordinary inside bets, each returns `36/covered` when its number hits, so a winning pocket can pay a different multiple of the stake than another (for example 0 on Voisins pays 24/9, while 4 pays 18/9). The -- cgit v1.2.3