aboutsummaryrefslogtreecommitdiff
path: root/tests/engine-test.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/engine-test.scm')
-rw-r--r--tests/engine-test.scm25
1 files changed, 22 insertions, 3 deletions
diff --git a/tests/engine-test.scm b/tests/engine-test.scm
index 67b9942..99bb12f 100644
--- a/tests/engine-test.scm
+++ b/tests/engine-test.scm
@@ -39,7 +39,13 @@
;; --- Entity module (mock minimal structs) ---
(module downstroke/entity *
- (import scheme (chicken base)))
+ (import scheme (chicken base))
+ (define (entity-ref entity key #!optional (default #f))
+ (let loop ((plist entity))
+ (cond
+ ((null? plist) (if (procedure? default) (default) default))
+ ((eq? (car plist) key) (cadr plist))
+ (else (loop (cddr plist)))))))
(import downstroke/entity)
;; --- Input module (mock) ---
@@ -74,8 +80,20 @@
;; --- World module (mock) ---
(module downstroke/world *
(import scheme (chicken base) defstruct)
+ (import downstroke/entity)
(defstruct camera x y)
- (defstruct scene entities tilemap camera tileset-texture))
+ (defstruct scene entities tilemap camera tileset-texture camera-target)
+ ;; Mock camera-follow! - just clamps camera position
+ (define (camera-follow! camera entity viewport-w viewport-h)
+ (camera-x-set! camera (max 0 (- (entity-ref entity #:x 0) (/ viewport-w 2))))
+ (camera-y-set! camera (max 0 (- (entity-ref entity #:y 0) (/ viewport-h 2)))))
+ ;; Mock scene-find-tagged - finds first entity with matching tag
+ (define (scene-find-tagged scene tag)
+ (let loop ((entities (scene-entities scene)))
+ (cond
+ ((null? entities) #f)
+ ((member tag (entity-ref (car entities) #:tags '())) (car entities))
+ (else (loop (cdr entities)))))))
(import downstroke/world)
;; --- Real deps ---
@@ -164,7 +182,8 @@
(scene (make-scene entities: '()
tilemap: #f
camera: cam
- tileset-texture: #f))
+ tileset-texture: #f
+ camera-target: #f))
(g (make-game)))
(game-scene-set! g scene)
(test-equal "returns scene camera"