diff --git a/two_player_cleaning_game/assets/battery_bar.aseprite b/two_player_cleaning_game/assets/battery_bar.aseprite deleted file mode 100644 index ef1f0c4..0000000 Binary files a/two_player_cleaning_game/assets/battery_bar.aseprite and /dev/null differ diff --git a/two_player_cleaning_game/assets/battery_bar.png b/two_player_cleaning_game/assets/battery_bar.png deleted file mode 100644 index d4efcc9..0000000 Binary files a/two_player_cleaning_game/assets/battery_bar.png and /dev/null differ diff --git a/two_player_cleaning_game/main.fnl b/two_player_cleaning_game/main.fnl index 966f235..007bb31 100644 --- a/two_player_cleaning_game/main.fnl +++ b/two_player_cleaning_game/main.fnl @@ -29,7 +29,7 @@ ;; global vars (var player-art nil) ; 25x50 pixels each player is 25x25 (var dust-sprite nil) ; 35x35 pixels -(var battery-bar-sprite nil) +(var ui-bg 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 battery-bar-sprite (love.graphics.newImage "assets/battery_bar.png")) + (set ui-bg (love.graphics.newImage "assets/ui.png")) ;; load 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)] (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-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))) - ) - (when (and (> player.battery 0) (or d-key a-key e-key q-key)) - (let [ - 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)) - (if (> player.battery 0) - (tset player :battery (- player.battery (* dt 2)))))) + 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))) + ) + + (if (or d a e q) + (let [ + dir-fn (if (or d a) #(+ $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)))) + ;; 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) @@ -176,12 +168,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 battery-bar-sprite 78 8) + (love.graphics.draw ui-bg 0 0) (set-color :dark-purple) (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) - (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) (set-color :dark-purple) (love.graphics.print "100%" 229 2)