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