Have menu open and close with Space

This commit is contained in:
Amy Grinn 2024-12-11 10:13:20 -05:00
parent bd5036a160
commit 60b998758d
No known key found for this signature in database
GPG key ID: 6B558BED1DCF3192

View file

@ -107,6 +107,10 @@
;; Game state ;; Game state
(define *state* #f) (define *state* #f)
;; Menu state
(define *menu* #f)
(define *menu:index* 0)
(define *actormap* (make-whactormap)) (define *actormap* (make-whactormap))
(define (call-with-goblins thunk) (define (call-with-goblins thunk)
(actormap-churn-run! *actormap* thunk)) (actormap-churn-run! *actormap* thunk))
@ -269,6 +273,13 @@
(load-level! *level-idx*) (load-level! *level-idx*)
(media-play audio:bg-music))))) (media-play audio:bg-music)))))
(define (toggle-menu!)
(cond
(*menu* (set! *menu* #f))
(else
(set! *menu* menu:main)
(set! *menu:index* 0))))
(define (reset-game!) (define (reset-game!)
(run-script (run-script
(lambda () (lambda ()
@ -607,6 +618,22 @@
(id (level-tile-id tile))) (id (level-tile-id tile)))
(draw-tile context tileset id (vec2-x pos) (vec2-y pos)))))) (draw-tile context tileset id (vec2-x pos) (vec2-y pos))))))
(define menu:main #(("Select Level" . menu:level-select)
("Credits" . menu:credits)))
;; (define menu:level-select
;; (vector-map
;; (lambda (i val)
;; (cons (string-append "Level " (string->number i)) i))
;; levels))
(define (draw-menu)
(do ((x (* 7 tile-width) (+ tile-width x)))
((> x (* 13 tile-width)))
(do ((y 0 (+ tile-height y)))
((> y (* 15 tile-height)))
(draw-tile context tileset 23 x y))))
(define (draw-level) (define (draw-level)
(draw-background) (draw-background)
(for-each draw-object *objects*) (for-each draw-object *objects*)
@ -750,6 +777,8 @@
(fill-text context "A -> undo" (fill-text context "A -> undo"
cx2 baseline)))) cx2 baseline))))
('win (draw-win))) ('win (draw-win)))
(when *menu*
(draw-menu))
(draw-current-effect 'post) (draw-current-effect 'post)
(request-animation-frame draw-callback))) (request-animation-frame draw-callback)))
(define draw-callback (procedure->external draw)) (define draw-callback (procedure->external draw))
@ -761,6 +790,7 @@
(define key:up "ArrowUp") (define key:up "ArrowUp")
(define key:confirm "Enter") (define key:confirm "Enter")
(define key:undo "KeyZ") (define key:undo "KeyZ")
(define key:menu "Space")
(define (on-key-down event) (define (on-key-down event)
(let ((key (keyboard-event-code event))) (let ((key (keyboard-event-code event)))
@ -776,7 +806,9 @@
((string=? key key:undo) ((string=? key key:undo)
(on-input-down 'undo)) (on-input-down 'undo))
((string=? key key:confirm) ((string=? key key:confirm)
(on-input-down 'confirm))))) (on-input-down 'confirm))
((string=? key key:menu)
(on-input-down 'menu)))))
(define *gamepad* #f) (define *gamepad* #f)
(define *button:left* #f) (define *button:left* #f)
@ -849,7 +881,7 @@
(with-goblins (update-objects!))) (with-goblins (update-objects!)))
;; REMOVE BEFORE RELEASE!!!! ;; REMOVE BEFORE RELEASE!!!!
;; ('confirm (next-level!)) ;; ('confirm (next-level!))
)) ('menu (toggle-menu!))))
;; Pressing any bound input resets the game. ;; Pressing any bound input resets the game.
('win (reset-game!)))) ('win (reset-game!))))