From 6c895c8842763505bcba81916ed1a044a1c63659 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Fri, 8 May 2026 20:30:47 +0200 Subject: [PATCH] make fog_of_war everywhere outside of vision cone --- game/src/systems/fog_of_war.fnl | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/game/src/systems/fog_of_war.fnl b/game/src/systems/fog_of_war.fnl index 84f19fb..ea8af20 100644 --- a/game/src/systems/fog_of_war.fnl +++ b/game/src/systems/fog_of_war.fnl @@ -2,18 +2,25 @@ (local utils (require "src/utils.fnl")) (local beholder (require "libs/beholder")) (local levels (require "levels.fnl")) +(local assets (require "src/assets.fnl")) (local fow { :player-vision-pts [] + :player-pos [0 0] + :player-quad nil :font nil :canvas nil }) (lambda fow.load [self] + (let [(w h) (assets.player-sprite:getDimensions)] + (set self.player-quad (love.graphics.newQuad 0 0 25 25 w h))) (set self.font (love.graphics.newFont 10)) (set self.canvas (love.graphics.newCanvas 1000 1000)) (beholder.observe "PLAYER.VISION" (lambda [pts] (set self.player-vision-pts pts))) + (beholder.observe "PLAYER.POS" (lambda [x y] + (set self.player-pos [x y]))) (let [previousCanvas (love.graphics.getCanvas)] (love.graphics.setCanvas self.canvas) (color.set-color :dark-purple) @@ -25,16 +32,23 @@ (let [ previousCanvas (love.graphics.getCanvas) previousBlendMode (love.graphics.getBlendMode) - x self.player-x - y self.player-y] + [x y] self.player-pos] (love.graphics.setCanvas self.canvas) + (love.graphics.clear) + (color.set-color :dark-purple) + (love.graphics.rectangle "fill" 0 0 1000 1000) (love.graphics.setBlendMode "replace") (love.graphics.setColor 0 0 0 0) ; transparent - (when (> (length self.player-vision-pts) 2) - (love.graphics.polygon "fill" self.player-vision-pts)) - (love.graphics.setBlendMode previousBlendMode) - (love.graphics.setCanvas previousCanvas) -)) + ; draw player quad to uncover the player + (love.graphics.push) + (love.graphics.translate (- x 3) (- y 7)) + (love.graphics.polygon "fill" 3 11 3 17 7 21 17 21 21 17 21 11 17 7 7 7) + (love.graphics.pop) + ; draw the vision cone + (when (> (length self.player-vision-pts) 2) + (love.graphics.polygon "fill" self.player-vision-pts)) + (love.graphics.setBlendMode previousBlendMode) + (love.graphics.setCanvas previousCanvas))) (lambda fow.draw80 [self] (color.reset-color)