Files
Techmino/parts/backgrounds/blackhole.lua
2021-03-16 19:13:19 +08:00

79 lines
1.3 KiB
Lua

--Blackhole
local gc=love.graphics
local rnd=math.random
local ins,rem=table.insert,table.remove
local back={}
local t
local squares
function back.init()
t=26
squares={}
end
function back.update()
t=t-1
if t==0 then
local size=SCR.rad*(2+rnd()*3)/100
local S={
x=(SCR.w-size)*rnd()-SCR.w/2,
y=(SCR.h-size)*rnd()-SCR.h/2,
ang=6.2832*rnd(),
va=.05-rnd()*.1,
size=size,
texture=rnd(16),
}
if rnd()<.5 then
S.x=rnd()<.5 and
-SCR.w/2-S.size or
SCR.w/2
else
S.y=rnd()<.5 and
-SCR.h/2-S.size or
SCR.h/2
end
ins(squares,S)
t=rnd(6,16)
end
for i=#squares,1,-1 do
local S=squares[i]
local ang=math.atan2(S.y,S.x)
local d=(S.x^2+S.y^2)^.5
d=d-2000/(d+60)
if d>0 then
S.x=d*math.cos(ang)
S.y=d*math.sin(ang)
S.ang=S.ang+S.va
else
rem(squares,i)
end
end
end
function back.draw()
gc.clear(.1,.1,.1)
gc.push("transform")
gc.origin()
gc.translate(SCR.w/2,SCR.h/2)
--Squares
gc.setColor(.5,.5,.5)
for i=1,#squares do
local S=squares[i]
gc.draw(SKIN.curText[S.texture],S.x,S.y,S.ang,S.size*.026,nil,15,15)
end
--Blackhole
gc.scale(SCR.rad/1260)
gc.setColor(0,0,0)
gc.circle("fill",0,0,157)
gc.setLineWidth(6)
for i=0,15 do
gc.setColor(0,0,0,1-i*.0666)
gc.circle("line",0,0,160+6*i)
end
gc.scale(1260/SCR.rad)
gc.pop()
end
function back.discard()
squares=nil
end
return back