Render background and electron for logic gates

This commit is contained in:
Juliana Sims 2024-05-22 14:42:27 -04:00
parent 793a9ef027
commit 815c3c809a
2 changed files with 18 additions and 22 deletions

View file

@ -258,28 +258,26 @@
(define (draw-exit pos) (define (draw-exit pos)
(draw-tile context tileset 27 (vec2-x pos) (vec2-y 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)) (let ((x (vec2-x pos))
(y (vec2-y pos))) (y (vec2-y pos)))
(match type (match state
('electron-head ('electron-head
(draw-tile context tileset 4 x y)) (draw-tile context tileset 4 x y))
('electron-tail ('electron-tail
(draw-tile context tileset 5 x y)) (draw-tile context tileset 5 x y))
(_ #f)))) (_ #f))))
(define (draw-wall pos type)
(draw-wire-state pos type))
(define (draw-block pos type) (define (draw-block pos type)
(let ((x (vec2-x pos)) (let ((x (vec2-x pos))
(y (vec2-y pos))) (y (vec2-y pos)))
(match type (match type
('crate (draw-tile context tileset 29 x y)) ('crate (draw-tile context tileset 29 x y))
(_ (draw-tile context tileset 3 x y))) (_ (draw-tile context tileset 3 x y)))
(match type (draw-wire-state pos type)))
('electron-head
(draw-tile context tileset 4 x y))
('electron-tail
(draw-tile context tileset 5 x y))
(_ #f))))
(define (draw-clock-emitter pos) (define (draw-clock-emitter pos)
(draw-tile context tileset 48 (vec2-x pos) (vec2-y pos))) (draw-tile context tileset 48 (vec2-x pos) (vec2-y pos)))
@ -293,14 +291,12 @@
(define (draw-gate pos open?) (define (draw-gate pos open?)
(draw-tile context tileset (if open? 46 45) (vec2-x pos) (vec2-y pos))) (draw-tile context tileset (if open? 46 45) (vec2-x pos) (vec2-y pos)))
(define (draw-and-gate pos) (define (draw-logic-gate pos state id)
(draw-tile context tileset 42 (vec2-x pos) (vec2-y pos))) (let ((x (vec2-x pos))
(y (vec2-y pos)))
(define (draw-or-gate pos) (draw-tile context tileset 2 x y)
(draw-tile context tileset 43 (vec2-x pos) (vec2-y pos))) (draw-tile context tileset id x y)
(draw-wire-state pos state)))
(define (draw-xor-gate pos)
(draw-tile context tileset 44 (vec2-x pos) (vec2-y pos)))
(define (draw-electric-switch pos on?) (define (draw-electric-switch pos on?)
(draw-tile context tileset (if on? 7 6) (vec2-x pos) (vec2-y pos))) (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?)) (('floor-switch pos on?) (draw-floor-switch pos on?))
(('gem pos) (draw-gem pos)) (('gem pos) (draw-gem pos))
(('gate pos open?) (draw-gate pos open?)) (('gate pos open?) (draw-gate pos open?))
(('and-gate pos) (draw-and-gate pos)) (('and-gate pos state) (draw-logic-gate pos state 42))
(('xor-gate pos) (draw-xor-gate pos)) (('or-gate pos state) (draw-logic-gate pos state 43))
(('or-gate pos) (draw-or-gate pos)) (('xor-gate pos state) (draw-logic-gate pos state 44))
(('electric-switch pos on?) (draw-electric-switch pos on?)))) (('electric-switch pos on?) (draw-electric-switch pos on?))))
(define (draw-background) (define (draw-background)

View file

@ -273,7 +273,7 @@
($ state 'electron-head)) ($ state 'electron-head))
(_ ($ state 'copper)))))) (_ ($ state 'copper))))))
(('alive?) #t) (('alive?) #t)
(('describe) `(and-gate ,position)) (('describe) `(and-gate ,position ,($ state)))
(('collide other offset grid-info) #f))) (('collide other offset grid-info) #f)))
(define (^xor-gate bcom x y) (define (^xor-gate bcom x y)
@ -313,7 +313,7 @@
($ state 'electron-head)) ($ state 'electron-head))
(_ ($ state 'copper)))))) (_ ($ state 'copper))))))
(('alive?) #t) (('alive?) #t)
(('describe) `(xor-gate ,position)) (('describe) `(xor-gate ,position ,($ state)))
(('collide other offset grid-info) #f))) (('collide other offset grid-info) #f)))
(define (^or-gate bcom x y) (define (^or-gate bcom x y)
@ -357,7 +357,7 @@
($ state 'electron-head)) ($ state 'electron-head))
(_ ($ state 'copper)))))) (_ ($ state 'copper))))))
(('alive?) #t) (('alive?) #t)
(('describe) `(or-gate ,position)) (('describe) `(or-gate ,position ,($ state)))
(('collide other offset grid-info) #f))) (('collide other offset grid-info) #f)))
(define (^player bcom x y) (define (^player bcom x y)