SFX and some more sprites
|
|
@ -41,7 +41,7 @@
|
||||||
width
|
width
|
||||||
(cond
|
(cond
|
||||||
((eqv? entity 'player) (make-color 0 0 1 1))
|
((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)))
|
(else (make-color 0 0 0 1)))
|
||||||
(not (eqv? entity 'none))
|
(not (eqv? entity 'none))
|
||||||
2)))))
|
2)))))
|
||||||
|
|
|
||||||
|
|
@ -208,6 +208,7 @@
|
||||||
;; If button is clicked, exec button click func
|
;; If button is clicked, exec button click func
|
||||||
(define (do-button-callback button)
|
(define (do-button-callback button)
|
||||||
(when (eqv? 'clicked (button-state button))
|
(when (eqv? 'clicked (button-state button))
|
||||||
|
(play-sound (load-sound "../res/sfx/click.wav"))
|
||||||
((button-click-fn button))))
|
((button-click-fn button))))
|
||||||
|
|
||||||
;; Needs to be added to do buttons
|
;; 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 base)
|
||||||
(chicken module)
|
(chicken module)
|
||||||
(chicken string)
|
(chicken string)
|
||||||
|
raylib
|
||||||
(imugi core)
|
(imugi core)
|
||||||
(imugi input)
|
(imugi input)
|
||||||
(imugi scene)
|
(imugi scene)
|
||||||
|
(imugi resource)
|
||||||
|
(imugi drawing)
|
||||||
(imugi math)
|
(imugi math)
|
||||||
(bd ui)
|
(bd ui)
|
||||||
(bd random)
|
(bd random)
|
||||||
|
|
@ -20,7 +23,7 @@
|
||||||
(define battle-state 'active)
|
(define battle-state 'active)
|
||||||
|
|
||||||
(define player 'player)
|
(define player 'player)
|
||||||
(define enemy 'foe)
|
(define enemy 'enemy)
|
||||||
(define empty 'none)
|
(define empty 'none)
|
||||||
|
|
||||||
(define grid-size 5)
|
(define grid-size 5)
|
||||||
|
|
@ -105,8 +108,8 @@
|
||||||
(newline))
|
(newline))
|
||||||
|
|
||||||
(define (attempt-attack attack-dir unit)
|
(define (attempt-attack attack-dir unit)
|
||||||
(display (unit-type unit))
|
|
||||||
(newline)
|
(newline)
|
||||||
|
(play-sound (load-sound "../res/sfx/hit.wav"))
|
||||||
(let* ((target (if (eqv? (unit-type unit) player) enemy-unit player-unit))
|
(let* ((target (if (eqv? (unit-type unit) player) enemy-unit player-unit))
|
||||||
(outcome (resolve-combat (attack-from-stance attack-dir (unit-stance unit))
|
(outcome (resolve-combat (attack-from-stance attack-dir (unit-stance unit))
|
||||||
(defense-from-stance attack-dir
|
(defense-from-stance attack-dir
|
||||||
|
|
@ -114,15 +117,16 @@
|
||||||
(unit-stance unit)))))
|
(unit-stance unit)))))
|
||||||
(if (eqv? outcome 'hit)
|
(if (eqv? outcome 'hit)
|
||||||
(begin
|
(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))
|
(set-unit-health! target (- (unit-health target) 1))
|
||||||
(when (= 0 (unit-health target))
|
(when (= 0 (unit-health target))
|
||||||
(set! battle-state 'ended)
|
(set! battle-state 'ended)
|
||||||
(if (eqv? player (unit-type target))
|
(if (eqv? player (unit-type target))
|
||||||
(lose)
|
(lose)
|
||||||
(win))))
|
(win)))))
|
||||||
(display (conc (unit-type unit) " misses!")))
|
|
||||||
(newline)
|
|
||||||
(set-unit-hand-pos! unit (opposite-pos attack-dir))))
|
(set-unit-hand-pos! unit (opposite-pos attack-dir))))
|
||||||
|
|
||||||
(define (move-unit unit pos)
|
(define (move-unit unit pos)
|
||||||
|
|
@ -157,6 +161,48 @@
|
||||||
((v= (unit-pos enemy-unit) (vec j i)) enemy)
|
((v= (unit-pos enemy-unit) (vec j i)) enemy)
|
||||||
(else empty))))))))))
|
(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)
|
(export arena)
|
||||||
(define (arena menu-scene)
|
(define (arena menu-scene)
|
||||||
;; Reset state
|
;; Reset state
|
||||||
|
|
@ -198,6 +244,8 @@
|
||||||
draw-grid
|
draw-grid
|
||||||
handle-buttons
|
handle-buttons
|
||||||
handle-music-players
|
handle-music-players
|
||||||
|
draw-player-sprite
|
||||||
|
draw-enemy-sprite
|
||||||
|
|
||||||
(entity
|
(entity
|
||||||
(music-player
|
(music-player
|
||||||
|
|
@ -351,11 +399,11 @@
|
||||||
;; Player order display
|
;; Player order display
|
||||||
(entity
|
(entity
|
||||||
(footer
|
(footer
|
||||||
(vec 0 0)
|
(vec 600 400)
|
||||||
"")
|
"")
|
||||||
(dynamic-label
|
(dynamic-label
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(conc "Order:\n Move: "
|
(conc "Your Order:\n Move: "
|
||||||
(if (order-mov player-order)
|
(if (order-mov player-order)
|
||||||
(let ((m (order-mov player-order)))
|
(let ((m (order-mov player-order)))
|
||||||
(cond
|
(cond
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,39 @@
|
||||||
(imugi input)
|
(imugi input)
|
||||||
(imugi scene)
|
(imugi scene)
|
||||||
(imugi math)
|
(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)
|
(export lose-screen)
|
||||||
(define (lose-screen arena-scene menu-scene)
|
(define (lose-screen arena-scene menu-scene)
|
||||||
|
|
@ -17,7 +49,9 @@
|
||||||
push-actions
|
push-actions
|
||||||
draw-labels
|
draw-labels
|
||||||
handle-buttons
|
handle-buttons
|
||||||
|
draw-player-sprite
|
||||||
|
draw-enemy-sprite
|
||||||
|
|
||||||
(entity
|
(entity
|
||||||
(title
|
(title
|
||||||
(vec
|
(vec
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,40 @@
|
||||||
(imugi input)
|
(imugi input)
|
||||||
(imugi scene)
|
(imugi scene)
|
||||||
(imugi math)
|
(imugi math)
|
||||||
|
(imugi resource)
|
||||||
|
(imugi drawing)
|
||||||
(bd ui))
|
(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)
|
(export win-screen)
|
||||||
(define (win-screen arena-scene menu-scene)
|
(define (win-screen arena-scene menu-scene)
|
||||||
(play-sound (load-sound "../res/music/Win.wav"))
|
(play-sound (load-sound "../res/music/Win.wav"))
|
||||||
|
|
@ -17,6 +49,8 @@
|
||||||
push-actions
|
push-actions
|
||||||
draw-labels
|
draw-labels
|
||||||
handle-buttons
|
handle-buttons
|
||||||
|
draw-player-sprite
|
||||||
|
draw-enemy-sprite
|
||||||
|
|
||||||
(entity
|
(entity
|
||||||
(title
|
(title
|
||||||
|
|
|
||||||