From 67bd60d48461560b34ec53a01d439f55a32afd81 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 17 Nov 2023 12:36:15 -0500 Subject: Update to work on latest guile-hoot... sort of. There's one uncommitted fix I'm using that is my local guile-hoot repo. Shouldn't be like that for long. --- game.scm | 112 +++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 58 insertions(+), 54 deletions(-) (limited to 'game.scm') diff --git a/game.scm b/game.scm index 7e7ddf1..5d6c567 100644 --- a/game.scm +++ b/game.scm @@ -7,139 +7,139 @@ ;; Host imports (define-foreign current-window "window" "get" - -> (ref extern)) + -> (ref null extern)) (define-foreign window-inner-width "window" "innerWidth" - (ref extern) -> i32) + (ref null extern) -> i32) (define-foreign window-inner-height "window" "innerHeight" - (ref extern) -> i32) + (ref null extern) -> i32) (define-foreign request-animation-frame "window" "requestAnimationFrame" - (ref eq) -> none) + (ref null extern) -> none) (define-foreign timeout "window" "setTimeout" - (ref eq) f64 -> i32) + (ref null extern) f64 -> i32) (define-foreign current-document "document" "get" - -> (ref extern)) + -> (ref null extern)) (define-foreign document-body "document" "body" - -> (ref extern)) + -> (ref null extern)) (define-foreign get-element-by-id "document" "getElementById" (ref string) -> (ref null extern)) (define-foreign make-text-node "document" "createTextNode" - (ref string) -> (ref extern)) + (ref string) -> (ref null extern)) (define-foreign make-element "document" "createElement" - (ref string) -> (ref extern)) + (ref string) -> (ref null extern)) (define-foreign element-value "element" "value" - (ref extern) -> (ref string)) + (ref null extern) -> (ref string)) (define-foreign set-element-value! "element" "setValue" - (ref extern) (ref string) -> none) + (ref null extern) (ref string) -> none) (define-foreign set-element-width! "element" "setWidth" - (ref extern) i32 -> none) + (ref null extern) i32 -> none) (define-foreign set-element-height! "element" "setHeight" - (ref extern) i32 -> none) + (ref null extern) i32 -> none) (define-foreign append-child! "element" "appendChild" - (ref extern) (ref extern) -> (ref extern)) + (ref null extern) (ref null extern) -> (ref null extern)) (define-foreign remove! "element" "remove" - (ref extern) -> none) + (ref null extern) -> none) (define-foreign replace-with! "element" "replaceWith" - (ref extern) (ref extern) -> none) + (ref null extern) (ref null extern) -> none) (define-foreign set-attribute! "element" "setAttribute" - (ref extern) (ref string) (ref string) -> none) + (ref null extern) (ref string) (ref string) -> none) (define-foreign remove-attribute! "element" "removeAttribute" - (ref extern) (ref string) -> none) + (ref null extern) (ref string) -> none) (define-foreign add-event-listener! "element" "addEventListener" - (ref extern) (ref string) (ref eq) -> none) + (ref null extern) (ref string) (ref null extern) -> none) (define-foreign remove-event-listener! "element" "removeEventListener" - (ref extern) (ref string) (ref eq) -> none) + (ref null extern) (ref string) (ref null extern) -> none) (define-foreign clone-element "element" "clone" - (ref extern) -> (ref extern)) + (ref null extern) -> (ref null extern)) (define-foreign prevent-default! "event" "preventDefault" - (ref extern) -> none) + (ref null extern) -> none) (define-foreign keyboard-event-code "event" "keyboardCode" - (ref extern) -> (ref string)) + (ref null extern) -> (ref string)) (define-foreign get-context "canvas" "getContext" - (ref extern) (ref string) -> (ref extern)) + (ref null extern) (ref string) -> (ref null extern)) (define-foreign set-fill-color! "canvas" "setFillColor" - (ref extern) (ref string) -> none) + (ref null extern) (ref string) -> none) (define-foreign set-font! "canvas" "setFont" - (ref extern) (ref string) -> none) + (ref null extern) (ref string) -> none) (define-foreign set-text-align! "canvas" "setTextAlign" - (ref extern) (ref string) -> none) + (ref null extern) (ref string) -> none) (define-foreign clear-rect "canvas" "clearRect" - (ref extern) f64 f64 f64 f64 -> none) + (ref null extern) f64 f64 f64 f64 -> none) (define-foreign fill-rect "canvas" "fillRect" - (ref extern) f64 f64 f64 f64 -> none) + (ref null extern) f64 f64 f64 f64 -> none) (define-foreign fill-text "canvas" "fillText" - (ref extern) (ref string) f64 f64 -> none) + (ref null extern) (ref string) f64 f64 -> none) (define-foreign draw-image "canvas" "drawImage" - (ref extern) (ref extern) f64 f64 f64 f64 f64 f64 f64 f64 -> none) + (ref null extern) (ref null extern) f64 f64 f64 f64 f64 f64 f64 f64 -> none) (define-foreign set-scale! "canvas" "setScale" - (ref extern) f64 f64 -> none) + (ref null extern) f64 f64 -> none) (define-foreign set-transform! "canvas" "setTransform" - (ref extern) f64 f64 f64 f64 f64 f64 -> none) + (ref null extern) f64 f64 f64 f64 f64 f64 -> none) (define-foreign set-image-smoothing-enabled! "canvas" "setImageSmoothingEnabled" - (ref extern) i32 -> none) + (ref null extern) i32 -> none) (define-foreign load-audio "audio" "new" - (ref string) -> (ref extern)) + (ref string) -> (ref null extern)) (define-foreign audio-play "audio" "play" - (ref extern) -> none) + (ref null extern) -> none) (define-foreign audio-pause "audio" "pause" - (ref extern) -> none) + (ref null extern) -> none) (define-foreign audio-volume "audio" "volume" - (ref extern) -> f64) + (ref null extern) -> f64) (define-foreign set-audio-volume! "audio" "setVolume" - (ref extern) f64 -> none) + (ref null extern) f64 -> none) (define-foreign set-audio-loop! "audio" "setLoop" - (ref extern) i32 -> none) + (ref null extern) i32 -> none) (define-foreign audio-seek "audio" "seek" - (ref extern) f64 -> none) + (ref null extern) f64 -> none) (define-foreign load-image "image" "new" - (ref string) -> (ref extern)) + (ref string) -> (ref null extern)) ;; Record types are only just beginning to be added to Hoot and ;; there isn't support for mutable structs, yet. So, tagged @@ -1771,14 +1771,14 @@ (draw-enemies enemies time) (draw-player) (draw-enemy-bullets) + (draw-hud) (when *show-warning?* (set-fill-color! context "#d27d2c") (set-text-align! context "center") (set-font! context "bold 72px monogram") (fill-text context "WARNING" (/ game-width 2.0) - (/ game-height 2.0))) - (draw-hud)) + (/ game-height 2.0)))) (define (draw-pause time) (draw-background image:starfield-bg 0.3) @@ -1864,7 +1864,8 @@ ('game-over draw-game-over) ('game-clear draw-game-clear)))) (draw* time)) - (request-animation-frame draw))) + (request-animation-frame draw-callback))) + (define draw-callback (procedure->external draw)) (define (reset!) (music-stop) @@ -1938,8 +1939,7 @@ (match *game-state* ('splash (when (string-=? code "Enter") - (reset!) - (set! *game-state* 'play))) + (reset!))) ('play (cond ((string-=? code "Enter") @@ -2038,14 +2038,18 @@ (bullet-pool-update! enemy-bullets enemy-bullet-collide) (particle-pool-update! particles)) (_ #t)) - (timeout update dt)) - - (add-event-listener! (current-window) "resize" (lambda (_) (resize-canvas))) - (add-event-listener! (current-document) "keydown" on-key-down) - (add-event-listener! (current-document) "keyup" on-key-up) + (timeout update-callback dt)) + (define update-callback (procedure->external update)) + + (add-event-listener! (current-window) "resize" + (procedure->external (lambda (_) (resize-canvas)))) + (add-event-listener! (current-document) "keydown" + (procedure->external on-key-down)) + (add-event-listener! (current-document) "keyup" + (procedure->external on-key-up)) (resize-canvas) - (request-animation-frame draw) - (timeout update dt))) + (request-animation-frame draw-callback) + (timeout update-callback dt))) (call-with-output-file "game.wasm" (lambda (port) -- cgit v1.2.3