summaryrefslogtreecommitdiff
path: root/src/gizmo
diff options
context:
space:
mode:
Diffstat (limited to 'src/gizmo')
-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