From 4f570fcd18afad63ac04dc49cf7eab2fe90a0c79 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sat, 16 Jul 2016 16:15:19 -0400 Subject: [PATCH] Support current-ground-dataspace for syndicate-gl. --- examples/platformer/main.rkt | 12 ++++---- racket/syndicate-gl/2d.rkt | 10 ++++--- racket/syndicate-gl/examples/basic.rkt | 28 +++++++++---------- .../scribblings/syndicate-gl.scrbl | 12 ++++---- 4 files changed, 32 insertions(+), 30 deletions(-) diff --git a/examples/platformer/main.rkt b/examples/platformer/main.rkt index 918a836..7984758 100644 --- a/examples/platformer/main.rkt +++ b/examples/platformer/main.rkt @@ -1029,10 +1029,8 @@ (define game-level 3) ;; used to specify meta-level to reach external I/O -(2d-dataspace #:width 600 #:height 400 - (spawn-keyboard-integrator) - (spawn-scene-manager) - (spawn-dataspace (spawn-score-keeper) - (spawn-level-spawner 0) - ) - ) +((2d-dataspace #:width 600 #:height 400) + (spawn-keyboard-integrator) + (spawn-scene-manager) + (spawn-dataspace (spawn-score-keeper) + (spawn-level-spawner 0))) diff --git a/racket/syndicate-gl/2d.rkt b/racket/syndicate-gl/2d.rkt index 93c6fdf..be064d8 100644 --- a/racket/syndicate-gl/2d.rkt +++ b/racket/syndicate-gl/2d.rkt @@ -387,9 +387,10 @@ (super-new (style '(gl no-autoclear))))) -(define (2d-dataspace #:width [width #f] - #:height [height #f] - . boot-actions) +(define ((2d-dataspace #:width [width #f] + #:height [height #f] + #:exit? [exit? #t]) + . boot-actions) (collect-garbage 'incremental) (collect-garbage 'major) (define frame (new frame% @@ -404,4 +405,5 @@ (error '2d-dataspace "OpenGL context failed to initialize")) (send c focus) (send frame show #t) - (yield 'wait)) + (yield 'wait) + (when exit? (exit 0))) diff --git a/racket/syndicate-gl/examples/basic.rkt b/racket/syndicate-gl/examples/basic.rkt index a3b6e1a..e5b6e3e 100644 --- a/racket/syndicate-gl/examples/basic.rkt +++ b/racket/syndicate-gl/examples/basic.rkt @@ -1,7 +1,6 @@ -#lang racket +#lang syndicate/actor -(require (only-in syndicate seal)) -(require syndicate/actor) +(require racket/set) (require 2htdp/image) (require "../2d.rkt") @@ -53,14 +52,15 @@ (define fps (/ counter (/ sim-time-ms 1000.0))) (i (text (format "~a fps" fps) 22 "black"))))))) -(2d-dataspace (spawn-keyboard-integrator) - (spawn-background) - ;; (spawn-frame-counter) - (spawn-player-avatar) - (actor (react (assert (simple-sprite 0 50 50 50 50 (circle 50 "solid" "orange")) - #:meta-level 1) - (assert (simple-sprite -1 60 60 50 50 (circle 50 "solid" "green")) - #:meta-level 1))) - (actor (until (message (key-event #\q #t _) #:meta-level 1)) - (assert! 'stop #:meta-level 1))) -(exit 0) +(spawn-keyboard-integrator) +(spawn-background) +;; (spawn-frame-counter) +(spawn-player-avatar) +(actor (react (assert (simple-sprite 0 50 50 50 50 (circle 50 "solid" "orange")) + #:meta-level 1) + (assert (simple-sprite -1 60 60 50 50 (circle 50 "solid" "green")) + #:meta-level 1))) +(actor (until (message (key-event #\q #t _) #:meta-level 1)) + (assert! 'stop #:meta-level 1)) + +(module+ main (current-ground-dataspace (2d-dataspace))) diff --git a/racket/syndicate-gl/scribblings/syndicate-gl.scrbl b/racket/syndicate-gl/scribblings/syndicate-gl.scrbl index 93c0e11..8307503 100644 --- a/racket/syndicate-gl/scribblings/syndicate-gl.scrbl +++ b/racket/syndicate-gl/scribblings/syndicate-gl.scrbl @@ -13,14 +13,16 @@ @section{Creating Dataspaces} -@defproc[(2d-dataspace [#:width width number? 640] - [#:height height number? 480] - [boot-actions action?] ...) +@defproc[((2d-dataspace [#:width width number? 640] + [#:height height number? 480] + [#:exit? exit? boolean? #t]) + [boot-actions action?] ...) any/c]{ Create and run a @racket[frame%] with dimensions @racket[width] and @racket[height] controlled by a Syndicate dataspace. The dataspace is -initialized with the given @racket[boot-actions]. Runs (blocking) while the -@racket[frame%] is active. +initialized with the given @racket[boot-actions]. Runs (blocking) +while the @racket[frame%] is active. If @racket[exit?] is true, calls +@racket[(exit 0)] once the dataspace exits. } @defproc[(spawn-keyboard-integrator