make fog_of_war everywhere outside of vision cone
This commit is contained in:
parent
1e7b0d6812
commit
6c895c8842
1 changed files with 21 additions and 7 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue