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
|
;; 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!))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue