#: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 new-conn-handler
(make-default-room-conn-handler default-room))
(define gm
- (hive-create-actor-gimmie* hive <game-master> "gm"
- #:new-conn-handler new-conn-handler))
+ (bootstrap-actor-gimmie* hive <game-master> "gm"
+ #:new-conn-handler new-conn-handler))
+ (define repl-manager
+ (bootstrap-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)))
+ (run-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))))