From f5531a7a0199837603fbb0bdbd499f0cbe7a4c1a Mon Sep 17 00:00:00 2001 From: minneelyyyy Date: Tue, 10 Dec 2024 15:13:58 -0500 Subject: [PATCH] rewrite: minor code flow improvements --- src/commands/gambling/wager.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/commands/gambling/wager.rs b/src/commands/gambling/wager.rs index 999345b..23a9724 100644 --- a/src/commands/gambling/wager.rs +++ b/src/commands/gambling/wager.rs @@ -17,9 +17,14 @@ pub async fn wager( } let mut tx = ctx.data().database.begin().await?; - let mut wealth = super::get_balance(ctx.author().id, &mut *tx).await?; + if wealth < amount { + ctx.reply(format!("You do not have enough tokens (**{}**) to wager this amount.", + wealth)).await?; + return Ok(()); + } + let item = if let Some(item) = item { let inventory = Inventory::new(ctx.author().id, Some(super::ID)); @@ -43,21 +48,12 @@ pub async fn wager( None }; - if wealth < amount { - ctx.reply(format!("You do not have enough tokens (**{}**) to wager this amount.", - wealth)).await?; - return Ok(()); - } - - let multiplier = item.clone().map(|item| item.effects.iter().fold(1.0, |acc, effect| match effect { - Effect::Multiplier(c) => *c, - _ => acc, - })).unwrap_or(1.0); - - let chance = item.map(|item| item.effects.iter().fold(0.5, |acc, effect| match effect { - Effect::Chance(c) => *c, - _ => acc, - })).unwrap_or(0.5); + let (multiplier, chance) = item.map(|item| item.effects.iter() + .fold((1.0, 0.5), |(m, c), effect| match effect { + Effect::Multiplier(m) => (*m, c), + Effect::Chance(c) => (m, *c), + }) + ).unwrap_or((1.0, 0.5)); if rand::thread_rng().gen_bool(chance) { let win = (amount as f64 * multiplier) as i32;