Lights = {} LightTimer = 0 function CreateDarkness() return love.graphics.newCanvas(game.width, game.height) end function CreateLight(x,y,range,lum,flicker) local o = {} o.pos = { x = x, y = y } o.range = range o.lum = lum or 1 o.flicker_value = flicker or 1 o.flicker = 0 o.dim = 0 o.flicker_speed = flicker_speed or 10 o.flicker_time = 0 table.insert(Lights,o) return o end function SetDarkness() love.graphics.setColor(0,0,0,1) love.graphics.rectangle("fill",0,0,game.width,game.height) end function DoLights() for _, light in pairs(Lights) do light.flicker_time = light.flicker_time + 1 if light.flicker_time >= light.flicker_speed then light.flicker_time = light.flicker_time - light.flicker_speed light.flicker = 0 + math.random(-1,1) light.flicker = math.min(math.max(light.flicker, -light.flicker_value),light.flicker_value) end end --[[ -- first, border love.graphics.setColor(1,1,1) for _, light in pairs(Lights) do love.graphics.circle( "fill", light.pos.x - Camera.pos.x, light.pos.y - Camera.pos.y, light.range + light.flicker + 1 ) end ]] love.graphics.setBlendMode("replace") for _, enty in pairs(LoadedEntities) do end local shades = 200 for i=1, shades do for _, light in pairs(Lights) do local luminosity = shades*light.lum/100 love.graphics.setColor(0,0,0,math.min(1,math.max(0,(shades-i-luminosity+1)/(shades-luminosity+1)))) love.graphics.circle( "fill", light.pos.x - Camera.pos.x, light.pos.y - Camera.pos.y, (light.range + light.flicker)*(shades-i+1)/shades ) end end love.graphics.setBlendMode("alpha") end function DoBorder() end function DrawDarkness() love.graphics.draw(Canvas.Darkness, 0, 0, 0, 0.5, 0.5) end