aboutsummaryrefslogtreecommitdiff
path: root/demo/audio.scm
diff options
context:
space:
mode:
Diffstat (limited to 'demo/audio.scm')
-rw-r--r--demo/audio.scm52
1 files changed, 52 insertions, 0 deletions
diff --git a/demo/audio.scm b/demo/audio.scm
new file mode 100644
index 0000000..8ae4d62
--- /dev/null
+++ b/demo/audio.scm
@@ -0,0 +1,52 @@
+(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*)