From 8c357c87019a70aabdfadb4c71e3b063251cff87 Mon Sep 17 00:00:00 2001 From: Christopher Allan Webber Date: Tue, 3 May 2016 21:44:01 -0500 Subject: [PATCH] moving between rooms nearly works --- mudsync/game-master.scm | 2 +- mudsync/player.scm | 7 ++++++- mudsync/room.scm | 25 +++++++++++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/mudsync/game-master.scm b/mudsync/game-master.scm index 3583f95..595a903 100644 --- a/mudsync/game-master.scm +++ b/mudsync/game-master.scm @@ -100,7 +100,7 @@ (let ((room (apply create-actor* gm room-class "room" #:gm (actor-id gm) - #:exits (map exit-from-spec room-exits) + #:exits (map exit-from-spec (pk 'dem-exits room-exits)) room-args))) ;; register the room (hash-set! (gm-room-dir gm) room-symbol room) diff --git a/mudsync/player.scm b/mudsync/player.scm index 63af65e..3aa2287 100644 --- a/mudsync/player.scm +++ b/mudsync/player.scm @@ -38,7 +38,8 @@ (define player-actions (build-actions (init (wrap-apply player-init!)) - (handle-input (wrap-apply player-handle-input)))) + (handle-input (wrap-apply player-handle-input)) + (tell (wrap-apply player-tell)))) (define player-actions* (append player-actions @@ -88,6 +89,10 @@ (<- player (gameobj-gm player) 'write-home #:text "Huh?\n")))) +(define-mhandler (player-tell player message text) + (<- player (gameobj-gm player) 'write-home + #:text text)) + ;;; player methods diff --git a/mudsync/room.scm b/mudsync/room.scm index 1a898cc..4e5fd9e 100644 --- a/mudsync/room.scm +++ b/mudsync/room.scm @@ -22,13 +22,15 @@ #:use-module (8sync systems actors) #:use-module (8sync agenda) #:use-module (oop goops) + #:use-module (srfi srfi-1) #:export ( room-actions room-actions* )) -;;; Rooms + +;;; Exits ;;; ===== (define-class () @@ -60,6 +62,11 @@ #:optional (target-actor (actor-id actor))) ((slot-ref exit 'traverse-check) exit actor target-actor)) + + +;;; Rooms +;;; ===== + (define %room-contain-commands (list (loose-direct-command "look" 'cmd-look-at) @@ -70,6 +77,7 @@ (define-class () ;; A list of (exits #:init-value '() + #:init-keyword #:exits #:getter room-exits) (container-commands @@ -84,7 +92,8 @@ (define room-actions (build-actions ;; desc == description - (wire-exits! (wrap-apply room-wire-exits!)))) + (wire-exits! (wrap-apply room-wire-exits!)) + (cmd-go (wrap-apply room-cmd-go)))) (define room-actions* (append room-actions gameobj-actions)) @@ -106,3 +115,15 @@ claim to point to." (room-exits room))) +(define-mhandler (room-cmd-go room message direct-obj) + (define exit + (find + (lambda (exit) + (equal? (exit-name exit) direct-obj)) + (pk 'later-exits (room-exits room)))) + (if exit + (<- room (message-from message) 'tell + #:text "Yeah you can go there...\n") + (<- room (message-from message) 'tell + #:text "I don't know where that is?\n"))) + -- 2.31.1