Use new <repl-manager>
[mudsync.git] / mudsync / run-game.scm
index ff58f23a91beadd32c95f2212f23110dc5ba1fea..9b7c1492778eb95292f9fbae7f06cb6820e2a773 100644 (file)
   #:use-module (mudsync game-master)
   #:use-module (8sync agenda)
   #:use-module (8sync repl)
-  #:use-module (8sync systems actors)
-  #:use-module (8sync systems actors debug)
+  #:use-module (8sync actors)
+  #:use-module (8sync debug)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 receive)
   #:use-module (ice-9 q)
   #:export (run-demo
-            inject-special!
+            do-inject-special!
             make-special-injector
 
             ;; Debug stuff, might go away
   (define gm
     (hive-create-actor-gimmie* hive <game-master> "gm"
                                #:new-conn-handler new-conn-handler))
+  (define repl-manager
+    (hive-create-actor* hive <repl-manager> "repl"))
+
   (define initial-tasks
     (list (bootstrap-message hive (actor-id gm) 'init-world
-                             #:game-spec game-spec)))
+                             #:game-spec game-spec)
+          (apply bootstrap-message hive repl-manager 'init
+                 (if (string? repl-server)
+                     `(#:path ,repl-server)
+                     '()))))
+
   (define agenda
     (make-agenda #:pre-unwind-handler print-error-and-continue
                  #:queue (list->q initial-tasks)))
 
   (set! %live-gm gm)
   (set! %live-hive hive)
+
   (receive (post-run-hook gameobj-injector)
       (make-special-injector agenda hive (actor-id gm))
     ;; Set up injector for live hacking
     (set! inject-gameobj! gameobj-injector)
 
-    ;; Set up REPL sever
-    (cond
-     ;; If repl-server is an integer, we'll use that as the port
-     ((integer? repl-server)
-      (spawn-and-queue-repl-server! agenda repl-server))
-     (repl-server
-      (spawn-and-queue-repl-server! agenda)))
-
-    (start-agenda agenda
-                  #:post-run-hook post-run-hook)))
+    (start-agenda agenda #:post-run-hook post-run-hook)))
 
 
-(define (inject-special! queue hive gm-id game-spec special-symbol)
+(define (do-inject-special! queue hive gm-id game-spec special-symbol)
   (define gameobj-spec
     (or (find
          (lambda (entry) (eq? (car entry) special-symbol))
    (lambda (agenda)
      (queue-injected-tasks-on-agenda! agenda inject-queue))
    (lambda (game-spec special-symbol)
-     (inject-special! inject-queue hive gm-id
-                      game-spec special-symbol))))
+     (do-inject-special! inject-queue hive gm-id
+                         game-spec special-symbol))))