aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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))