SFX and some more sprites
|
|
@ -41,7 +41,7 @@
|
|||
width
|
||||
(cond
|
||||
((eqv? entity 'player) (make-color 0 0 1 1))
|
||||
((eqv? entity 'foe) (make-color 1 0 0 1))
|
||||
((eqv? entity 'enemy) (make-color 1 0 0 1))
|
||||
(else (make-color 0 0 0 1)))
|
||||
(not (eqv? entity 'none))
|
||||
2)))))
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@
|
|||
;; If button is clicked, exec button click func
|
||||
(define (do-button-callback button)
|
||||
(when (eqv? 'clicked (button-state button))
|
||||
(play-sound (load-sound "../res/sfx/click.wav"))
|
||||
((button-click-fn button))))
|
||||
|
||||
;; Needs to be added to do buttons
|
||||
|
|
|
|||
BIN
res/sfx/click.wav
Normal file
BIN
res/sfx/hit.wav
Normal file
BIN
res/sfx/hurt1.wav
Normal file
BIN
res/sfx/hurt2.wav
Normal file
BIN
res/sfx/hurt3.wav
Normal file
BIN
res/sprites/enemy/down-left.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
res/sprites/enemy/down-right.png
Normal file
|
After Width: | Height: | Size: 239 KiB |
BIN
res/sprites/enemy/lose.png
Normal file
|
After Width: | Height: | Size: 254 KiB |
BIN
res/sprites/enemy/mid-left.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
res/sprites/enemy/mid-right.png
Normal file
|
After Width: | Height: | Size: 226 KiB |
BIN
res/sprites/enemy/up-left.png
Normal file
|
After Width: | Height: | Size: 247 KiB |
BIN
res/sprites/enemy/up-right.png
Normal file
|
After Width: | Height: | Size: 256 KiB |
BIN
res/sprites/enemy/win.png
Normal file
|
After Width: | Height: | Size: 396 KiB |
BIN
res/sprites/player/down-left.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
res/sprites/player/down-right.png
Normal file
|
After Width: | Height: | Size: 239 KiB |
BIN
res/sprites/player/lose.png
Normal file
|
After Width: | Height: | Size: 254 KiB |
BIN
res/sprites/player/mid-left.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
res/sprites/player/mid-right.png
Normal file
|
After Width: | Height: | Size: 226 KiB |
BIN
res/sprites/player/up-left.png
Normal file
|
After Width: | Height: | Size: 247 KiB |
BIN
res/sprites/player/up-right.png
Normal file
|
After Width: | Height: | Size: 256 KiB |
BIN
res/sprites/player/win.png
Normal file
|
After Width: | Height: | Size: 396 KiB |
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -7,7 +7,39 @@
|
|||
(imugi input)
|
||||
(imugi scene)
|
||||
(imugi math)
|
||||
(bd ui))
|
||||
(imugi resource)
|
||||
(imugi drawing))
|
||||
(bd ui)
|
||||
|
||||
(define draw-player-sprite
|
||||
(make-system
|
||||
'draw-player-sprite
|
||||
0
|
||||
'global
|
||||
'()
|
||||
(lambda ()
|
||||
(push-render-object 'screen
|
||||
-1
|
||||
(lambda ()
|
||||
(draw-texture-2d
|
||||
(vec 50 300)
|
||||
(texture "../res/sprites/player/lose.png")
|
||||
(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 500 300)
|
||||
(texture "../res/sprites/enemy/win.png")
|
||||
(make-color 1 1 1 1)))))))
|
||||
|
||||
(export lose-screen)
|
||||
(define (lose-screen arena-scene menu-scene)
|
||||
|
|
@ -17,7 +49,9 @@
|
|||
push-actions
|
||||
draw-labels
|
||||
handle-buttons
|
||||
|
||||
draw-player-sprite
|
||||
draw-enemy-sprite
|
||||
|
||||
(entity
|
||||
(title
|
||||
(vec
|
||||
|
|
|
|||
|
|
@ -7,8 +7,40 @@
|
|||
(imugi input)
|
||||
(imugi scene)
|
||||
(imugi math)
|
||||
(imugi resource)
|
||||
(imugi drawing)
|
||||
(bd ui))
|
||||
|
||||
(define draw-player-sprite
|
||||
(make-system
|
||||
'draw-player-sprite
|
||||
0
|
||||
'global
|
||||
'()
|
||||
(lambda ()
|
||||
(push-render-object 'screen
|
||||
-1
|
||||
(lambda ()
|
||||
(draw-texture-2d
|
||||
(vec 50 300)
|
||||
(texture "../res/sprites/player/win.png")
|
||||
(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 500 300)
|
||||
(texture "../res/sprites/enemy/lose.png")
|
||||
(make-color 1 1 1 1)))))))
|
||||
|
||||
(export win-screen)
|
||||
(define (win-screen arena-scene menu-scene)
|
||||
(play-sound (load-sound "../res/music/Win.wav"))
|
||||
|
|
@ -17,6 +49,8 @@
|
|||
push-actions
|
||||
draw-labels
|
||||
handle-buttons
|
||||
draw-player-sprite
|
||||
draw-enemy-sprite
|
||||
|
||||
(entity
|
||||
(title
|
||||
|
|
|
|||