diff --git a/two_player_cleaning_game/main.fnl b/two_player_cleaning_game/main.fnl index de8e3ce..d2f526e 100644 --- a/two_player_cleaning_game/main.fnl +++ b/two_player_cleaning_game/main.fnl @@ -18,13 +18,6 @@ :scale scale})) (local debug true) -; (local collider-debug-boxes []) -; (lambda add-collider-debug-box [x y w h] -; (table.insert collider-debug-boxes {: x : y :width w :height h})) - -; (var bump-world nil) -; (local player { :x 50 :y 50 :w 25 :h 25 :speed 80 :battery 100 :rot 0 }) - ; (lambda create-charging-station [x y] ; (let [ @@ -59,9 +52,6 @@ ; (add-collider-debug-box pad.x pad.y 25 25))) ; (table.insert objects.list station))) -; (lambda load-h-door [obj] -; (debug-print obj)) - ; (fn load-objects [] ; (let [(w h) (objects.sprite:getDimensions)] ; (set objects.quads.charging-pad (love.graphics.newQuad 0 0 25 25 w h)) @@ -74,12 +64,6 @@ ; "h_door" (load-h-door object)) ; )) -; (fn load-player [] -; (set player.battery 100) -; (set player.x (. levels :levels level-key :spawns :player-1 :x)) -; (set player.y (. levels :levels level-key :spawns :player-1 :y)) -; (bump-world:add player player.x player.y player.w player.h)) - ; (lambda load-level [lvl-name] ; (set bump-world (bump.newWorld 25)) ; (set level-key :tutorial) @@ -88,33 +72,6 @@ ; (load-walls) ; (load-objects)) -; (fn load-assets [] -; (set objects.sprite (love.graphics.newImage "assets/objects.png")) -; (set walls.sprite (love.graphics.newImage "assets/walls.png")) -; (set battery-bar-sprite (love.graphics.newImage "assets/battery_bar.png")) -; (set player-art -; (let [ -; player-sprite (love.graphics.newImage "assets/player.png") -; (w h) (player-sprite:getDimensions)] -; { -; :player-sprite player-sprite -; :player1 { -; :quads { -; :n (love.graphics.newQuad 0 0 25 25 w h) -; :s (love.graphics.newQuad 25 0 25 25 w h) -; :ne (love.graphics.newQuad 50 0 25 25 w h) -; :e (love.graphics.newQuad 75 0 25 25 w h) -; :se (love.graphics.newQuad 100 0 25 25 w h) -; :sw (love.graphics.newQuad 125 0 25 25 w h) -; :w (love.graphics.newQuad 150 0 25 25 w h) -; :nw (love.graphics.newQuad 175 0 25 25 w h) -; } -; } -; } -; )) -; ) - - (fn love.load [] (love.window.setMode screen.screen-w screen.screen-h) ; (tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h)) @@ -198,39 +155,13 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start)) ; (network.send-update player.x player.y player.rot player.battery)) ; (set net-state.net-update-timer 0))) -; (fn draw-ui [] -; (love.graphics.push) -; (love.graphics.translate 0 400) -; (let [font (love.graphics.newFont 10) font-small (love.graphics.newFont 6)] -; (set-color :cream) -; (love.graphics.rectangle "fill" 0 0 screen.canvas-w 100) -; (reset-color) -; (love.graphics.draw battery-bar-sprite 78 8) -; (set-color :dark-purple) -; (love.graphics.setFont font) -; (love.graphics.print (.. "Battery: " (string.format "%d" player.battery) "%") 6 7) -; (set-color :light-blue) -; (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) -; (set-color :light-pink) -; (love.graphics.print "125%" 267 2) -; (love.graphics.print "125%" 306 2) -; (love.graphics.print "150%" 345 2) -; (love.graphics.print "200%" 382 2) -; (set-color :dark-purple) -; (love.graphics.line 0 0 screen.canvas-w 0) -; ) -; (love.graphics.pop) -; ) (fn love.draw [] (for [i 1 99 1] (let [draw-trigger (.. "draw" i)] (pool:emit draw-trigger) - (when (and (= i 98) debug) (pool:emit "draw-debug"))))) + (when (and (= i 88) debug) (pool:emit "draw-debug"))))) ; (fn love.draw [] ; (love.graphics.setCanvas screen.canvas) diff --git a/two_player_cleaning_game/src/entities/player.fnl b/two_player_cleaning_game/src/entities/player.fnl index 6f2b2e3..02d6ea2 100644 --- a/two_player_cleaning_game/src/entities/player.fnl +++ b/two_player_cleaning_game/src/entities/player.fnl @@ -45,7 +45,8 @@ (set self.y y)) (if (> self.battery 0) (set self.battery (- self.battery (* dt 2)))))) - (beholder.trigger "PLAYER.POS" self.x self.y)) + (beholder.trigger "PLAYER.POS" self.x self.y) + (beholder.trigger "PLAYER.BATTERY" self.battery)) (fn player.load [self] (set self.battery 100) diff --git a/two_player_cleaning_game/src/levels/tutorial.fnl b/two_player_cleaning_game/src/levels/tutorial.fnl index c8f1cf1..cafa807 100644 --- a/two_player_cleaning_game/src/levels/tutorial.fnl +++ b/two_player_cleaning_game/src/levels/tutorial.fnl @@ -6,6 +6,7 @@ (local beholder (require "libs/beholder")) (local player (require "src/entities/player.fnl")) (local walls (require "src/systems/walls.fnl")) +(local hud (require "src/systems/hud.fnl")) ; (local colliders { ; :added {} @@ -42,6 +43,7 @@ (nata:oop) camera walls + (hud {: screen}) ] })] (pool:queue (player {:bump-world bump-world :level-key :tutorial})) diff --git a/two_player_cleaning_game/src/systems/camera.fnl b/two_player_cleaning_game/src/systems/camera.fnl index aba8e51..754aff0 100644 --- a/two_player_cleaning_game/src/systems/camera.fnl +++ b/two_player_cleaning_game/src/systems/camera.fnl @@ -16,10 +16,11 @@ (set self.x (- x (/ screen.canvas-w 2))) (set self.y (- y (/ screen.canvas-h 2))))))) +(fn camera.draw89 [self] + (love.graphics.pop)) ; undo camera translation (fn camera.draw99 [self] (let [screen self.pool.data.screen canvas self.pool.data.canvas] - (love.graphics.pop) ; undo camera translation (love.graphics.setCanvas) ; reset to root canvas (color:reset-color) (love.graphics.draw canvas 0 0 0 screen.scale screen.scale))) diff --git a/two_player_cleaning_game/src/systems/hud.fnl b/two_player_cleaning_game/src/systems/hud.fnl new file mode 100644 index 0000000..8210a35 --- /dev/null +++ b/two_player_cleaning_game/src/systems/hud.fnl @@ -0,0 +1,62 @@ +(local beholder (require "libs/beholder")) +(local assets (require "src/assets.fnl")) +(local color (require "src/colors.fnl")) + +(var screen nil) +(local hud { + :player-battery 0 +}) + +(fn hud.load [self] + (set self.font (love.graphics.newFont 10)) + (set self.font-small (love.graphics.newFont 6)) + + (beholder.observe "PLAYER.BATTERY" (lambda [bat] + (set self.player-battery bat)))) + +(lambda draw-header [self] + (color.set-color :cream) + (love.graphics.rectangle "fill" 0 0 screen.canvas-w 20) + (color.set-color :dark-purple) + (love.graphics.line 0 20 screen.canvas-w 20)) + +(lambda draw-side-walls [self] + (color.set-color :cream) + (love.graphics.rectangle "fill" 0 0 20 screen.canvas-h) + (love.graphics.rectangle "fill" (- screen.canvas-w 20) 0 20 screen.canvas-h) + (color.set-color :dark-purple) + (love.graphics.line 20 0 20 screen.canvas-w) + (love.graphics.line (- screen.canvas-w 20) 0 (- screen.canvas-w 20) screen.canvas-w)) + +(lambda draw-footer [self] + (love.graphics.push) + (love.graphics.translate 0 400) + (color.set-color :cream) + (love.graphics.rectangle "fill" 0 0 screen.canvas-w 100) + (color.reset-color) + (love.graphics.draw assets.battery-bar-sprite 78 8) + (color.set-color :dark-purple) + (love.graphics.setFont self.font) + (love.graphics.print (.. "Battery: " (string.format "%d" self.player-battery) "%") 6 7) + (color.set-color :light-blue) + (love.graphics.rectangle "fill" 80 12 (* 152 (/ self.player-battery 100)) 4) + (love.graphics.setFont self.font-small) + (color.set-color :dark-purple) + (love.graphics.print "100%" 229 2) + (color.set-color :light-pink) + (love.graphics.print "125%" 267 2) + (love.graphics.print "125%" 306 2) + (love.graphics.print "150%" 345 2) + (love.graphics.print "200%" 382 2) + (color.set-color :dark-purple) + (love.graphics.line 0 0 screen.canvas-w 0) + (love.graphics.pop)) + +(fn hud.draw90 [self] + (draw-side-walls self) + (draw-footer self) + (draw-header self)) + +(lambda [{:screen s}] + (set screen s) + hud)