bitter-duel/src/lose-screen.scm
2026-05-24 17:01:06 +08:00

100 lines
1.9 KiB
Scheme

(module (lose-screen) ()
(import scheme
(chicken base)
(chicken module)
raylib
(imugi core)
(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/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)
(play-sound (load-sound "../res/music/Lose.wav"))
(scene
push-actions
draw-labels
handle-buttons
draw-player-sprite
draw-enemy-sprite
(entity
(title
(vec
0
(/ (cdr (*window-size*))
6))
"You have lost!"
centered: (cons #t #f)))
(entity
(button
;; Roughly centered.
;; these are ugly, hardcoded values.
(vec (- (/ (car (*window-size*))
2)
50)
(- (/ (car (*window-size*))
2)
100))
;; Nested footer text
(footer
(vec 0 0) ;; this vec doesn't matter, it's overwritten internally
"Play Again?")
(lambda ()
((arena-scene menu-scene)))))
(entity
(button
;; Roughly centered.
;; these are ugly, hardcoded values.
(vec (- (/ (car (*window-size*))
2)
50)
(- (/ (car (*window-size*))
2)
170))
;; Nested footer text
(footer
(vec 0 0) ;; this vec doesn't matter, it's overwritten internally
"Back to Menu")
(lambda ()
((menu-scene
(lambda ()
((arena-scene menu-scene))))))))))
)