diff options
Diffstat (limited to 'input.scm')
| -rw-r--r-- | input.scm | 24 |
1 files changed, 11 insertions, 13 deletions
@@ -162,23 +162,21 @@ ((< vx 0) (entity-set entity #:facing -1)) (else entity))) +(define (compute-input-delta input-map held?) + (fold (lambda (entry acc) + (if (held? (car entry)) + (cons (+ (car acc) (cadr entry)) + (+ (cdr acc) (cddr entry))) + acc)) + '(0 . 0) + input-map)) + (define (apply-input-to-entity entity held?) (let ((input-map (entity-ref entity #:input-map #f))) (if (not input-map) entity - (let* ((delta (fold (lambda (entry acc) - (let* ((action (car entry)) - (d (cdr entry)) - (dvx (car d)) - (dvy (cdr d))) - (if (held? action) - (cons (+ (car acc) dvx) - (+ (cdr acc) dvy)) - acc))) - '(0 . 0) - input-map)) - (speed (entity-ref entity #:move-speed 1)) - (vx (* speed (car delta)))) + (let* ((delta (compute-input-delta input-map held?)) + (vx (* (entity-ref entity #:move-speed 1) (car delta)))) (set-facing-from-vx (entity-set entity #:vx vx) vx))))) ) ;; end module |
