(import scheme (chicken base) (prefix sdl2 "sdl2:") (prefix sdl2-ttf "ttf:") (prefix sdl2-image "img:") downstroke/engine downstroke/renderer downstroke/input downstroke/assets downstroke/sound) (define *music-on?* #f) (define *game* (make-game title: "Demo: Audio" width: 600 height: 400 preload: (lambda (game) (init-audio!) (load-sounds! '((jump . "demo/assets/jump.wav"))) (load-music! "demo/assets/theme.ogg") (game-asset-set! game 'font (ttf:open-font "demo/assets/DejaVuSans.ttf" 20))) update: (lambda (game dt) (let ((input (game-input game))) (when (input-pressed? input 'a) (play-sound 'jump)) (when (input-pressed? input 'b) (if *music-on?* (begin (stop-music!) (set! *music-on?* #f)) (begin (play-music! 0.5) (set! *music-on?* #t)))))) render: (lambda (game) (let* ((renderer (game-renderer game)) (font (game-asset game 'font)) (white (sdl2:make-color 255 255 255 255)) (gray (sdl2:make-color 180 180 180 255))) (set! (sdl2:render-draw-color renderer) (sdl2:make-color 30 30 60 255)) (sdl2:render-fill-rect! renderer (sdl2:make-rect 0 0 600 400)) (draw-ui-text renderer font "Audio Demo" white 220 80) (draw-ui-text renderer font "J / Z -- play sound effect" gray 160 160) (draw-ui-text renderer font "K / X -- toggle music on/off" gray 160 200) (draw-ui-text renderer font "Escape -- quit" gray 160 240) (draw-ui-text renderer font (if *music-on?* "Music: ON" "Music: OFF") (if *music-on?* (sdl2:make-color 100 255 100 255) (sdl2:make-color 255 100 100 255)) 240 310))))) (game-run! *game*)