Mothback/data/scripts/lights.lua

88 lines
1.9 KiB
Lua

Lights = {}
LightTimer = 0
function CreateDarkness()
return love.graphics.newCanvas(game.width/game.scale, game.height/game.scale)
end
function CreateLight(x,y,range,flicker,color,lum)
local o = {}
o.pos = {
x = x,
y = y
}
o.range = range
o.lum = lum or 1
o.color = color or {1,1,1}
o.flicker_value = flicker or 2
o.flicker = 0
o.dim = 0
o.flicker_speed = flicker_speed or 60/12
o.flicker_time = 0
table.insert(Lights,o)
o.id = #Lights
return o
end
function KillLight(light)
if light.id ~= nil then
for _, e in pairs(Lights) do
if e.id > light.id then
e.id = e.id - 1
end
end
table.remove(Lights,light.id)
end
light = nil
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(0,1)
light.flicker = math.min(math.max(light.flicker, -light.flicker_value),light.flicker_value)
end
end
love.graphics.setBlendMode("replace")
for _, light in pairs(Lights) do
if light.range ~= 0 then
love.graphics.setColor(light.color[1],light.color[2],light.color[3],1)
love.graphics.circle(
"fill",
(light.pos.x - Camera.pos.x) / game.scale,
(light.pos.y - Camera.pos.y) / game.scale,
(light.range + light.flicker + 1) / game.scale
)
end
end
love.graphics.setColor(0,0,0,0)
for _, light in pairs(Lights) do
if light.range ~= 0 then
love.graphics.circle(
"fill",
(light.pos.x - Camera.pos.x) / game.scale,
(light.pos.y - Camera.pos.y) / game.scale,
(light.range + light.flicker) / game.scale
)
end
end
love.graphics.setBlendMode("alpha")
end
function DoBorder()
end
function DrawDarkness()
love.graphics.draw(Canvas.Darkness, 0, 0, 0, 2/game.scale)
end