Add logic gate animations.
This commit is contained in:
parent
d24124e57e
commit
9027df5f20
1 changed files with 29 additions and 11 deletions
40
game.scm
40
game.scm
|
@ -388,6 +388,21 @@
|
||||||
(56 .25)
|
(56 .25)
|
||||||
(76 .25)
|
(76 .25)
|
||||||
(96 .25))
|
(96 .25))
|
||||||
|
(define-animation anim:and-gate
|
||||||
|
(42 .4)
|
||||||
|
(115 .4)
|
||||||
|
(135 .4)
|
||||||
|
(155 .4))
|
||||||
|
(define-animation anim:or-gate
|
||||||
|
(43 .4)
|
||||||
|
(116 .4)
|
||||||
|
(136 .4)
|
||||||
|
(156 .4))
|
||||||
|
(define-animation anim:xor-gate
|
||||||
|
(44 .4)
|
||||||
|
(117 .4)
|
||||||
|
(137 .4)
|
||||||
|
(157 .4))
|
||||||
|
|
||||||
(define number->string*
|
(define number->string*
|
||||||
(let ((cache (make-eq-hashtable))) ; assuming fixnums only
|
(let ((cache (make-eq-hashtable))) ; assuming fixnums only
|
||||||
|
@ -397,13 +412,13 @@
|
||||||
(hashtable-set! cache x str)
|
(hashtable-set! cache x str)
|
||||||
str)))))
|
str)))))
|
||||||
|
|
||||||
(define (draw-rotated-tile id pos angle)
|
(define (draw-rotated-animation anim pos angle)
|
||||||
(let ((hw (* tile-width 0.5))
|
(let ((hw (* tile-width 0.5))
|
||||||
(hh (* tile-height 0.5)))
|
(hh (* tile-height 0.5)))
|
||||||
(save! context)
|
(save! context)
|
||||||
(translate! context (+ (vec2-x pos) hw) (+ (vec2-y pos) hh))
|
(translate! context (+ (vec2-x pos) hw) (+ (vec2-y pos) hh))
|
||||||
(rotate! context angle)
|
(rotate! context angle)
|
||||||
(draw-tile context tileset id (- hw) (- hh))
|
(draw-animation context anim (- hw) (- hh))
|
||||||
(restore! context)))
|
(restore! context)))
|
||||||
|
|
||||||
(define (draw-player pos alive?)
|
(define (draw-player pos alive?)
|
||||||
|
@ -467,15 +482,15 @@
|
||||||
(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-logic-gate pos direction state id)
|
(define (draw-logic-gate pos direction state anim)
|
||||||
(let ((x (vec2-x pos))
|
(let ((x (vec2-x pos))
|
||||||
(y (vec2-y pos)))
|
(y (vec2-y pos)))
|
||||||
(draw-tile context tileset 2 x y)
|
(draw-tile context tileset 2 x y)
|
||||||
(match direction
|
(match direction
|
||||||
('right (draw-tile context tileset id x y))
|
('right (draw-animation context anim x y))
|
||||||
('left (draw-rotated-tile id pos pi))
|
('left (draw-rotated-animation anim pos pi))
|
||||||
('up (draw-rotated-tile id pos (* pi 1.5)))
|
('up (draw-rotated-animation anim pos (* pi 1.5)))
|
||||||
('down (draw-rotated-tile id pos (* pi 0.5))))
|
('down (draw-rotated-animation anim pos (* pi 0.5))))
|
||||||
(draw-wire-state pos state)))
|
(draw-wire-state pos state)))
|
||||||
|
|
||||||
(define (draw-electric-switch pos on?)
|
(define (draw-electric-switch pos on?)
|
||||||
|
@ -500,9 +515,9 @@
|
||||||
(('gem pos) (draw-gem pos))
|
(('gem pos) (draw-gem pos))
|
||||||
(('ghost-gem pos) (draw-ghost-gem pos))
|
(('ghost-gem pos) (draw-ghost-gem pos))
|
||||||
(('gate pos open?) (draw-gate pos open?))
|
(('gate pos open?) (draw-gate pos open?))
|
||||||
(('and-gate pos direction state) (draw-logic-gate pos direction state 42))
|
(('and-gate pos direction state) (draw-logic-gate pos direction state anim:and-gate))
|
||||||
(('or-gate pos direction state) (draw-logic-gate pos direction state 43))
|
(('or-gate pos direction state) (draw-logic-gate pos direction state anim:or-gate))
|
||||||
(('xor-gate pos direction state) (draw-logic-gate pos direction state 44))
|
(('xor-gate pos direction state) (draw-logic-gate pos direction state anim:xor-gate))
|
||||||
(('electric-switch pos on?) (draw-electric-switch pos on?))
|
(('electric-switch pos on?) (draw-electric-switch pos on?))
|
||||||
(('electron-warp pos state) (draw-electron-warp pos state))))
|
(('electron-warp pos state) (draw-electron-warp pos state))))
|
||||||
|
|
||||||
|
@ -623,7 +638,10 @@
|
||||||
(update-animation anim:electron-head dt)
|
(update-animation anim:electron-head dt)
|
||||||
(update-animation anim:electron-tail dt)
|
(update-animation anim:electron-tail dt)
|
||||||
(update-animation anim:gem dt)
|
(update-animation anim:gem dt)
|
||||||
(update-animation anim:ghost-gem dt))
|
(update-animation anim:ghost-gem dt)
|
||||||
|
(update-animation anim:and-gate dt)
|
||||||
|
(update-animation anim:or-gate dt)
|
||||||
|
(update-animation anim:xor-gate dt))
|
||||||
(clear-rect context 0.0 0.0 *canvas-width* *canvas-height*)
|
(clear-rect context 0.0 0.0 *canvas-width* *canvas-height*)
|
||||||
(set-transform! context 1.0 0.0 0.0 1.0 0.0 0.0)
|
(set-transform! context 1.0 0.0 0.0 1.0 0.0 0.0)
|
||||||
(scale! context *canvas-scale* *canvas-scale*)
|
(scale! context *canvas-scale* *canvas-scale*)
|
||||||
|
|
Loading…
Add table
Reference in a new issue