X-Git-Url: https://jxself.org/git/?p=mudsync.git;a=blobdiff_plain;f=mudsync%2Fplayer.scm;h=d2fc76dd64d1cbb15a4cf079bb3c9de8317761e9;hp=6e4be5738b2f289ed93decb95a258f2df22f0073;hb=7e11c67b59dc07a46576b2acaa4657ee533df7d5;hpb=2d7173d04d4b01f4480ec700c6419407232ef1bb;ds=sidebyside diff --git a/mudsync/player.scm b/mudsync/player.scm index 6e4be57..d2fc76d 100644 --- a/mudsync/player.scm +++ b/mudsync/player.scm @@ -40,7 +40,8 @@ (init (wrap-apply player-init)) (handle-input (wrap-apply player-handle-input)) (tell (wrap-apply player-tell)) - (disconnect-self-destruct (wrap-apply player-disconnect-self-destruct)))) + (disconnect-self-destruct (wrap-apply player-disconnect-self-destruct)) + (cmd-inventory (wrap-apply player-cmd-inventory)))) (define player-actions* (append player-actions @@ -49,17 +50,22 @@ (define player-dispatcher (simple-dispatcher player-actions*)) +(define player-self-commands + (list + (empty-command "inventory" 'cmd-inventory) + ;; aliases... + ;; @@: Should use an "alias" system for common aliases? + (empty-command "inv" 'cmd-inventory) + (empty-command "i" 'cmd-inventory))) + (define-class () (username #:init-keyword #:username #:getter player-username) - (self-commands - #:init-value '() - #:getter player-self-commands) + (self-commands #:init-value player-self-commands) (message-handler #:init-value - ;; @@: We're gonna need action inheritance real awful soon, huh? (wrap-apply player-dispatcher))) @@ -102,6 +108,24 @@ (slot-ref player 'name)))) (gameobj-self-destruct player)) +(define-mhandler (player-cmd-inventory player message) + "Display the inventory for the player" + (define inv-names + (map + (lambda (inv-item) + (message-ref (<-wait player inv-item 'get-name) + 'val)) + (gameobj-occupants player))) + (define text-to-show + (if (eq? inv-names '()) + "You aren't carrying anything.\n" + (apply string-append + "You are carrying:\n" + (map (lambda (item-name) + (string-append " * " item-name "\n")) + inv-names)))) + (<- player (actor-id player) 'tell #:text text-to-show)) + ;;; Command handling ;;; ================ @@ -159,7 +183,11 @@ ;; Append our own command handlers (define our-commands - (player-self-commands player)) + (filter + (lambda (cmd) + (equal? (command-verbs cmd) verb)) + (val-or-run + (slot-ref player 'self-commands)))) ;; TODO: Append our inventory's relevant command handlers