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