diff options
author | Ricardo Wurmus <rekado@elephly.net> | 2023-11-06 12:06:11 +0100 |
---|---|---|
committer | Ricardo Wurmus <rekado@elephly.net> | 2023-11-06 12:07:41 +0100 |
commit | 0e8a214f8a6c46a98ec507369431c19b07e6244e (patch) | |
tree | a04964893aa47b66dbb0e2d5d0c0a78229e406ce | |
parent | 7aab15c3099be3d91a77227784644f7b0718aba6 (diff) |
Stop music in each scene's quit hook.
-rw-r--r-- | scenes/death.scm | 1 | ||||
-rw-r--r-- | scenes/game.scm | 29 | ||||
-rw-r--r-- | scenes/intro.scm | 23 |
3 files changed, 33 insertions, 20 deletions
diff --git a/scenes/death.scm b/scenes/death.scm index 3c1377e..21e18b2 100644 --- a/scenes/death.scm +++ b/scenes/death.scm @@ -140,7 +140,6 @@ quite short.")) (define (load-scene) (set! death-text (list-ref texts (random (length texts)))) - (source-stop) (source-play (make-source #:audio (asset-ref music) #:loop? #true)) diff --git a/scenes/game.scm b/scenes/game.scm index 2f6fc33..3e95fe5 100644 --- a/scenes/game.scm +++ b/scenes/game.scm @@ -82,15 +82,15 @@ map's positions layer." (define player-grid-x-offset 8) (define player-grid-y-offset 0) +(define *background-music* #false) (define (load-scene) - (source-stop) - (source-play - (make-source #:audio - (asset-ref music) - #:loop? #false ; TODO: loops only first chunk! - )) + (set! *background-music* + (make-source #:audio (asset-ref music) + #:loop? #true)) + (source-play *background-music*) + (set! *player* (lorenzo #:start-position (location "player"))) (update-animated-sprite *player*) @@ -182,7 +182,7 @@ map's positions layer." (lambda () (tween 2 0.0 1.0 (lambda (a) - (set-source-volume! background-music a)) + (set-source-volume! *background-music* a)) #:ease ease-out-sine))) ;; Fade in @@ -251,7 +251,14 @@ map's positions layer." (define scene - `(#:name "game" - #:load ,load-scene - #:draw ,draw-scene - #:update ,update-scene)) + (list + #:name "game" + #:load load-scene + #:draw draw-scene + #:update update-scene + #:quit + (lambda () + (and *background-music* + ;; XXX This crashes so we just turn down the volume. + ;;(source-stop *background-music*) + (set-source-volume! *background-music* 0))))) diff --git a/scenes/intro.scm b/scenes/intro.scm index 422d2ec..68d5b79 100644 --- a/scenes/intro.scm +++ b/scenes/intro.scm @@ -67,15 +67,17 @@ The sunshine warms and blinds. The leaf begins to dry.")) (define welcome-text #false) +(define *background-music* #false) (define (load-scene) (set! *random-state* (random-state-from-platform)) (set! welcome-text (list-ref texts (random (length texts)))) - (source-play - (make-source #:audio - (asset-ref music) - #:loop? #false)) + + (set! *background-music* + (make-source #:audio (asset-ref music) + #:loop? #false)) + (source-play *background-music*) (with-agenda agenda @@ -131,7 +133,12 @@ The leaf begins to dry.")) (define scene - `(#:name "intro" - #:load ,load-scene - #:draw ,draw-scene - #:update ,update-scene)) + (list + #:name "intro" + #:load load-scene + #:draw draw-scene + #:update update-scene + #:quit + (lambda () + (and *background-music* + (source-stop *background-music*))))) |