diff options
Diffstat (limited to 'engine.scm')
| -rw-r--r-- | engine.scm | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -10,6 +10,8 @@ defstruct downstroke-world downstroke-input + downstroke-physics + downstroke-tween downstroke-assets downstroke-renderer) @@ -39,6 +41,26 @@ ;; ── Public constructor wrapper ───────────────────────────────────────────── ;; Wraps the auto-generated make-game (renamed to make-game*) with default values +;; ── Default engine update ──────────────────────────────────────────────── +;; Standard physics pipeline: tweens → acceleration → gravity → velocity → +;; tile collisions → ground detection → entity collisions → group sync. +;; Runs automatically each frame unless overridden or disabled. + +(define (default-engine-update game dt) + (let ((scene (game-scene game))) + (when scene + (let* ((scene (scene-map-entities scene (cut step-tweens <> scene dt))) + (scene (scene-map-entities scene (cut apply-acceleration <> scene dt))) + (scene (scene-map-entities scene (cut apply-gravity <> scene dt))) + (scene (scene-map-entities scene (cut apply-velocity-x <> scene dt))) + (scene (scene-map-entities scene (cut resolve-tile-collisions-x <> scene dt))) + (scene (scene-map-entities scene (cut apply-velocity-y <> scene dt))) + (scene (scene-map-entities scene (cut resolve-tile-collisions-y <> scene dt))) + (scene (scene-map-entities scene (cut detect-on-solid <> scene dt))) + (scene (scene-transform-entities scene resolve-entity-collisions)) + (scene (scene-transform-entities scene sync-groups))) + (game-scene-set! game scene))))) + (define (make-game #!key (title "Downstroke Game") (width 640) (height 480) @@ -192,6 +214,12 @@ (game-input-config game)))) (game-input-set! game input) (unless (input-held? input 'quit) + (let ((scene (game-scene game))) + (when scene + (let ((eu (scene-engine-update scene))) + (cond + ((procedure? eu) (eu game dt)) + ((not eu) (default-engine-update game dt)))))) (receive (update-fn render-fn) (resolve-hooks game) (when update-fn (update-fn game dt)) (when (game-scene game) |
