X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;ds=sidebyside;f=mudsync%2Frun-game.scm;h=9b7c1492778eb95292f9fbae7f06cb6820e2a773;hb=d45f1aca89f7f664137c16c0b6a3b39dc7445ffd;hp=ff58f23a91beadd32c95f2212f23110dc5ba1fea;hpb=a1f2eb03faa50232cee704a2ad710d26da918cba;p=mudsync.git diff --git a/mudsync/run-game.scm b/mudsync/run-game.scm index ff58f23..9b7c149 100644 --- a/mudsync/run-game.scm +++ b/mudsync/run-game.scm @@ -20,13 +20,13 @@ #: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 @@ -61,33 +61,33 @@ (define gm (hive-create-actor-gimmie* hive "gm" #:new-conn-handler new-conn-handler)) + (define repl-manager + (hive-create-actor* hive "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)) @@ -113,5 +113,5 @@ (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))))