SFX and some more sprites

This commit is contained in:
Jakub 2026-05-24 16:49:19 +08:00
parent 277a040f5f
commit 030b35e4fa
26 changed files with 128 additions and 11 deletions

View file

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

View file

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

Binary file not shown.

BIN
res/sfx/hit.wav Normal file

Binary file not shown.

BIN
res/sfx/hurt1.wav Normal file

Binary file not shown.

BIN
res/sfx/hurt2.wav Normal file

Binary file not shown.

BIN
res/sfx/hurt3.wav Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

BIN
res/sprites/enemy/lose.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
res/sprites/enemy/win.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

BIN
res/sprites/player/lose.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
res/sprites/player/win.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

View file

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

View file

@ -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,6 +49,8 @@
push-actions
draw-labels
handle-buttons
draw-player-sprite
draw-enemy-sprite
(entity
(title

View file

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