From b99ada53b715def5492c7d04c0d327fa7048e5d3 Mon Sep 17 00:00:00 2001 From: Gene Pasquet Date: Sun, 5 Apr 2026 23:12:54 +0100 Subject: Complete implementation --- demo/topdown.scm | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) (limited to 'demo/topdown.scm') diff --git a/demo/topdown.scm b/demo/topdown.scm index 9bbaf08..b95ccc9 100644 --- a/demo/topdown.scm +++ b/demo/topdown.scm @@ -10,33 +10,24 @@ downstroke/input downstroke/physics downstroke/assets - downstroke/entity) + downstroke/entity + downstroke/scene-loader) (define *game* (make-game title: "Demo: Top-down Explorer" width: 600 height: 400 - preload: (lambda (game) - (game-asset-set! game 'tilemap - (load-tilemap "demo/assets/level-0.tmx"))) - create: (lambda (game) - (let* ((tm (game-asset game 'tilemap)) - (tex (sdl2:create-texture-from-surface - (game-renderer game) - (tileset-image (tilemap-tileset tm)))) + (let* ((scene (game-load-scene! game "demo/assets/level-0.tmx")) (player (list #:type 'player #:x 100 #:y 100 #:width 16 #:height 16 #:vx 0 #:vy 0 #:gravity? #f - #:tile-id 1))) - (game-scene-set! game - (make-scene - entities: (list player) - tilemap: tm - camera: (make-camera x: 0 y: 0) - tileset-texture: tex)))) + #:tile-id 1 + #:tags '(player))) + (_ (scene-add-entity scene player))) + (scene-camera-target-set! scene 'player))) update: (lambda (game dt) (let* ((input (game-input game)) @@ -52,8 +43,6 @@ (player (resolve-tile-collisions-x player tm)) (player (apply-velocity-y player)) (player (resolve-tile-collisions-y player tm))) - (camera-x-set! (scene-camera scene) (max 0 (- (entity-ref player #:x 0) 300))) - (camera-y-set! (scene-camera scene) (max 0 (- (entity-ref player #:y 0) 200))) (scene-entities-set! scene (list player)))))) (game-run! *game*) -- cgit v1.2.3