X-Git-Url: https://jxself.org/git/?p=mudsync.git;a=blobdiff_plain;f=mudsync%2Fplayer.scm;h=fece716dbe415d45f0073dedb8e6cfa70eeaa384;hp=340fa3d7c16a0cfec98a630382ff38fcea20b4fb;hb=136ce3b725c83af0b7e8be632e943de6b07b65c5;hpb=c3e788ae7726f7e52a62ffeb30254bfa0f0da7cb diff --git a/mudsync/player.scm b/mudsync/player.scm index 340fa3d..fece716 100644 --- a/mudsync/player.scm +++ b/mudsync/player.scm @@ -17,13 +17,17 @@ ;;; along with Mudsync. If not, see . (define-module (mudsync player) + #:use-module (mudsync command) #:use-module (mudsync gameobj) #:use-module (mudsync game-master) + #:use-module (mudsync parser) #:use-module (8sync systems actors) #:use-module (8sync agenda) #:use-module (ice-9 format) #:use-module (oop goops) - #:export ()) + #:use-module (srfi srfi-1) + #:export ( + player-self-commands)) ;;; Players ;;; ======= @@ -58,6 +62,17 @@ (define-mhandler (player-handle-input player message input) + (define split-input (split-verb-and-rest input)) + (define input-verb (pk 'input-verb (car split-input))) + (define input-rest (pk 'input-rest (cdr split-input))) + + (define command-candidates + (pk 'candidates + (player-gather-command-handlers player input-verb))) + + (define winner + (pk 'winner (find-command-winner command-candidates input-rest))) + (<- player (gameobj-gm player) 'write-home #:text (format #f "<~a>: ~s\n" @@ -80,3 +95,6 @@ (format #f "**~a**\n~a\n" room-name room-desc)) (<- player (gameobj-gm player) 'write-home #:text message-text)) + + +