Prepare to support drawing rotated tiles

This commit is contained in:
Juliana Sims 2024-05-23 16:36:05 -04:00
parent d68b5d0491
commit 1e91411687
5 changed files with 54 additions and 40 deletions

View file

@ -39,7 +39,13 @@
(define (make-level width height background objects collected-gem?)
(let ((level* (spawn ^level width height))
(background* (make-vector (* width height))))
(background* (make-vector (* width height)))
(direction->symbol
(match-lambda
(1 'right)
(2 'left)
(3 'up)
(4 'down))))
;; Unpack background tile data.
(let y-loop ((y 0))
(when (< y height)
@ -76,17 +82,20 @@
(spawn ^gem x y)))
(10 (spawn ^gate x y))
(11 (spawn ^and-gate x y
(bytevector-u8-ref objects (+ i 3))))
(direction->symbol
(bytevector-u8-ref objects (+ i 3)))))
(12 (let ((target-x (bytevector-u8-ref objects (+ i 3)))
(target-y (bytevector-u8-ref objects (+ i 4))))
(spawn ^electric-switch x y target-x target-y)))
(13 (spawn ^xor-gate x y
(bytevector-u8-ref objects (+ i 3))))
(direction->symbol
(bytevector-u8-ref objects (+ i 3)))))
(14 (let ((target-x (bytevector-u8-ref objects (+ i 3)))
(target-y (bytevector-u8-ref objects (+ i 4))))
(spawn ^electron-warp x y target-x target-y)))
(15 (spawn ^or-gate x y
(bytevector-u8-ref objects (+ i 3))))
(direction->symbol
(bytevector-u8-ref objects (+ i 3)))))
(16 (spawn ^switched-emitter x y
(bytevector-u8-ref objects (+ i 3))))
(id (error "invalid level object" id))))