summaryrefslogtreecommitdiff
path: root/src/gizmo/wasp-tcg.el
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-09-22 00:06:29 -0400
committerLLLL Colonq <llll@colonq>2026-09-22 00:06:29 -0400
commit7abb751eb3d9213ba690ed4ae6b0dbbc099d8e46 (patch)
treec051022c2eca4373233a874d1d714d58e807d97e /src/gizmo/wasp-tcg.el
parent07f5a19d7930d1d912d05c95d9cc5b4b0c407383 (diff)
Diffstat (limited to 'src/gizmo/wasp-tcg.el')
-rw-r--r--src/gizmo/wasp-tcg.el28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/gizmo/wasp-tcg.el b/src/gizmo/wasp-tcg.el
index 081a777b..17ffc129 100644
--- a/src/gizmo/wasp-tcg.el
+++ b/src/gizmo/wasp-tcg.el
@@ -272,5 +272,33 @@
(let ((msg (format "%s" (w/tcg-encode-card user userid c))))
(w/binary-pub "overlay tcg generate" msg)))))
+;;;; Dueling
+(defun w/tcg-random-card-for (uid k)
+ "Retrieve a random card for UID and pass it to K."
+ (let ((inv (s-concat "tcg-inventory:" uid)))
+ (w/db-llen inv
+ (lambda (len)
+ (w/db-lindex inv (random len)
+ (lambda (uuid)
+ (request (format "https://api.colonq.computer/api/tcg/card/%s.png" uuid)
+ :method "GET"
+ :encoding 'no-conversion
+ :success
+ (cl-function
+ (lambda (&key data &allow-other-keys)
+ (funcall k (encode-coding-string data 'no-conversion)))))))))))
+
+(defun w/tcg-duel (user1 user2)
+ "Start a duel between USER1 and USER2."
+ (w/async-all
+ (w/user-id-from-name user1)
+ (w/user-id-from-name user2)
+ (lambda (uid1 uid2)
+ (w/async-all
+ (w/tcg-random-card-for uid1)
+ (w/tcg-random-card-for uid2)
+ (lambda (card1 card2)
+ (w/overlay-duel user1 user2 card1 card2))))))
+
(provide 'wasp-tcg)
;;; wasp-tcg.el ends here