diff options
-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)) |