Have menu open and close with Space
This commit is contained in:
parent
bd5036a160
commit
60b998758d
1 changed files with 34 additions and 2 deletions
36
game.scm
36
game.scm
|
@ -107,6 +107,10 @@
|
|||
;; Game state
|
||||
(define *state* #f)
|
||||
|
||||
;; Menu state
|
||||
(define *menu* #f)
|
||||
(define *menu:index* 0)
|
||||
|
||||
(define *actormap* (make-whactormap))
|
||||
(define (call-with-goblins thunk)
|
||||
(actormap-churn-run! *actormap* thunk))
|
||||
|
@ -269,6 +273,13 @@
|
|||
(load-level! *level-idx*)
|
||||
(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!)
|
||||
(run-script
|
||||
(lambda ()
|
||||
|
@ -607,6 +618,22 @@
|
|||
(id (level-tile-id tile)))
|
||||
(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)
|
||||
(draw-background)
|
||||
(for-each draw-object *objects*)
|
||||
|
@ -750,6 +777,8 @@
|
|||
(fill-text context "A -> undo"
|
||||
cx2 baseline))))
|
||||
('win (draw-win)))
|
||||
(when *menu*
|
||||
(draw-menu))
|
||||
(draw-current-effect 'post)
|
||||
(request-animation-frame draw-callback)))
|
||||
(define draw-callback (procedure->external draw))
|
||||
|
@ -761,6 +790,7 @@
|
|||
(define key:up "ArrowUp")
|
||||
(define key:confirm "Enter")
|
||||
(define key:undo "KeyZ")
|
||||
(define key:menu "Space")
|
||||
|
||||
(define (on-key-down event)
|
||||
(let ((key (keyboard-event-code event)))
|
||||
|
@ -776,7 +806,9 @@
|
|||
((string=? key key:undo)
|
||||
(on-input-down 'undo))
|
||||
((string=? key key:confirm)
|
||||
(on-input-down 'confirm)))))
|
||||
(on-input-down 'confirm))
|
||||
((string=? key key:menu)
|
||||
(on-input-down 'menu)))))
|
||||
|
||||
(define *gamepad* #f)
|
||||
(define *button:left* #f)
|
||||
|
@ -849,7 +881,7 @@
|
|||
(with-goblins (update-objects!)))
|
||||
;; REMOVE BEFORE RELEASE!!!!
|
||||
;; ('confirm (next-level!))
|
||||
))
|
||||
('menu (toggle-menu!))))
|
||||
;; Pressing any bound input resets the game.
|
||||
('win (reset-game!))))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue