SFX and some more sprites
This commit is contained in:
parent
277a040f5f
commit
030b35e4fa
26 changed files with 128 additions and 11 deletions
|
|
@ -3,9 +3,12 @@
|
|||
(chicken base)
|
||||
(chicken module)
|
||||
(chicken string)
|
||||
raylib
|
||||
(imugi core)
|
||||
(imugi input)
|
||||
(imugi scene)
|
||||
(imugi resource)
|
||||
(imugi drawing)
|
||||
(imugi math)
|
||||
(bd ui)
|
||||
(bd random)
|
||||
|
|
@ -20,7 +23,7 @@
|
|||
(define battle-state 'active)
|
||||
|
||||
(define player 'player)
|
||||
(define enemy 'foe)
|
||||
(define enemy 'enemy)
|
||||
(define empty 'none)
|
||||
|
||||
(define grid-size 5)
|
||||
|
|
@ -105,8 +108,8 @@
|
|||
(newline))
|
||||
|
||||
(define (attempt-attack attack-dir unit)
|
||||
(display (unit-type unit))
|
||||
(newline)
|
||||
(play-sound (load-sound "../res/sfx/hit.wav"))
|
||||
(let* ((target (if (eqv? (unit-type unit) player) enemy-unit player-unit))
|
||||
(outcome (resolve-combat (attack-from-stance attack-dir (unit-stance unit))
|
||||
(defense-from-stance attack-dir
|
||||
|
|
@ -114,15 +117,16 @@
|
|||
(unit-stance unit)))))
|
||||
(if (eqv? outcome 'hit)
|
||||
(begin
|
||||
(display (conc (unit-type unit) " hits!"))
|
||||
(case (unit-health target)
|
||||
((3) (play-sound (load-sound "../res/sfx/hurt1.wav")))
|
||||
((2) (play-sound (load-sound "../res/sfx/hurt2.wav")))
|
||||
((1) (play-sound (load-sound "../res/sfx/hurt3.wav"))))
|
||||
(set-unit-health! target (- (unit-health target) 1))
|
||||
(when (= 0 (unit-health target))
|
||||
(set! battle-state 'ended)
|
||||
(if (eqv? player (unit-type target))
|
||||
(lose)
|
||||
(win))))
|
||||
(display (conc (unit-type unit) " misses!")))
|
||||
(newline)
|
||||
(win)))))
|
||||
(set-unit-hand-pos! unit (opposite-pos attack-dir))))
|
||||
|
||||
(define (move-unit unit pos)
|
||||
|
|
@ -157,6 +161,48 @@
|
|||
((v= (unit-pos enemy-unit) (vec j i)) enemy)
|
||||
(else empty))))))))))
|
||||
|
||||
(define (build-sprite-path-for unit order)
|
||||
(let ((hand-to-use (if (and (eqv? (unit-type unit) player) (order-atk order))
|
||||
(order-atk order)
|
||||
(unit-hand-pos unit))))
|
||||
(conc "../res/sprites/" (unit-type unit) "/"
|
||||
(case (hand-vert hand-to-use)
|
||||
((high) "up")
|
||||
((mid) "mid")
|
||||
((low) "down"))
|
||||
"-" (hand-horiz hand-to-use)
|
||||
".png")))
|
||||
|
||||
(define draw-player-sprite
|
||||
(make-system
|
||||
'draw-player-sprite
|
||||
0
|
||||
'global
|
||||
'()
|
||||
(lambda ()
|
||||
(push-render-object 'screen
|
||||
-1
|
||||
(lambda ()
|
||||
(draw-texture-2d
|
||||
(vec 0 0)
|
||||
(texture (build-sprite-path-for player-unit player-order))
|
||||
(make-color 1 1 1 1)))))))
|
||||
|
||||
(define draw-enemy-sprite
|
||||
(make-system
|
||||
'draw-enemy-sprite
|
||||
0
|
||||
'global
|
||||
'()
|
||||
(lambda ()
|
||||
(push-render-object 'screen
|
||||
-1
|
||||
(lambda ()
|
||||
(draw-texture-2d
|
||||
(vec 600 0)
|
||||
(texture (build-sprite-path-for enemy-unit (empty-order)))
|
||||
(make-color 1 1 1 1)))))))
|
||||
|
||||
(export arena)
|
||||
(define (arena menu-scene)
|
||||
;; Reset state
|
||||
|
|
@ -198,6 +244,8 @@
|
|||
draw-grid
|
||||
handle-buttons
|
||||
handle-music-players
|
||||
draw-player-sprite
|
||||
draw-enemy-sprite
|
||||
|
||||
(entity
|
||||
(music-player
|
||||
|
|
@ -351,11 +399,11 @@
|
|||
;; Player order display
|
||||
(entity
|
||||
(footer
|
||||
(vec 0 0)
|
||||
(vec 600 400)
|
||||
"")
|
||||
(dynamic-label
|
||||
(lambda ()
|
||||
(conc "Order:\n Move: "
|
||||
(conc "Your Order:\n Move: "
|
||||
(if (order-mov player-order)
|
||||
(let ((m (order-mov player-order)))
|
||||
(cond
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue