From 31fb931c4ae71c4a463cbe189ac9a00619393cd7 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Sat, 9 May 2026 11:27:59 +0200 Subject: [PATCH] add spinning radar system --- game/src/levels/dev.fnl | 2 ++ game/src/systems/radar.fnl | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 game/src/systems/radar.fnl diff --git a/game/src/levels/dev.fnl b/game/src/levels/dev.fnl index 3f8c095..2890ba9 100644 --- a/game/src/levels/dev.fnl +++ b/game/src/levels/dev.fnl @@ -9,6 +9,7 @@ (local hud (require "src/systems/hud.fnl")) (local levels (require "levels.fnl")) (local fog-of-war (require "src/systems/fog_of_war.fnl")) +(local radar (require "src/systems/radar.fnl")) (local info-pad (require "src/entities/info-pad.fnl")) ; TODO: refactor the args away. create a load method and get them from self.pool @@ -60,6 +61,7 @@ camera walls fog-of-war + radar (hud {: screen}) ] })] diff --git a/game/src/systems/radar.fnl b/game/src/systems/radar.fnl new file mode 100644 index 0000000..6e620c3 --- /dev/null +++ b/game/src/systems/radar.fnl @@ -0,0 +1,36 @@ +(local color (require "src/colors.fnl")) +(local utils (require "src/utils.fnl")) +(local beholder (require "libs/beholder")) +(local levels (require "levels.fnl")) +(local assets (require "src/assets.fnl")) + +(local radar + { :player-pos [0 0] + :rot 0 + :speed 4 }) + +(lambda radar.load [self] + (beholder.observe "PLAYER.POS" (lambda [x y] + (set self.player-pos [x y])))) + +(lambda radar.update [self dt] + (set self.rot (+ self.rot (* (/ dt self.speed))))) + +(lambda radar.draw81 [self] + (let [ + w 19 h 15 + [x y] self.player-pos + ox (+ x (/ w 2)) + oy (+ y (/ h 2)) + ] + (color.set-color :dark-pink) + (love.graphics.push) + (love.graphics.translate ox oy) + (love.graphics.rotate self.rot) + (love.graphics.setPointSize 2) + (love.graphics.points 0 0) + (love.graphics.circle "line" 0 0 150) + (love.graphics.line 0 0 0 150) + (love.graphics.pop))) + +radar