moving between rooms nearly works
authorChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 4 May 2016 02:44:01 +0000 (21:44 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Wed, 4 May 2016 02:44:01 +0000 (21:44 -0500)
mudsync/game-master.scm
mudsync/player.scm
mudsync/room.scm

index 3583f95662cc68a25abb72f8ddeaa4d82f689d9b..595a9032ee391b9dc1b29dc6e4b361750490ca92 100644 (file)
         (let ((room
                (apply create-actor* gm room-class "room"
                       #:gm (actor-id gm)
         (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)
                       room-args)))
           ;; register the room
           (hash-set! (gm-room-dir gm) room-symbol room)
index 63af65e77a8f84071f5780cfd486f6a5fb183717..3aa22873a257155d994c5aced4310f12738e3060 100644 (file)
@@ -38,7 +38,8 @@
 (define player-actions
   (build-actions
    (init (wrap-apply player-init!))
 (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
 
 (define player-actions*
   (append player-actions
      (<- player (gameobj-gm player) 'write-home
          #:text "Huh?\n"))))
 
      (<- 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
 
 
 ;;; player methods
 
index 1a898cc5262347c485487556dca357135a5a6d8a..4e5fd9e9e23909303b0fba8cbeed342bbe2741cc 100644 (file)
   #:use-module (8sync systems actors)
   #:use-module (8sync agenda)
   #:use-module (oop goops)
   #:use-module (8sync systems actors)
   #:use-module (8sync agenda)
   #:use-module (oop goops)
+  #:use-module (srfi srfi-1)
   #:export (<room>
             room-actions
             room-actions*
 
             <exit>))
 
   #:export (<room>
             room-actions
             room-actions*
 
             <exit>))
 
-;;; Rooms
+\f
+;;; Exits
 ;;; =====
 
 (define-class <exit> ()
 ;;; =====
 
 (define-class <exit> ()
                            #:optional (target-actor (actor-id actor)))
   ((slot-ref exit 'traverse-check) exit actor target-actor))
 
                            #:optional (target-actor (actor-id actor)))
   ((slot-ref exit 'traverse-check) exit actor target-actor))
 
+
+\f
+;;; Rooms
+;;; =====
+
 (define %room-contain-commands
   (list
    (loose-direct-command "look" 'cmd-look-at)
 (define %room-contain-commands
   (list
    (loose-direct-command "look" 'cmd-look-at)
@@ -70,6 +77,7 @@
 (define-class <room> (<gameobj>)
   ;; A list of <exit>
   (exits #:init-value '()
 (define-class <room> (<gameobj>)
   ;; A list of <exit>
   (exits #:init-value '()
+         #:init-keyword #:exits
          #:getter room-exits)
 
   (container-commands
          #:getter room-exits)
 
   (container-commands
@@ -84,7 +92,8 @@
 (define room-actions
   (build-actions
    ;; desc == description
 (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))
 
 (define room-actions*
   (append room-actions gameobj-actions))
@@ -106,3 +115,15 @@ claim to point to."
 
    (room-exits room)))
 
 
    (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")))
+