Fix some slowness; clock emitters emit immediately.
This commit is contained in:
parent
984ea4df67
commit
ff242fd1a5
2 changed files with 17 additions and 10 deletions
25
game.scm
25
game.scm
|
@ -102,18 +102,25 @@
|
||||||
(set! *snapshots* older-snapshots)
|
(set! *snapshots* older-snapshots)
|
||||||
(media-play audio:undo))))
|
(media-play audio:undo))))
|
||||||
|
|
||||||
(define (sort lst <=)
|
(define (sort lst compare)
|
||||||
(match lst
|
(match lst
|
||||||
(() '())
|
(() '())
|
||||||
((_) lst)
|
((_) lst)
|
||||||
((pivot . rest)
|
(_
|
||||||
(let lp ((left '()) (right '()) (pivot pivot) (rest rest))
|
;; Insertion sort because I am lazy!
|
||||||
(match rest
|
(let ((vec (list->vector lst)))
|
||||||
(() (append (sort left <=) (list pivot) (sort right <=)))
|
(let outer ((i 1))
|
||||||
((x . rest)
|
(when (< i (vector-length vec))
|
||||||
(if (<= x pivot)
|
(let inner ((j i))
|
||||||
(lp (append left (list x)) right pivot rest)
|
(when (> j 0)
|
||||||
(lp left (append right (list x)) pivot rest))))))))
|
(let ((a (vector-ref vec j))
|
||||||
|
(b (vector-ref vec (1- j))))
|
||||||
|
(when (compare a b)
|
||||||
|
(vector-set! vec j b)
|
||||||
|
(vector-set! vec (1- j) a)
|
||||||
|
(inner (1- j))))))
|
||||||
|
(outer (1+ i))))
|
||||||
|
(vector->list vec)))))
|
||||||
|
|
||||||
(define (filter-map proc lst)
|
(define (filter-map proc lst)
|
||||||
(let lp ((lst lst))
|
(let lp ((lst lst))
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
(('pushed?) ($ pushed?))))
|
(('pushed?) ($ pushed?))))
|
||||||
|
|
||||||
(define (^clock-emitter bcom x y interval)
|
(define (^clock-emitter bcom x y interval)
|
||||||
(define timer (spawn ^cell 0))
|
(define timer (spawn ^cell -1))
|
||||||
(define position (vector x y 0))
|
(define position (vector x y 0))
|
||||||
(match-lambda*
|
(match-lambda*
|
||||||
(('type) 'emitter)
|
(('type) 'emitter)
|
||||||
|
|
Loading…
Add table
Reference in a new issue