From: Christopher Allan Webber Date: Mon, 2 May 2016 18:45:44 +0000 (-0500) Subject: import player correctly, pass off input correctly X-Git-Tag: fosdem-2017~194 X-Git-Url: https://jxself.org/git/?a=commitdiff_plain;h=c3e788ae7726f7e52a62ffeb30254bfa0f0da7cb;p=mudsync.git import player correctly, pass off input correctly --- diff --git a/mudsync/game-master.scm b/mudsync/game-master.scm index bb8756a..f839931 100644 --- a/mudsync/game-master.scm +++ b/mudsync/game-master.scm @@ -18,7 +18,6 @@ (define-module (mudsync game-master) #:use-module (mudsync room) - #:use-module (mudsync player) #:use-module (mudsync networking) #:use-module (8sync systems actors) #:use-module (8sync agenda) @@ -141,7 +140,16 @@ "Handle input from a client." (define client-id (message-ref message 'client)) (define input (message-ref message 'data)) - (format #t "From ~s: ~s\n" client-id input) + ;; Look up player + (define player (hash-ref (gm-client-dir actor) client-id)) + + ;; debugging + (format #t "DEBUG: From ~s: ~s\n" client-id input) + + (<- actor player 'handle-input + #:input input) + + ;; TODO: Remove this shortly (<- actor (gm-network-manager actor) 'send-to-client #:client client-id #:data "Thanks, we got it!\n")) @@ -184,21 +192,21 @@ with an anonymous persona" (let ((count 0)) (lambda (gm client-id) - (define guest-name (string-append "Guest-" + (set! count (+ count 1)) + (let* ((guest-name (string-append "Guest-" (number->string count))) - (define room-id - (hash-ref (gm-room-dir gm) default-room)) - ;; create and register the player - (define player - (create-actor* gm "player" - #:username guest-name - #:gm (actor-id gm) - #:client client-id)) - - ;; Register the player in our database of players -> connections - (gm-register-client! gm client-id player) - ;; Dump the player into the default room - (<-wait gm player 'set-loc! #:id room-id) - ;; Initialize the player - (<- gm player 'init)))) + (room-id + (hash-ref (gm-room-dir gm) default-room)) + ;; create and register the player + (player + (create-actor* gm (@@ (mudsync player) ) "player" + #:username guest-name + #:gm (actor-id gm) + #:client client-id))) + ;; Register the player in our database of players -> connections + (gm-register-client! gm client-id player) + ;; Dump the player into the default room + (<-wait gm player 'set-loc! #:id room-id) + ;; Initialize the player + (<- gm player 'init))))) diff --git a/mudsync/player.scm b/mudsync/player.scm index 42359bd..340fa3d 100644 --- a/mudsync/player.scm +++ b/mudsync/player.scm @@ -18,6 +18,7 @@ (define-module (mudsync player) #:use-module (mudsync gameobj) + #:use-module (mudsync game-master) #:use-module (8sync systems actors) #:use-module (8sync agenda) #:use-module (ice-9 format) @@ -39,9 +40,11 @@ (message-handler #:init-value + ;; @@: We're gonna need action inheritance real awful soon, huh? (make-action-dispatch (set-loc! (wrap-apply player-set-loc!)) - (init (wrap-apply player-init!))))) + (init (wrap-apply player-init!)) + (handle-input (wrap-apply player-handle-input))))) ;;; player message handlers @@ -53,6 +56,15 @@ (define-mhandler (player-init! player message) (player-look-around player)) + +(define-mhandler (player-handle-input player message input) + (<- player (gameobj-gm player) 'write-home + #:text + (format #f "<~a>: ~s\n" + (player-username player) + input))) + + ;;; player methods (define (player-look-around player)