diff --git a/game.scm b/game.scm index a150978..2eac3b5 100644 --- a/game.scm +++ b/game.scm @@ -258,28 +258,26 @@ (define (draw-exit pos) (draw-tile context tileset 27 (vec2-x pos) (vec2-y pos))) -(define (draw-wall pos type) +(define (draw-wire-state pos state) (let ((x (vec2-x pos)) (y (vec2-y pos))) - (match type + (match state ('electron-head (draw-tile context tileset 4 x y)) ('electron-tail (draw-tile context tileset 5 x y)) (_ #f)))) +(define (draw-wall pos type) + (draw-wire-state pos type)) + (define (draw-block pos type) (let ((x (vec2-x pos)) (y (vec2-y pos))) (match type ('crate (draw-tile context tileset 29 x y)) (_ (draw-tile context tileset 3 x y))) - (match type - ('electron-head - (draw-tile context tileset 4 x y)) - ('electron-tail - (draw-tile context tileset 5 x y)) - (_ #f)))) + (draw-wire-state pos type))) (define (draw-clock-emitter pos) (draw-tile context tileset 48 (vec2-x pos) (vec2-y pos))) @@ -293,14 +291,12 @@ (define (draw-gate pos open?) (draw-tile context tileset (if open? 46 45) (vec2-x pos) (vec2-y pos))) -(define (draw-and-gate pos) - (draw-tile context tileset 42 (vec2-x pos) (vec2-y pos))) - -(define (draw-or-gate pos) - (draw-tile context tileset 43 (vec2-x pos) (vec2-y pos))) - -(define (draw-xor-gate pos) - (draw-tile context tileset 44 (vec2-x pos) (vec2-y pos))) +(define (draw-logic-gate pos state id) + (let ((x (vec2-x pos)) + (y (vec2-y pos))) + (draw-tile context tileset 2 x y) + (draw-tile context tileset id x y) + (draw-wire-state pos state))) (define (draw-electric-switch pos on?) (draw-tile context tileset (if on? 7 6) (vec2-x pos) (vec2-y pos))) @@ -316,9 +312,9 @@ (('floor-switch pos on?) (draw-floor-switch pos on?)) (('gem pos) (draw-gem pos)) (('gate pos open?) (draw-gate pos open?)) - (('and-gate pos) (draw-and-gate pos)) - (('xor-gate pos) (draw-xor-gate pos)) - (('or-gate pos) (draw-or-gate pos)) + (('and-gate pos state) (draw-logic-gate pos state 42)) + (('or-gate pos state) (draw-logic-gate pos state 43)) + (('xor-gate pos state) (draw-logic-gate pos state 44)) (('electric-switch pos on?) (draw-electric-switch pos on?)))) (define (draw-background) diff --git a/modules/game/actors.scm b/modules/game/actors.scm index e8eb0f1..9d327a5 100644 --- a/modules/game/actors.scm +++ b/modules/game/actors.scm @@ -273,7 +273,7 @@ ($ state 'electron-head)) (_ ($ state 'copper)))))) (('alive?) #t) - (('describe) `(and-gate ,position)) + (('describe) `(and-gate ,position ,($ state))) (('collide other offset grid-info) #f))) (define (^xor-gate bcom x y) @@ -313,7 +313,7 @@ ($ state 'electron-head)) (_ ($ state 'copper)))))) (('alive?) #t) - (('describe) `(xor-gate ,position)) + (('describe) `(xor-gate ,position ,($ state))) (('collide other offset grid-info) #f))) (define (^or-gate bcom x y) @@ -357,7 +357,7 @@ ($ state 'electron-head)) (_ ($ state 'copper)))))) (('alive?) #t) - (('describe) `(or-gate ,position)) + (('describe) `(or-gate ,position ,($ state))) (('collide other offset grid-info) #f))) (define (^player bcom x y)