aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-02-15 16:20:14 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-02-15 16:20:14 +0000
commitdc94a396ec26ddd821857c4c7ab0cd684f195ae8 (patch)
tree428f91802973af5cea4d7197c5b403788aa05c66 /src
parent24b07f9166a3c100121143f0d59d3d5d167a82ad (diff)
downloadcantedraw-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`.
Diffstat (limited to 'src')
-rw-r--r--src/player.lisp35
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))