From 3fef18c71146f48a36503faae9f265ab9e704a26 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 26 Oct 2015 22:04:06 -0400 Subject: [PATCH] Level termination monitor --- examples/platformer/game.rkt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/examples/platformer/game.rkt b/examples/platformer/game.rkt index e63f17e..3afd09d 100644 --- a/examples/platformer/game.rkt +++ b/examples/platformer/game.rkt @@ -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)