diff --git a/main.scm b/main.scm index 16c0a47..d2c0ece 100644 --- a/main.scm +++ b/main.scm @@ -67,7 +67,8 @@ (foreign-procedure #f "BeginDrawing" () void)) (define end-drawing - (foreign-procedure #f "EndDrawing" () void)) + ; doesn't help, but i'm pretty sure this *is* collect safe + (foreign-procedure __collect_safe "EndDrawing" () void)) ; timing (define set-target-fps @@ -172,10 +173,11 @@ (vector2-x b)) (+ (vector2-y a) (vector2-y b)))) +(define vector2-origin (vector2 0 0)) (define (vector2+ . vs) (fold-left vector2+-bin - (vector2 0 0) + vector2-origin vs)) ; mouse @@ -584,13 +586,6 @@ (square-flagged?-set! mouse-square (not (square-flagged? mouse-square)))) redraw?) -(define (draw-game-squares game skin pos) - (game-squares-for-each - (lambda (x y) - (let ([pos (vector2+ pos (vector2 (* x square-width) (* y square-width)))]) - (blit-square skin (game-square-type-at game x y) pos))) - game)) - (define (draw-write obj x y size color) (draw-text (with-output-to-string (lambda () (write obj))) x y size color)) @@ -640,11 +635,19 @@ (draw-write `(middle released . ,(button-released? 'middle)) 1 90 10 color) (draw-write `(right released . ,(button-released? 'right)) 1 100 10 color)) +(define (draw-game-squares game skin pos) + (game-squares-for-each + (lambda (x y) + (let ([pos (vector2 (+ (vector2-x pos) (* x square-width)) + (+ (vector2-y pos) (* y square-width)))]) + (blit-square skin (game-square-type-at game x y) pos))) + game)) + (define (game-draw game skin) - (draw-game-squares game skin (vector2 0 0))) + (draw-game-squares game skin vector2-origin)) ; draw-game-over as a separate thing would be nice -; the game shows -99 when you (- num-mines num-flagged) is less than -99 +; the game shows -99 when (- num-mines num-flagged) is less than -99 (define (run-game mines width height) (init-window (* width square-width) (* height square-width) "mineschemer") (set-target-fps 60) @@ -662,7 +665,9 @@ ; this saves a lot of resources (when (game-tick! game) ; something leaks memory. huh! - (clear-background BLACK) + ; methinks it's all those foreign vector2s + ; seems so + ;; (clear-background BLACK) (game-draw game skin)) #;(draw-mouse-info BLACK) ))