From 2dc354229d726631d67ef01c0320aa3642560114 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 22 May 2024 18:21:45 -0400 Subject: [PATCH] Draw player dead sprite. --- game.scm | 15 +++++++++++---- modules/game/actors.scm | 9 +++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/game.scm b/game.scm index 11cc699..29de759 100644 --- a/game.scm +++ b/game.scm @@ -252,8 +252,8 @@ (hashtable-set! cache x str) str))))) -(define (draw-player pos) - (draw-tile context tileset 0 (vec2-x pos) (vec2-y pos))) +(define (draw-player pos alive?) + (draw-tile context tileset (if alive? 0 20) (vec2-x pos) (vec2-y pos))) (define (draw-exit pos) (draw-tile context tileset 27 (vec2-x pos) (vec2-y pos))) @@ -308,7 +308,7 @@ (define (draw-object obj) (match obj (#f #f) - (('player pos) (draw-player pos)) + (('player pos alive?) (draw-player pos alive?)) (('exit pos) #t) ; drawn via background (('wall pos type) (draw-wall pos type)) (('block pos type) (draw-block pos type)) @@ -334,7 +334,14 @@ (define (draw-level) (draw-background) - (for-each draw-object *objects*)) + (for-each draw-object *objects*) + (let ((alive? (with-goblins ($ (level-player *level*) 'alive?)))) + (unless alive? + (set-fill-color! context "rgba(0,0,0,0.65)") + (fill-rect context 0.0 0.0 game-width game-height) + (set-fill-color! context "#ffffff") + (set-text-align! context "center") + (fill-text context "OUCH... x_x" (/ game-width 2.0) (/ game-height 2.0))))) (define (draw-win) (set-fill-color! context "#x000000") diff --git a/modules/game/actors.scm b/modules/game/actors.scm index 3a4ce1f..ea1f488 100644 --- a/modules/game/actors.scm +++ b/modules/game/actors.scm @@ -443,7 +443,7 @@ (('exit obj grid-info) #f) (('wire-state grid-info) #f) (('alive?) ($ alive?)) - (('describe) `(player ,($ position))) + (('describe) `(player ,($ position), ($ alive?))) (('collide other offset grid-info) (define (reverse-move) (match ($ position) @@ -641,11 +641,8 @@ (match-lambda* (('tick) (tick)) (('describe) - (let ((player ($ player)) - (obj-descs (map (lambda (obj) ($ obj 'describe)) ($ objects)))) - (if ($ player 'alive?) - (cons ($ player 'describe) obj-descs) - obj-descs))) + (cons ($ ($ player) 'describe) + (map (lambda (obj) ($ obj 'describe)) ($ objects)))) (('add-object obj) (if (eq? ($ obj 'type) 'player) ($ player obj)