aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-02-14 23:23:39 +0000
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-02-14 23:24:16 +0000
commit8f23358d3e26f0d4463964f41104b20d96b05bd5 (patch)
tree8fe42a3487af63209e4a2105243bddeae73befb0
parent77d344a42fef1a49418a899708db073a394a066e (diff)
downloadcantedraw-8f23358d3e26f0d4463964f41104b20d96b05bd5.tar.gz
cantedraw-8f23358d3e26f0d4463964f41104b20d96b05bd5.tar.bz2
cantedraw-8f23358d3e26f0d4463964f41104b20d96b05bd5.zip
Rework card< comparator to make Jokers the top of the hierarchy
-rw-r--r--src/model.lisp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/model.lisp b/src/model.lisp
index 5652b9c..ff9b7ad 100644
--- a/src/model.lisp
+++ b/src/model.lisp
@@ -86,9 +86,15 @@
(fn card< (c1 c2) (-> (card card) boolean)
(destructuring-bind ((r1 . s1) (r2 . s2)) (list c1 c2)
- (if (eq r1 r2)
- (suit< s1 s2)
- (rank< r1 r2))))
+ (cond
+ ;; Check for jokers!
+ ((and (eq s1 :Joker)
+ (eq s2 :Joker))
+ (rank< r1 r2))
+ ((eq s1 :Joker) nil)
+ ((eq s2 :Joker) t)
+ ((eq r1 r2) (suit< s1 s2))
+ (t (rank< r1 r2)))))
(fn suit->str (suit) (-> (suit) string)
(case suit