79 lines
1.3 KiB
Lua
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 |