summaryrefslogtreecommitdiff
path: root/game.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2023-11-17 12:36:15 -0500
committerDavid Thompson <dthompson2@worcester.edu>2023-11-17 12:36:15 -0500
commit67bd60d48461560b34ec53a01d439f55a32afd81 (patch)
tree0057b2f2e31f18105aa37d0ea3232e674908de74 /game.scm
parent02d1d5540f10511432a6f31781bea0d077885881 (diff)
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.
Diffstat (limited to 'game.scm')
-rw-r--r--game.scm112
1 files changed, 58 insertions, 54 deletions
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)