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*)
|