Compare commits
No commits in common. "20d7c75b07488fe34694f1aa756ff534d697142b" and "8d4745832d2793cc2137a5150430c27c38cb7c7c" have entirely different histories.
20d7c75b07
...
8d4745832d
3 changed files with 28 additions and 36 deletions
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 225 B |
|
|
@ -29,7 +29,7 @@
|
||||||
;; global vars
|
;; global vars
|
||||||
(var player-art nil) ; 25x50 pixels each player is 25x25
|
(var player-art nil) ; 25x50 pixels each player is 25x25
|
||||||
(var dust-sprite nil) ; 35x35 pixels
|
(var dust-sprite nil) ; 35x35 pixels
|
||||||
(var battery-bar-sprite nil)
|
(var ui-bg nil)
|
||||||
(var walls-sprite nil)
|
(var walls-sprite nil)
|
||||||
(var walls-batch nil)
|
(var walls-batch nil)
|
||||||
(var wall-quads nil)
|
(var wall-quads nil)
|
||||||
|
|
@ -65,7 +65,7 @@
|
||||||
;; load world images
|
;; load world images
|
||||||
(set walls-sprite (love.graphics.newImage "assets/walls.png"))
|
(set walls-sprite (love.graphics.newImage "assets/walls.png"))
|
||||||
(set walls-batch (love.graphics.newSpriteBatch walls-sprite 2500))
|
(set walls-batch (love.graphics.newSpriteBatch walls-sprite 2500))
|
||||||
(set battery-bar-sprite (love.graphics.newImage "assets/battery_bar.png"))
|
(set ui-bg (love.graphics.newImage "assets/ui.png"))
|
||||||
|
|
||||||
;; load wall quads
|
;; load wall quads
|
||||||
(set wall-quads [])
|
(set wall-quads [])
|
||||||
|
|
@ -132,42 +132,34 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
||||||
(each [_ collider (pairs collider-debug-boxes)]
|
(each [_ collider (pairs collider-debug-boxes)]
|
||||||
(love.graphics.rectangle "line" collider.x collider.y collider.width collider.height))))
|
(love.graphics.rectangle "line" collider.x collider.y collider.width collider.height))))
|
||||||
|
|
||||||
(local has-true? (fn [lst]
|
|
||||||
(accumulate [found? false _ v (ipairs lst)]
|
|
||||||
(or found? v))))
|
|
||||||
|
|
||||||
; All true
|
|
||||||
(local all-true? (fn [lst]
|
|
||||||
(accumulate [result true _ v (ipairs lst)]
|
|
||||||
(and result v))))
|
|
||||||
|
|
||||||
(fn love.update [dt]
|
(fn love.update [dt]
|
||||||
; move / rotate player
|
; move / rotate player
|
||||||
(let [
|
(let [
|
||||||
d-key (love.keyboard.isDown :d)
|
d (love.keyboard.isDown :d)
|
||||||
a-key (love.keyboard.isDown :a)
|
a (love.keyboard.isDown :a)
|
||||||
e-key (love.keyboard.isDown :e)
|
e (love.keyboard.isDown :e)
|
||||||
q-key (love.keyboard.isDown :q)]
|
q (love.keyboard.isDown :q)]
|
||||||
; (print (fennel.view {: d-key : a-key : e-key : q-key}))
|
|
||||||
(match {:d-key d-key :a-key a-key :e-key e-key :q-key q-key}
|
(case [d a e q]
|
||||||
{:d-key true :a-key false :e-key false :q-key false} (tset player :rot (+ player.rot (* dt 2)))
|
[true false false false] (tset player :rot (+ player.rot (* dt 2)))
|
||||||
{:d-key false :a-key true :e-key false :q-key false} (tset player :rot (- player.rot (* dt 2)))
|
[false true false false] (tset player :rot (- player.rot (* dt 2)))
|
||||||
{:d-key false :a-key false :e-key true :q-key false} (tset player :rot (- player.rot (* dt 2)))
|
[false false true false] (tset player :rot (- player.rot (* dt 2)))
|
||||||
{:d-key false :a-key false :e-key false :q-key true} (tset player :rot (+ player.rot (* dt 2)))
|
[false false false true] (tset player :rot (+ player.rot (* dt 2)))
|
||||||
)
|
)
|
||||||
(when (and (> player.battery 0) (or d-key a-key e-key q-key))
|
|
||||||
(let [
|
(if (or d a e q)
|
||||||
dir-fn (if (or d-key a-key) #(+ $1 $2) #(- $1 $2))
|
(let [
|
||||||
new-x (dir-fn player.x (* player.speed dt (math.cos player.rot)))
|
dir-fn (if (or d a) #(+ $1 $2) #(- $1 $2))
|
||||||
new-y (dir-fn player.y (* player.speed dt (math.sin player.rot)))
|
new-x (dir-fn player.x (* player.speed dt (math.cos player.rot)))
|
||||||
(x y) (bump-world:move player new-x new-y)]
|
new-y (dir-fn player.y (* player.speed dt (math.sin player.rot)))
|
||||||
(tset player :x x)
|
(x y) (bump-world:move player new-x new-y)]
|
||||||
(tset player :y y))
|
(tset player :x x)
|
||||||
(if (> player.battery 0)
|
(tset player :y y))))
|
||||||
(tset player :battery (- player.battery (* dt 2))))))
|
|
||||||
;; Update camera to follow player (keep player centered on screen)
|
;; Update camera to follow player (keep player centered on screen)
|
||||||
(tset camera :x (- player.x (/ screen.canvas-w 2)))
|
(tset camera :x (- player.x (/ screen.canvas-w 2)))
|
||||||
(tset camera :y (- player.y (/ screen.canvas-h 2))))
|
(tset camera :y (- player.y (/ screen.canvas-h 2)))
|
||||||
|
)
|
||||||
|
|
||||||
(fn draw-ui []
|
(fn draw-ui []
|
||||||
(love.graphics.push)
|
(love.graphics.push)
|
||||||
|
|
@ -176,12 +168,12 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
||||||
(set-color :cream)
|
(set-color :cream)
|
||||||
(love.graphics.rectangle "fill" 0 0 screen.canvas-w 100)
|
(love.graphics.rectangle "fill" 0 0 screen.canvas-w 100)
|
||||||
(reset-color)
|
(reset-color)
|
||||||
(love.graphics.draw battery-bar-sprite 78 8)
|
(love.graphics.draw ui-bg 0 0)
|
||||||
(set-color :dark-purple)
|
(set-color :dark-purple)
|
||||||
(love.graphics.setFont font)
|
(love.graphics.setFont font)
|
||||||
(love.graphics.print (.. "Battery: " (string.format "%d" player.battery) "%") 6 7)
|
(love.graphics.print "Battery:" 20 6)
|
||||||
(set-color :light-blue)
|
(set-color :light-blue)
|
||||||
(love.graphics.rectangle "fill" 80 12 (* 152 (/ player.battery 100)) 4)
|
(love.graphics.rectangle "fill" 72 12 (* 152 (/ player.battery 100)) 4)
|
||||||
(love.graphics.setFont font-small)
|
(love.graphics.setFont font-small)
|
||||||
(set-color :dark-purple)
|
(set-color :dark-purple)
|
||||||
(love.graphics.print "100%" 229 2)
|
(love.graphics.print "100%" 229 2)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue