From 99f73315b3af6c8c8633be66df3dd5e57ab9c4ef Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Wed, 15 Apr 2026 22:59:47 +0200 Subject: [PATCH] show active state of charging pads --- .../assets/objects.aseprite | Bin 606 -> 690 bytes two_player_cleaning_game/assets/objects.png | Bin 457 -> 549 bytes two_player_cleaning_game/main.fnl | 53 +++++++++--------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/two_player_cleaning_game/assets/objects.aseprite b/two_player_cleaning_game/assets/objects.aseprite index e8f42d9ad393e482cd1220b3823560369a586aab..8bbbbb82cd13ffd749ee320148b0e365f10350b6 100644 GIT binary patch delta 310 zcmV-60m=T}1hNGIvXKFQ0x|-Tg8c$B0h56N6n{qm6##gg<(SJ2!Y~YmvjhuqU<~G9 z2)1AWu3T6xsF92;D~TW2PAh)NYSL7u{u0}w<@K&*({_dNXg*uRevnSLdyO*uJN5af zaE0+`K3l_nO0ZfCz|PSqn-GzG_V$;>#(STezn!wVoUhH6vI&-j4RF!0Iih}LGh(!x zdVho8OX-he)8k+{HUpHvaqrADG85} zO&NHy5#$sXx5T75Wo5%M3u5D8(dQOV!UXcNR0^R|Ug8c&D0F!|M6n`%O6##gg<(AP6fFKM+S;B?ZW;Pg(K^Hhd*1vxbl`% zr0#!XANui(Bs*D8*gbda?AjS%&xFq*dkyR{PPpzLvTJ;B-4R*Xg>vi^za!oxvBP~v zV@i0+4tOTVg#@MU#&4CvuAKwfTZ bQ|v8!MyN`Ulzk*NPpyS{1UoBsy~8!~sa|gV diff --git a/two_player_cleaning_game/assets/objects.png b/two_player_cleaning_game/assets/objects.png index 5ce11369e23df04c10024f3ed6928909010f062a..0d85d3f4faeed3bebd7edc7f4dc1148f2af643ad 100644 GIT binary patch delta 510 zcmX@fyp&~vVf}qi7srr_Id5;C?mc86(D2Z3QLBj)dqIOXuR`DvuYf~Jfh6-dQKmKX$caJ|8wbtAVNV>SJH9r-zex7-4+PV6-g_wCOzfXd}gd!{%rGf z(RbCgJ&(5Tl@`jV;{>_sN4_tSAUZGYVTp{Rh2&sWvg-G7$0#~X-oLZ4nO)|*(Y zH+?_G!+Zs#mhW59!gxapMCH$~kjhY2%G3GkVpnuky)LBm%~&N(ll}4foI2FM_LR`4 zb5$@dC%qn|TYXCN6_B25NYg}@9*9cw3c0m?%}HOs^zr&Uh`LdiS3`0njF*yzhO#m$ z-KDGqL!0ar&1WgA9;gSTsiEsGWnCF-vOlyoe5oF~?d|Gtu_SplBxeORthj0-FN2iZ zUYcHxPA2<99B0!w&ZghK@Z9zib$9%(=>JN0HRMjps(z5m00000NkvXXu0mjf=-tIT diff --git a/two_player_cleaning_game/main.fnl b/two_player_cleaning_game/main.fnl index 8803c83..4f3ca01 100644 --- a/two_player_cleaning_game/main.fnl +++ b/two_player_cleaning_game/main.fnl @@ -56,6 +56,9 @@ (print (fennel.view obj))) (local collider-debug-boxes []) +(lambda add-collider-debug-box [x y w h] + (table.insert collider-debug-boxes {: x : y :width w :height h})) + (local bump-world (bump.newWorld 25)) (local player { :x 50 :y 50 :w 25 :h 25 :speed 80 :battery 100 :rot 0 }) @@ -87,33 +90,42 @@ (lambda create-charging-station [x y] (let [ - station {: x : y :type :charging-station} - pad1 {:x (- x 25) :y y :width 25 :height 25} - pad2 {:x (+ x 25) :y y :width 25 :height 25} - pad3 {:x x :y (+ y 25) :width 25 :height 25}] + station {: x : y :type :charging-station :active-pads {1 false 2 false 3 false}} + pads { + 1 {:x (- x 25) :y y :width 25 :height 25 :light-x (+ x 5)} + 3 {:x (+ x 25) :y y :width 25 :height 25 :light-x (+ x 5 6 6)} + 2 {:x x :y (+ y 25) :width 25 :height 25 :light-x (+ x 5 6)} + }] (bump-world:add {: x : y :name :charging-station :behavior :block} x y 25 25) - (table.insert collider-debug-boxes {: x : y :width 25 :height 25}) + (add-collider-debug-box x y 25 25) (fn station.draw [self] (reset-color) (love.graphics.draw objects.sprite objects.quads.charging-station self.x self.y) - (love.graphics.draw objects.sprite objects.quads.charging-pad pad1.x pad1.y) - (love.graphics.draw objects.sprite objects.quads.charging-pad pad2.x pad2.y) - (love.graphics.draw objects.sprite objects.quads.charging-pad pad3.x pad3.y) + (for [i 1 3 1] + (let [pad (. pads i)] + (if (. self.active-pads i) + (do (love.graphics.draw objects.sprite objects.quads.charging-pad-active pad.x pad.y) + (set-color :light-pink) + (love.graphics.rectangle "fill" pad.light-x (+ y 18) 2 2) + (reset-color)) + (love.graphics.draw objects.sprite objects.quads.charging-pad pad.x pad.y)))) ) (lambda pad-hover-cb [self dt] + (tset station.active-pads self.id true) (when (< player.battery 100) (set player.battery (+ player.battery (* dt 6))))) - (bump-world:add {: x : y :name :charging-pad :behavior :hover :hover-cb pad-hover-cb} (- x 25) y 25 25) - (table.insert collider-debug-boxes {:x (- x 25) : y :width 25 :height 25}) - (bump-world:add {: x : y :name :charging-pad :behavior :hover :hover-cb pad-hover-cb} (+ x 25) y 25 25) - (table.insert collider-debug-boxes {:x (+ x 25) : y :width 25 :height 25}) - (bump-world:add {: x : y :name :charging-pad :behavior :hover :hover-cb pad-hover-cb} x (+ y 25) 25 25) - (table.insert collider-debug-boxes {:x x :y (+ y 25) :width 25 :height 25}) + (lambda station.update [self _dt] + (set self.active-pads {1 false 2 false 3 false})) + (for [i 1 3 1] + (let [pad (. pads i)] + (bump-world:add {:name :charging-pad :behavior :hover :hover-cb pad-hover-cb :id i} pad.x pad.y 25 25) + (add-collider-debug-box pad.x pad.y 25 25))) (table.insert objects.list station))) (fn load-objects [] (set objects.sprite (love.graphics.newImage "assets/objects.png")) (let [(w h) (objects.sprite:getDimensions)] (set objects.quads.charging-pad (love.graphics.newQuad 0 0 25 25 w h)) + (set objects.quads.charging-pad-active (love.graphics.newQuad 50 0 25 25 w h)) (set objects.quads.charging-station (love.graphics.newQuad 25 0 25 25 w h))) (each [_ row (pairs (. levels :level01 :tiles))] @@ -182,6 +194,8 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start)) (fn love.update [dt] + (each [_ obj (pairs objects.list)] + (obj:update dt)) ; move / rotate player (let [ d-key (love.keyboard.isDown :d) @@ -203,17 +217,6 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start)) col-filter-fn (lambda [item other] (if (= other.behavior "block") :slide :cross)) (x y cols len) (bump-world:move player new-x new-y col-filter-fn)] - ; (each [_ col (pairs cols)] - ; (when (= col.other.behavior "hover") - ; (col.other:hover-cb dt) - ; (debug-print col) - - ; )) - - ; (debug-print col)) - ; (when (. col.other :hover-cb) - ; (col.other:hover-cb dt) - ; )) (tset player :x x) (tset player :y y)) (if (> player.battery 0)