diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-01 20:11:41 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-01 20:11:41 +0100 |
| commit | e920b20fafe375eec15b24eb8cde4b1455dd01af (patch) | |
| tree | 308d2f7999177a753528779f6ec7926f3fa50818 /src/roulette.rs | |
| parent | v4.1.0: add the egui workspace member and the roulette style spike (diff) | |
| download | zagan-bet-e920b20fafe375eec15b24eb8cde4b1455dd01af.tar.gz zagan-bet-e920b20fafe375eec15b24eb8cde4b1455dd01af.zip | |
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.
Diffstat (limited to 'src/roulette.rs')
| -rw-r--r-- | src/roulette.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/roulette.rs b/src/roulette.rs index 6b73c2a..b697e31 100644 --- a/src/roulette.rs +++ b/src/roulette.rs | |||
| @@ -226,6 +226,16 @@ impl Bets { | |||
| 226 | } | 226 | } |
| 227 | } | 227 | } |
| 228 | 228 | ||
| 229 | /// Take `amount` back from one target, dropping the chip when it empties. | ||
| 230 | /// | ||
| 231 | /// This is the felt undo: a right or middle click removes one chip. | ||
| 232 | pub fn reduce(&mut self, target: &BetTarget, amount: u64) { | ||
| 233 | if let Some(chip) = self.chips.iter_mut().find(|chip| &chip.target == target) { | ||
| 234 | chip.amount = chip.amount.saturating_sub(amount); | ||
| 235 | } | ||
| 236 | self.chips.retain(|chip| chip.amount > 0); | ||
| 237 | } | ||
| 238 | |||
| 229 | /// Total returned for a winning number, including returned stakes. | 239 | /// Total returned for a winning number, including returned stakes. |
| 230 | pub fn winnings(&self, number: u8) -> u64 { | 240 | pub fn winnings(&self, number: u8) -> u64 { |
| 231 | self.chips.iter().fold(0u64, |total, chip| { | 241 | self.chips.iter().fold(0u64, |total, chip| { |
