From dc94a396ec26ddd821857c4c7ab0cd684f195ae8 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sat, 15 Feb 2025 16:20:14 +0000 Subject: Clean up player-{pay,receive} Clean up the implementation of player-pay and player-receive by: - Single-clause early-error `if` for errors - use `incf`/`decf` instead of `setf`. --- src/player.lisp | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/player.lisp b/src/player.lisp index a5b1625..c22c783 100644 --- a/src/player.lisp +++ b/src/player.lisp @@ -67,28 +67,19 @@ (fn player-pay (id amount players) (-> (fixnum fixnum players) players) (let ((p (assoc id players))) - (cond - ((not (typep p 'player)) - (error 'error-player-nonexistent - :id id)) - ((not (player-can-bet? amount p)) - (error 'error-player-broke - :id id - :balance (player-balance p) - :required amount)) - (t - (destructuring-bind (id balance cards) p - (setf (cdr (assoc id players)) - (list (- balance amount) cards))))) - players)) - -(fn player-receive (id amount players) - (-> (fixnum fixnum players) players) + (if (not (typep p 'player)) + (error 'error-player-nonexistent :id id)) + (if (not (player-can-bet? amount p)) + (error 'error-player-broke + :id id + :balance (player-balance p) + :required amount)) + (decf (cadr (assoc id players)) amount)) + players) + +(fn player-receive (id amount players) (-> (fixnum fixnum players) players) (let ((p (assoc id players))) (if (not (typep p 'player)) - (error 'error-player-nonexistent - :id id)) - (destructuring-bind (id balance cards) p - (setf (cdr (assoc id players)) - (list (+ balance amount) cards))) + (error 'error-player-nonexistent :id id)) + (incf (cadr (assoc id players)) amount) players)) -- cgit v1.2.3-13-gbd6f