Kill player when gate closes on them.
This commit is contained in:
parent
68b427e387
commit
71d62e596e
3 changed files with 88 additions and 38 deletions
59
game.scm
59
game.scm
|
@ -68,6 +68,7 @@
|
|||
(define audio:no (load-sound-effect "no"))
|
||||
(define audio:exit (load-sound-effect "exit"))
|
||||
(define audio:pickup (load-sound-effect "pickup"))
|
||||
(define audio:die (load-sound-effect "die"))
|
||||
|
||||
;; Game state
|
||||
(define *state* #f)
|
||||
|
@ -198,29 +199,41 @@
|
|||
(define (move-player dir)
|
||||
(define (do-move)
|
||||
(with-goblins
|
||||
($ (level-player *level*) 'move dir)
|
||||
($ (level-actor *level*) 'tick)
|
||||
(define result
|
||||
(match ($ (level-player *level*) 'event)
|
||||
(('bump)
|
||||
(media-play audio:bump)
|
||||
#f)
|
||||
(('push)
|
||||
(media-play audio:push)
|
||||
#f)
|
||||
(('exit)
|
||||
(media-play audio:exit)
|
||||
'next-level)
|
||||
(('gem)
|
||||
(media-play audio:pickup)
|
||||
;; TODO: Maybe show a little achievement popup when all gems
|
||||
;; are collected?
|
||||
(set! *gems* (cons *level-idx* *gems*))
|
||||
#f)
|
||||
(_ #f)))
|
||||
(update-objects!)
|
||||
result))
|
||||
(save-snapshot!)
|
||||
(let ((player (level-player *level*)))
|
||||
(if ($ player 'alive?)
|
||||
(begin
|
||||
($ player 'move dir)
|
||||
($ (level-actor *level*) 'tick)
|
||||
;; TODO: Need a better way to receive events to play sounds
|
||||
;; and emit particles and stuff so any actor can trigger
|
||||
;; events.
|
||||
(let ((result
|
||||
(match ($ player 'event)
|
||||
(('bump)
|
||||
(media-play audio:bump)
|
||||
#f)
|
||||
(('push)
|
||||
(media-play audio:push)
|
||||
#f)
|
||||
(('exit)
|
||||
(media-play audio:exit)
|
||||
'next-level)
|
||||
(('die)
|
||||
(media-play audio:die)
|
||||
#f)
|
||||
(('gem)
|
||||
(media-play audio:pickup)
|
||||
;; TODO: Maybe show a little achievement popup when all gems
|
||||
;; are collected?
|
||||
(set! *gems* (cons *level-idx* *gems*))
|
||||
#f)
|
||||
(_ #f))))
|
||||
(update-objects!)
|
||||
(save-snapshot!)
|
||||
result))
|
||||
(begin
|
||||
(media-play audio:no)
|
||||
#f)))))
|
||||
(when (eq? (do-move) 'next-level)
|
||||
(next-level!)))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue