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