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)
|
||||
(media-play audio:undo))))
|
||||
|
||||
(define (sort lst <=)
|
||||
(define (sort lst compare)
|
||||
(match lst
|
||||
(() '())
|
||||
((_) lst)
|
||||
((pivot . rest)
|
||||
(let lp ((left '()) (right '()) (pivot pivot) (rest rest))
|
||||
(match rest
|
||||
(() (append (sort left <=) (list pivot) (sort right <=)))
|
||||
((x . rest)
|
||||
(if (<= x pivot)
|
||||
(lp (append left (list x)) right pivot rest)
|
||||
(lp left (append right (list x)) pivot rest))))))))
|
||||
(_
|
||||
;; Insertion sort because I am lazy!
|
||||
(let ((vec (list->vector lst)))
|
||||
(let outer ((i 1))
|
||||
(when (< i (vector-length vec))
|
||||
(let inner ((j i))
|
||||
(when (> j 0)
|
||||
(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)
|
||||
(let lp ((lst lst))
|
||||
|
|
|
@ -115,7 +115,7 @@
|
|||
(('pushed?) ($ pushed?))))
|
||||
|
||||
(define (^clock-emitter bcom x y interval)
|
||||
(define timer (spawn ^cell 0))
|
||||
(define timer (spawn ^cell -1))
|
||||
(define position (vector x y 0))
|
||||
(match-lambda*
|
||||
(('type) 'emitter)
|
||||
|
|
Loading…
Add table
Reference in a new issue