win/loss screens and music

This commit is contained in:
Jakub 2026-05-24 16:07:20 +08:00
parent 6940b3816d
commit 277a040f5f
10 changed files with 273 additions and 25 deletions

View file

@ -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