diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-15 16:20:14 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-15 16:20:14 +0000 |
commit | dc94a396ec26ddd821857c4c7ab0cd684f195ae8 (patch) | |
tree | 428f91802973af5cea4d7197c5b403788aa05c66 | |
parent | 24b07f9166a3c100121143f0d59d3d5d167a82ad (diff) | |
download | cantedraw-dc94a396ec26ddd821857c4c7ab0cd684f195ae8.tar.gz cantedraw-dc94a396ec26ddd821857c4c7ab0cd684f195ae8.tar.bz2 cantedraw-dc94a396ec26ddd821857c4c7ab0cd684f195ae8.zip |
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`.
-rw-r--r-- | src/player.lisp | 35 |
1 files 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)) |