diff options
Diffstat (limited to 'demo/platformer.scm')
| -rw-r--r-- | demo/platformer.scm | 35 |
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))))))) |
