summaryrefslogtreecommitdiffstats
path: root/src/roulette.rs
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-01 20:11:41 +0100
committersalmonik <salmonik@tuta.io>2026-11-01 20:11:41 +0100
commite920b20fafe375eec15b24eb8cde4b1455dd01af (patch)
tree308d2f7999177a753528779f6ec7926f3fa50818 /src/roulette.rs
parentv4.1.0: add the egui workspace member and the roulette style spike (diff)
downloadzagan-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 '')
-rw-r--r--src/roulette.rs10
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| {