Prepare to support drawing rotated tiles
This commit is contained in:
parent
d68b5d0491
commit
1e91411687
5 changed files with 54 additions and 40 deletions
|
@ -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))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue