Remove 2d-world-meta-level parameter in favour of explicit arguments

This commit is contained in:
Tony Garnock-Jones 2015-10-23 21:49:50 -04:00
parent 5409cebe88
commit 8083ddf890
1 changed files with 8 additions and 19 deletions

View File

@ -7,7 +7,6 @@
(struct-out scene) (struct-out scene)
(except-out (struct-out sprite) sprite) (except-out (struct-out sprite) sprite)
(rename-out [sprite <sprite>] [make-sprite sprite]) (rename-out [sprite <sprite>] [make-sprite sprite])
2d-world-meta-level
simple-sprite simple-sprite
update-scene update-scene
update-sprites update-sprites
@ -57,19 +56,9 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; TODO: Parameters don't work very well for this. We want it to be a (define (update-scene prelude postlude #:meta-level [meta-level 1])
;; local, relative idea -- some actors will engage at metalevel 1, (patch-seq (retract (scene ? ?) #:meta-level meta-level)
;; some at metalevel 2, and we would prefer to just be able to say (assert (scene (seal prelude) (seal postlude)) #:meta-level meta-level)))
;; (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 (2d-world-meta-level))
(assert (scene (seal prelude) (seal postlude)) #:meta-level (2d-world-meta-level))))
(define (make-sprite z instructions) (define (make-sprite z instructions)
(sprite z (seal instructions))) (sprite z (seal instructions)))
@ -79,21 +68,21 @@
(scale ,w ,h) (scale ,w ,h)
(texture ,i)))) (texture ,i))))
(define (update-sprites . ss) (define (update-sprites #:meta-level [meta-level 1] . ss)
(patch-seq* (cons (retract (sprite ? ?) #:meta-level (2d-world-meta-level)) (patch-seq* (cons (retract (sprite ? ?) #:meta-level meta-level)
(map (lambda (s) (assert s #:meta-level (2d-world-meta-level))) ss)))) (map (lambda (s) (assert s #:meta-level meta-level)) ss))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; KeyboardIntegrator. Integrates key-events into key-pressed assertions. ;; KeyboardIntegrator. Integrates key-events into key-pressed assertions.
(define (spawn-keyboard-integrator) (define (spawn-keyboard-integrator #:meta-level [meta-level 1])
(spawn (lambda (e s) (spawn (lambda (e s)
(match e (match e
[(message (at-meta (key-event code press? _))) [(message (at-meta (key-event code press? _)))
(transition (void) ((if press? assert retract) (key-pressed code)))] (transition (void) ((if press? assert retract) (key-pressed code)))]
[#f #f])) [#f #f]))
(void) (void)
(sub (key-event ? ? ?) #:meta-level (2d-world-meta-level)))) (sub (key-event ? ? ?) #:meta-level meta-level)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;