aboutsummaryrefslogtreecommitdiff
path: root/demo/platformer.scm
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2026-04-08 07:08:54 +0100
committerGene Pasquet <dev@etenil.net>2026-04-08 07:08:54 +0100
commitafc30a12e25215ff5e9226c3b4f8fd127d9a4d68 (patch)
treef736393fb8ebfd8982a4b79310a08c57ee430ff0 /demo/platformer.scm
parent9e8b75f9949259ef01942cd3717b79b044efddf7 (diff)
Move the engine-update to the scene
Diffstat (limited to 'demo/platformer.scm')
-rw-r--r--demo/platformer.scm35
1 files changed, 13 insertions, 22 deletions
diff --git a/demo/platformer.scm b/demo/platformer.scm
index 3bad9bd..1a24a8f 100644
--- a/demo/platformer.scm
+++ b/demo/platformer.scm
@@ -1,14 +1,11 @@
(import scheme
(chicken base)
(chicken process-context)
- (only srfi-197 chain)
(prefix sdl2 "sdl2:")
(prefix sdl2-ttf "ttf:")
(prefix sdl2-image "img:")
downstroke-engine
downstroke-world
- downstroke-tilemap
- downstroke-renderer
downstroke-input
downstroke-physics
downstroke-assets
@@ -31,19 +28,14 @@
((input-held? input 'right) 3)
(else 0)))
-(define (update-player player input tm)
- (let ((jump? (input-pressed? input 'a)))
- (when (and jump? (entity-ref player #:on-ground? #f))
- (play-sound 'jump))
- (chain (entity-set player #:vx (player-vx input))
- (apply-jump _ jump?)
- (apply-acceleration _)
- (apply-gravity _)
- (apply-velocity-x _)
- (resolve-tile-collisions-x _ tm)
- (apply-velocity-y _)
- (resolve-tile-collisions-y _ tm)
- (detect-on-solid _ tm))))
+(define (update-player player input)
+ (let* ((jump? (and (input-pressed? input 'a)
+ (entity-ref player #:on-ground? #f)))
+ (player (entity-set player #:vx (player-vx input))))
+ (when jump? (play-sound 'jump))
+ (if jump?
+ (entity-set player #:ay (- *jump-force*))
+ player)))
(define *game*
(make-game
@@ -55,16 +47,15 @@
(load-sounds! '((jump . "demo/assets/jump.wav"))))
create: (lambda (game)
- (game-scene-set! game
- (chain (game-load-scene! game "demo/assets/level-0.tmx")
- (scene-add-entity _ (make-player))
- (update-scene _ camera-target: 'player))))
+ (let* ((s0 (game-load-scene! game "demo/assets/level-0.tmx"))
+ (s1 (scene-add-entity s0 (make-player)))
+ (s2 (update-scene s1 camera-target: 'player)))
+ (game-scene-set! game s2)))
update: (lambda (game dt)
(let* ((input (game-input game))
(scene (game-scene game))
- (tm (scene-tilemap scene))
- (player (update-player (car (scene-entities scene)) input tm)))
+ (player (update-player (car (scene-entities scene)) input)))
(game-scene-set! game
(update-scene scene entities: (list player)))))))