From 5409cebe8881de922840d8cc61a1d0c0589d550f Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 23 Oct 2015 21:11:33 -0400 Subject: [PATCH] Support 2d-world-meta-level parameter. TODO revisit parameterization --- prospect-gl/2d.rkt | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/prospect-gl/2d.rkt b/prospect-gl/2d.rkt index e546e66..343445b 100644 --- a/prospect-gl/2d.rkt +++ b/prospect-gl/2d.rkt @@ -7,6 +7,7 @@ (struct-out scene) (except-out (struct-out sprite) sprite) (rename-out [sprite ] [make-sprite sprite]) + 2d-world-meta-level simple-sprite update-scene update-sprites @@ -56,9 +57,19 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; TODO: Parameters don't work very well for this. We want it to be a +;; local, relative idea -- some actors will engage at metalevel 1, +;; some at metalevel 2, and we would prefer to just be able to say +;; (parameterize ((2d-world-meta-level N)) (spawn ...)), but we can't, +;; because parameterization *isn't lexical enough*. +;; +;; Perhaps the current-parameterization should be saved at spawn time? +;; +(define 2d-world-meta-level (make-parameter 1)) + (define (update-scene prelude postlude) - (patch-seq (retract (scene ? ?) #:meta-level 1) - (assert (scene (seal prelude) (seal postlude)) #:meta-level 1))) + (patch-seq (retract (scene ? ?) #:meta-level (2d-world-meta-level)) + (assert (scene (seal prelude) (seal postlude)) #:meta-level (2d-world-meta-level)))) (define (make-sprite z instructions) (sprite z (seal instructions))) @@ -69,8 +80,8 @@ (texture ,i)))) (define (update-sprites . ss) - (patch-seq* (cons (retract (sprite ? ?) #:meta-level 1) - (map (lambda (s) (assert s #:meta-level 1)) ss)))) + (patch-seq* (cons (retract (sprite ? ?) #:meta-level (2d-world-meta-level)) + (map (lambda (s) (assert s #:meta-level (2d-world-meta-level))) ss)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -82,7 +93,7 @@ (transition (void) ((if press? assert retract) (key-pressed code)))] [#f #f])) (void) - (sub (key-event ? ? ?) #:meta-level 1))) + (sub (key-event ? ? ?) #:meta-level (2d-world-meta-level)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;