From 9951e2d5afbcabb4bd8016b6d160653c1ec5ed8e Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 28 Oct 2026 23:45:43 +0100 Subject: v1.3.0: simplify payouts to bet x symbol x shape --- src/server/games/slots.rs | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'src/server/games/slots.rs') diff --git a/src/server/games/slots.rs b/src/server/games/slots.rs index e9f58b1..298cd4c 100644 --- a/src/server/games/slots.rs +++ b/src/server/games/slots.rs @@ -1,5 +1,5 @@ use super::traits::{Game, GameError, GamePhase, GameResult, GameState}; -use crate::slots::PAYTABLE; +use crate::slots::{SHAPE_MULTIPLIERS, SYMBOL_MULTIPLIERS}; use rand::Rng; use std::collections::HashMap; @@ -27,10 +27,18 @@ pub struct SlotsGame { impl SlotsGame { pub fn new() -> Self { - let payouts = PAYTABLE + // payout = bet * symbol multiplier * shape multiplier + let payouts = SYMBOL_MULTIPLIERS .iter() - .map(|&(symbol, three, four, five)| { - (symbol, Payout { three, four, five }) + .map(|&(symbol, symbol_multiplier)| { + ( + symbol, + Payout { + three: symbol_multiplier * SHAPE_MULTIPLIERS[0].1, + four: symbol_multiplier * SHAPE_MULTIPLIERS[1].1, + five: symbol_multiplier * SHAPE_MULTIPLIERS[2].1, + }, + ) }) .collect(); @@ -116,17 +124,15 @@ impl SlotsGame { let p4 = 5.0 / 7776.0; let p5 = 1.0 / 7776.0; - let per_line: f64 = self - .payouts - .values() - .map(|payout| { - p3 * payout.three as f64 - + p4 * payout.four as f64 - + p5 * payout.five as f64 - }) + let symbol_sum: f64 = SYMBOL_MULTIPLIERS + .iter() + .map(|(_, multiplier)| *multiplier as f64) .sum(); + let shape_ev = p3 * SHAPE_MULTIPLIERS[0].1 as f64 + + p4 * SHAPE_MULTIPLIERS[1].1 as f64 + + p5 * SHAPE_MULTIPLIERS[2].1 as f64; - per_line * PAYLINES.len() as f64 + symbol_sum * shape_ev * PAYLINES.len() as f64 } } -- cgit v1.2.3