From e920b20fafe375eec15b24eb8cde4b1455dd01af Mon Sep 17 00:00:00 2001 From: salmonik Date: Sun, 1 Nov 2026 20:11:41 +0100 Subject: v4.1.1: pointer-first betting and visible payouts in the GUI The felt snaps the hover to the shared fine lattice: inner half of a cell is a straight, an edge a split, a crossing a corner. A translucent chip previews the target and the covered cells tint. Left click adds the selected chip, right or middle click takes one back through the new Bets::reduce; C or CLEAR empties the slip, and SPIN stays disabled with no chips. The result now pays out: the wheel leaves the winning pocket under the pointer, the winning cell and pocket get a gold outline, and the sidebar reports the amount returned and the net for the round (NO WIN on a loss). Placing a chip after a result starts the next round without losing the wheel position. The column row now spans the full width like a real table instead of hugging the left edge. Adds tests for lattice snapping, target naming and taking chips back. --- docs/GUI-PLAN.md | 12 ++++++--- docs/TESTING.md | 34 +++++++++++++++---------- docs/screenshots/gui-roulette-1080p.png | Bin 126927 -> 128158 bytes docs/screenshots/gui-roulette-result-1080p.png | Bin 127523 -> 127283 bytes 4 files changed, 29 insertions(+), 17 deletions(-) (limited to 'docs') diff --git a/docs/GUI-PLAN.md b/docs/GUI-PLAN.md index 8c3db0a..bb63530 100644 --- a/docs/GUI-PLAN.md +++ b/docs/GUI-PLAN.md @@ -79,11 +79,17 @@ crash board from its local clock. green kept for the table, a 4/8/12/16/24 spacing scale, radii, and the type scale. Two embedded fonts: Open Sans (OFL) for text, Hack (MIT) for numbers, chips and labels. Licences sit next to the files in `gui/assets/fonts/`. -- `gui/src/roulette.rs` draws the felt, chips, the fine lattice cursor and the - wheel from a `RouletteView`; it owns the geometry, not the rules. +- `gui/src/roulette.rs` draws the felt, chips and wheel from a `RouletteView`; + it owns the geometry, not the rules. The felt is pointer-first: the hover + snaps to the fine lattice, so the inner half of a cell is a straight, an edge + is a split and a crossing is a corner. Left click adds the selected chip, + right or middle click takes one back, and a translucent chip previews the + target under the pointer. - `gui/src/app.rs` composes the persistent header (connection, account, balance) with the table and the betting sidebar. The demo state animates a - 2.4 s wheel spin and highlights the winning pocket and cell. + 2.4 s wheel spin, highlights the winning pocket and cell, and reports the + amount paid and the net for the round. SPIN and CLEAR sit side by side so + clearing is never below the fold. - `gui/tests/layout.rs` covers the pure maths (money grouping, wheel angle, table aspect, bet names). UI wiring tests arrive with `egui_kittest` in Phase 4. diff --git a/docs/TESTING.md b/docs/TESTING.md index f42b84a..32fc628 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -125,21 +125,27 @@ Windows 10 before approving the look. 1. `cargo run -p zagan-bet-gui` at 1440x900, then at 1920x1080. The header keeps its right margin at both sizes and shows ONLINE, host, ping, account and balance; the table is centred and the sidebar is full height. -2. The felt shows 0, the 3x12 numbers, dozens, columns and the six outside - cells. Chips sit on their targets: a straight in the cell, a corner on the - lattice crossing, an outside bet in its box. -3. Click a pocket: a chip of the selected denomination appears and the slip - gains a row. Chips are 10/25/50/100; the selected one has a cyan ring. -4. Arrow keys move the cursor. Over the numbers the cyan marker sits on the - cell or lattice point and the covered cells tint; leaving the table walks - dozens, columns and outside. +2. The felt shows 0, the 3x12 numbers, dozens, columns (each a quarter of the + row) and the six outside cells. Chips sit on their targets: a straight in + the cell, a corner on the lattice crossing, an outside bet in its box. +3. Hover a number: a translucent chip of the selected denomination appears. + In the inner half of a cell it is a straight (one cell tints); near an edge + it snaps to a split (two cells tint) and near a corner to a corner (four + cells tint). Hovering the dozens, columns and outside boxes moves the + preview there. +4. Left click adds the chip where the preview is; right or middle click takes + one chip of that value back, dropping the row when it reaches zero. The + slip and total follow every change. C or CLEAR empties the slip. 5. Space or SPIN animates the wheel for about 2.4 s and stops with the winning - pocket under the pointer. The winning cell gets a gold outline, RESULT names - the number and colour, and LAST gains a dot. SPIN is disabled during the - spin. -6. Clear bets empties the slip and the total. Resize to 1100x720: the sidebar - scrolls, nothing overlaps the header, and the table keeps its aspect ratio. -7. Compare the 1080p window against the approved reference screenshot. + pocket under the pointer. The winning cell gets a gold outline and LAST + gains a dot. RESULT names the number and colour, WON shows the amount paid + and the net for the round, and a losing spin says NO WIN. SPIN, CLEAR and + the chips are disabled during the spin. +6. Placing a chip after a result starts the next round: the payout row goes + back to PLACE YOUR BETS while the wheel stays where it stopped. Resize to + 1100x720: the sidebar scrolls, nothing overlaps the header, and the table + keeps its aspect ratio. +7. Compare the 1080p window against the approved reference screenshots. ## Manual roulette checklist diff --git a/docs/screenshots/gui-roulette-1080p.png b/docs/screenshots/gui-roulette-1080p.png index b6c9b17..2f30aa7 100644 Binary files a/docs/screenshots/gui-roulette-1080p.png and b/docs/screenshots/gui-roulette-1080p.png differ diff --git a/docs/screenshots/gui-roulette-result-1080p.png b/docs/screenshots/gui-roulette-result-1080p.png index 0f37133..a7d425c 100644 Binary files a/docs/screenshots/gui-roulette-result-1080p.png and b/docs/screenshots/gui-roulette-result-1080p.png differ -- cgit v1.2.3