; Draw the overlay ; Relies on information about the player and the display (local player (require :state)) (var screen-width 1280) (var screen-height 720) ; This draws the oxygen ui ; Sequential blocks, up to 10; each block 10% (fn oxygen-ui [x y] (local (bx by bb o) (values 10 10 15 (player.getO))) (local bn (math.floor (/ o 10))) (var (dx dy) (values 0 50)) (local bp (* 5 (% o 10))) (love.graphics.setColor 0 1 0 0.25) (for [i 1 10] (love.graphics.polygon "line" (+ x dx 1) (+ y by 1) (+ x dx bx 1) (+ y by 1) (+ x dx bx 1) (+ y by dy 1) (+ x dx 1) (+ y by dy 1)) (if (<= i bn) (love.graphics.polygon "fill" (+ x dx) (+ y by) (+ x dx bx) (+ y by) (+ x dx bx) (+ y by dy) (+ x dx) (+ y by dy))) (if (= i (+ bn 1)) (love.graphics.polygon "fill" (+ x dx) (+ y (- (+ dy by) bp)) (+ x dx bx) (+ y (- (+ dy by) bp)) (+ x dx bx) (+ y by dy) (+ x dx) (+ y by dy))) (set dx (+ dx bb)))) ; This draws the power ui ; Inverse-sequential blocks, up to 10; each block 10% (fn power-ui [x y] (local (bx by bb p) (values 10 10 15 (player.getP))) (local bn (math.floor (/ p 10))) (var (dx dy) (values 0 50)) (local bp (* 5 (% p 10))) (love.graphics.setColor 1 1 0 0.25) (for [i 1 10] (love.graphics.polygon "line" (- x dx 1) (+ y by 1) (- x dx bx 1) (+ y by 1) (- x dx bx 1) (+ y by dy 1) (- x dx 1) (+ y by dy 1)) (if (<= i bn) (love.graphics.polygon "fill" (- x dx) (+ y by) (- x dx bx) (+ y by) (- x dx bx) (+ y by dy) (- x dx) (+ y by dy))) (if (= i (+ bn 1)) (love.graphics.polygon "fill" (- x dx) (+ y (- (+ dy by) bp)) (- x dx bx) (+ y (- (+ dy by) bp)) (- x dx bx) (+ y by dy) (- x dx) (+ y by dy))) (set dx (+ dx bb)))) (fn overlay [dx dy] (love.graphics.translate dx (- dy)) (oxygen-ui (+ (/ screen-width 2) 100) (- screen-height 100)) (power-ui (- (/ screen-width 2) 100) (- screen-height 100)) (love.graphics.setColor 1 1 1) ) {: overlay}