diff --git a/main.scm b/main.scm index 0ad9115..cb44ab0 100644 --- a/main.scm +++ b/main.scm @@ -37,6 +37,8 @@ (set-color-a! c a) c])) +(define WHITE (color 255 255 255 255)) + ;; (define c (color 1 2 3 4)) ;; (display (list (color-r c) (color-g c) (color-b c) (color-a c))) @@ -214,11 +216,13 @@ (define *skin-paths* '("./skins" ".")) +; could be fun to do weird stuff with skins (randomly choosing, &c) + (define (load-skin filename) (define path (find file-exists? - (map (lambda (p) (string-append p "/" filename)) - *skin-paths*))) + (map (lambda (p) (string-append p "/" filename)) + *skin-paths*))) (unless path (error 'load-skin @@ -227,25 +231,36 @@ (with-output-to-string (lambda () (write *skin-paths*)))))) (load-texture path)) +(define skin-width 144) +(define skin-height 122) + +(define number-rects + (let ([width (/ skin-width 9)]) + (list->vector + (map (lambda (n) + ; the bottom and right sides are 1 pixel shy, it works out + (rectangle (* n width) 0 width width)) + (iota 9))))) + +(define (blit-number skin n pos) + (let ([rect (vector-ref number-rects n)]) + (draw-texture-rec skin rect pos WHITE))) (define (main) (init-window 100 100 "hello") (set-target-fps 60) - (let ([skin (load-texture "skins/xp-flowers.bmp")]) - (display skin) - (newline) + (let ([skin (load-skin "xp-flowers.bmp")]) + ;; (display skin) + ;; (newline) - ; with the actual game, we probably don't have to draw every time +; with the actual game, we probably don't have to draw every time (until (window-should-close?) (with-draw - (clear-background (color 245 245 245)) - (draw-texture-rec skin (rectangle 0 0 100) (vector2 0 0) (color 255 255 255)) - (draw-fps 0 0) - (draw-text "wow awesome" 0 20 20 (color 0 0 0)))) - + (clear-background (color 0 0 0 0)) + (for-each (lambda (n) + (blit-number skin n (vector2 (* 10 n) (* 10 n)))) + (iota 9)))) (unload-texture skin) (close-window))) -(main) -