win/loss screens and music
This commit is contained in:
parent
6940b3816d
commit
277a040f5f
10 changed files with 273 additions and 25 deletions
|
|
@ -11,6 +11,9 @@
|
|||
(bd random)
|
||||
(bd attack)
|
||||
(bd grid)
|
||||
(bd music)
|
||||
(win-screen)
|
||||
(lose-screen)
|
||||
(srfi 1)
|
||||
(srfi 99))
|
||||
|
||||
|
|
@ -34,29 +37,10 @@
|
|||
(stance unit-stance set-unit-stance!))
|
||||
|
||||
(define player-unit
|
||||
(unit
|
||||
player
|
||||
3
|
||||
;; Place player
|
||||
(vec (rand-int grid-size)
|
||||
(rand-int grid-size))
|
||||
(hand-direction 'mid 'right)
|
||||
'mid))
|
||||
'())
|
||||
|
||||
(define enemy-unit
|
||||
(unit
|
||||
enemy
|
||||
3
|
||||
;; Place enemy
|
||||
(let loop ()
|
||||
(let ((p-x (rand-int grid-size))
|
||||
(p-y (rand-int grid-size)))
|
||||
(if (not (v= (vec p-x p-y)
|
||||
(unit-pos player-unit)))
|
||||
(vec p-x p-y)
|
||||
(loop))))
|
||||
(hand-direction 'mid 'left)
|
||||
'mid))
|
||||
'())
|
||||
|
||||
(define-record-type <order>
|
||||
(order movement attack stance)
|
||||
|
|
@ -112,6 +96,14 @@
|
|||
(else (rotate-pos (unit-hand-pos enemy-unit))))))
|
||||
o))
|
||||
|
||||
(define (win)
|
||||
(display "Win!")
|
||||
(newline))
|
||||
|
||||
(define (lose)
|
||||
(display "Lose!")
|
||||
(newline))
|
||||
|
||||
(define (attempt-attack attack-dir unit)
|
||||
(display (unit-type unit))
|
||||
(newline)
|
||||
|
|
@ -125,7 +117,10 @@
|
|||
(display (conc (unit-type unit) " hits!"))
|
||||
(set-unit-health! target (- (unit-health target) 1))
|
||||
(when (= 0 (unit-health target))
|
||||
(set! battle-state 'ended)))
|
||||
(set! battle-state 'ended)
|
||||
(if (eqv? player (unit-type target))
|
||||
(lose)
|
||||
(win))))
|
||||
(display (conc (unit-type unit) " misses!")))
|
||||
(newline)
|
||||
(set-unit-hand-pos! unit (opposite-pos attack-dir))))
|
||||
|
|
@ -163,7 +158,38 @@
|
|||
(else empty))))))))))
|
||||
|
||||
(export arena)
|
||||
(define (arena)
|
||||
(define (arena menu-scene)
|
||||
;; Reset state
|
||||
(set! battle-state 'active)
|
||||
(set! player-unit
|
||||
(unit
|
||||
player
|
||||
3
|
||||
;; Place player
|
||||
(vec (rand-int grid-size)
|
||||
(rand-int grid-size))
|
||||
(hand-direction 'mid 'right)
|
||||
'mid))
|
||||
(set! enemy-unit
|
||||
(unit
|
||||
enemy
|
||||
3
|
||||
;; Place enemy
|
||||
(let loop ()
|
||||
(let ((p-x (rand-int grid-size))
|
||||
(p-y (rand-int grid-size)))
|
||||
(if (not (v= (vec p-x p-y)
|
||||
(unit-pos player-unit)))
|
||||
(vec p-x p-y)
|
||||
(loop))))
|
||||
(hand-direction 'mid 'left)
|
||||
'mid))
|
||||
|
||||
(set! win (lambda ()
|
||||
((win-screen arena menu-scene))))
|
||||
(set! lose (lambda ()
|
||||
((lose-screen arena menu-scene))))
|
||||
|
||||
(scene
|
||||
push-actions
|
||||
process-dynamic-labels
|
||||
|
|
@ -171,6 +197,11 @@
|
|||
draw-labels
|
||||
draw-grid
|
||||
handle-buttons
|
||||
handle-music-players
|
||||
|
||||
(entity
|
||||
(music-player
|
||||
"../res/music/Fight.wav"))
|
||||
|
||||
;; Level heading
|
||||
(entity
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue