Level termination monitor

This commit is contained in:
Tony Garnock-Jones 2015-10-26 22:04:06 -04:00
parent c9f984a023
commit 3fef18c711
1 changed files with 19 additions and 0 deletions

View File

@ -674,6 +674,24 @@
(sub (position player-id ? ?))
(assert (level-size level-size-vec))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LevelTerminationMonitor
(define (spawn-level-termination-monitor)
(spawn (lambda (e s)
(match e
[(? patch/removed?)
(log-info "Player died! Terminating level.")
(quit)]
[(message (at-meta (level-completed)))
(log-info "Level completed! Terminating level.")
(quit)]
[_ #f]))
(void)
(sub (game-piece-configuration player-id ? ? ?))
(sub (level-completed) #:meta-level 1)
(assert (level-running) #:meta-level 1)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; LevelSpawner
@ -691,6 +709,7 @@
(spawn-display-controller level-size-vec)
(spawn-physics-engine)
(spawn-player-avatar initial-player-x initial-player-y)
(spawn-level-termination-monitor)
actions))
(define (spawn-numbered-level level-number)