diff options
author | David Thompson <dthompson2@worcester.edu> | 2014-02-06 20:49:28 -0500 |
---|---|---|
committer | David Thompson <dthompson2@worcester.edu> | 2014-02-06 20:49:28 -0500 |
commit | 21ff408c45685afacd3c0fffb3f81c46e9b00874 (patch) | |
tree | 11d3575ae00255a1319273ece6d94040d31795dc /2d/time.scm | |
parent | c83760250f25373cd5f66ca096b5a762da82d072 (diff) |
Remove dynamic scoping of agendas.
* 2d/agenda.scm: (*global-agenda*, current-agenda, with-agenda): Delete.
(agenda?, agenda-time): Export.
(schedule-every, schedule-each): Rename schedule-every to
schedule-each.
(schedule-next): Delete.
* 2d/game.scm: (game-agenda): New variable.
(update): Tick game-agenda.
* 2d/repl.scm: Use new agenda API.
* 2d/sprite.scm: Use new agenda API.
* 2d/time.scm: (time-every, time-each, time-delay): Change signature and
use new agenda API.
* examples/coroutine.scm: Use new agenda API.
* examples/particles.scm: Use new agenda API.
Diffstat (limited to '2d/time.scm')
-rw-r--r-- | 2d/time.scm | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/2d/time.scm b/2d/time.scm index f39bc0e..e17be49 100644 --- a/2d/time.scm +++ b/2d/time.scm @@ -29,27 +29,26 @@ time-each time-delay)) -(define (time-every ticks value) - "Create a new signal that emits VALUE every TICKS agenda updates. VALUE may -be a signal, in which case the stored value of the signal will be -emitted." +(define (time-every agenda delay value) + "Create a new signal that emits VALUE every DELAY ticks of AGENDA. +VALUE may be a signal, in which case the stored value of the signal +will be emitted." (let ((ticker (make-root-signal (signal-ref-maybe value)))) - (schedule-interval - (lambda () - (signal-set! ticker (signal-ref-maybe value))) - ticks) + (define (tick) + (signal-set! ticker (signal-ref-maybe value))) + (schedule-interval agenda tick delay) ticker)) -(define (time-each value) +(define (time-each agenda value) "Create a new signal that emits VALUE every agenda update." - (time-every 1 value)) + (time-every agenda 1 value)) -(define (time-delay ticks signal) +(define (time-delay agenda delay signal) "Create a new signal that delays propagation of values received from -SIGNAL by TICKS agenda updates." +SIGNAL by DELAY ticks of AGENDA." (make-signal (signal-ref signal) (colambda (self from) (let ((value (signal-ref from))) - (wait ticks) + (wait agenda delay) (signal-set! self value))) (list signal))) |