aboutsummaryrefslogtreecommitdiff
path: root/input.scm
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2026-04-08 01:05:50 +0100
committerGene Pasquet <dev@etenil.net>2026-04-08 01:05:50 +0100
commit995342fb74fdd1ba5aeaa172a428538e7dd0dcdc (patch)
tree82a60034eaa097191d360fe07e4ef3a52dae9c2a /input.scm
parent0c3a700aa94a0256c5e5b1a14819f10b3d3e869b (diff)
Code cleanup
Diffstat (limited to 'input.scm')
-rw-r--r--input.scm24
1 files changed, 11 insertions, 13 deletions
diff --git a/input.scm b/input.scm
index 94b29ed..eaaade4 100644
--- a/input.scm
+++ b/input.scm
@@ -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