aboutsummaryrefslogtreecommitdiff
path: root/demo/spritefont.scm
blob: 8895d3c6107ce52a6649a5f91554b576a54afe64 (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
(import scheme
        (chicken base)
        (prefix sdl2 "sdl2:")
        (prefix sdl2-ttf "ttf:")
        (prefix sdl2-image "img:")
        downstroke-engine
        downstroke-world
        downstroke-tilemap
        downstroke-renderer
        downstroke-assets
        downstroke-scene-loader)

(define *sprite-font* #f)

(define *game*
  (make-game
    title: "Demo: Sprite Font" width: 600 height: 400

    create: (lambda (game)
      (let* ((scene  (game-load-scene! game "demo/assets/level-0.tmx"))
             (tileset (tilemap-tileset (scene-tilemap scene))))
        ;; Create sprite font with character ranges
        ;; A-M: tiles 917-929, N-Z: tiles 966-978, 0-9: tiles 868-877
        (set! *sprite-font*
          (make-sprite-font*
            #:tile-size 16
            #:spacing 1
            #:ranges '((#\A #\M 918)
                       (#\N #\Z 967)
                       (#\0 #\9 869))))))

    render: (lambda (game)
      (let* ((renderer (game-renderer game))
             (scene (game-scene game))
             (tileset (tilemap-tileset (scene-tilemap scene)))
             (tileset-texture (scene-tileset-texture scene)))
        ;; Clear background
        (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 sprite text at various positions
        (draw-sprite-text renderer tileset-texture tileset *sprite-font*
          "HELLO WORLD" 50 50)
        (draw-sprite-text renderer tileset-texture tileset *sprite-font*
          "DOWNSTROKE" 100 120)
        (draw-sprite-text renderer tileset-texture tileset *sprite-font*
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 20 200)
        (draw-sprite-text renderer tileset-texture tileset *sprite-font*
          "0123456789" 150 280)))))

(game-run! *game*)