diff options
| author | Gene Pasquet <dev@etenil.net> | 2026-04-05 23:12:54 +0100 |
|---|---|---|
| committer | Gene Pasquet <dev@etenil.net> | 2026-04-05 23:12:54 +0100 |
| commit | b99ada53b715def5492c7d04c0d327fa7048e5d3 (patch) | |
| tree | 9e94dbc8ff863ef09ef18f4be31fb45e085572a4 /demo | |
| parent | 027053b11a3a5d861ed2fa2db245388bd95ac246 (diff) | |
Complete implementation
Diffstat (limited to 'demo')
| -rw-r--r-- | demo/platformer.scm | 25 | ||||
| -rw-r--r-- | demo/sandbox.scm | 19 | ||||
| -rw-r--r-- | demo/shmup.scm | 3 | ||||
| -rw-r--r-- | demo/topdown.scm | 25 |
4 files changed, 21 insertions, 51 deletions
diff --git a/demo/platformer.scm b/demo/platformer.scm index d9276b8..2d30bea 100644 --- a/demo/platformer.scm +++ b/demo/platformer.scm @@ -11,7 +11,8 @@ downstroke/physics downstroke/assets downstroke/entity - downstroke/sound) + downstroke/sound + downstroke/scene-loader) (define *game* (make-game @@ -19,28 +20,20 @@ preload: (lambda (game) (init-audio!) - (load-sounds! '((jump . "demo/assets/jump.wav"))) - (game-asset-set! game 'tilemap - (load-tilemap "demo/assets/level-0.tmx"))) + (load-sounds! '((jump . "demo/assets/jump.wav")))) 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 50 #:width 16 #:height 16 #:vx 0 #:vy 0 #:gravity? #t #:on-ground? #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)) @@ -63,8 +56,6 @@ (player (apply-velocity-y player)) (player (resolve-tile-collisions-y player tm)) (player (detect-ground player tm))) - (let ((cam-x (max 0 (- (entity-ref player #:x 0) 300)))) - (camera-x-set! (scene-camera scene) cam-x)) (scene-entities-set! scene (list player)))))) (game-run! *game*) diff --git a/demo/sandbox.scm b/demo/sandbox.scm index 1be3968..ffc0cca 100644 --- a/demo/sandbox.scm +++ b/demo/sandbox.scm @@ -11,7 +11,8 @@ downstroke/input downstroke/physics downstroke/assets - downstroke/entity) + downstroke/entity + downstroke/scene-loader) (define *elapsed* 0) (define *respawn-interval* 10000) @@ -36,21 +37,9 @@ (make-game title: "Demo: Physics Sandbox" 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))))) - (game-scene-set! game - (make-scene - entities: (spawn-entities) - tilemap: tm - camera: (make-camera x: 0 y: 0) - tileset-texture: tex)))) + (let ((scene (game-load-scene! game "demo/assets/level-0.tmx"))) + (scene-entities-set! scene (spawn-entities)))) update: (lambda (game dt) (let* ((scene (game-scene game)) diff --git a/demo/shmup.scm b/demo/shmup.scm index ae7748d..19cc478 100644 --- a/demo/shmup.scm +++ b/demo/shmup.scm @@ -59,7 +59,8 @@ entities: (list (make-player)) tilemap: #f camera: (make-camera x: 0 y: 0) - tileset-texture: #f))) + tileset-texture: #f + camera-target: #f))) update: (lambda (game dt) (let* ((input (game-input game)) 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*) |
