aboutsummaryrefslogtreecommitdiff
path: root/demo/audio.scm
blob: 2cf5665276416359bdb739eee1fcbca842fa32fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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*)