Files
Techmino/parts/backgrounds/blockrain.lua
2022-01-12 16:24:18 +08:00

55 lines
1.1 KiB
Lua

--Block rain
local gc=love.graphics
local rnd=math.random
local ins,rem=table.insert,table.remove
local back={}
local t
local mino
function back.init()
t=0
mino={}
end
function back.update()
t=t+1
if t%10==0 then
local r=rnd(29)
ins(mino,{
bid=r,
block=TEXTURE.miniBlock[r],
color=BLOCK_COLORS[SETTING.skin[r]],
x=SCR.w*rnd(),
y=SCR.h*-.05,
k=SCR.rad/200,
ang=rnd()*6.2832,
vy=.5+rnd()*.4,
vx=rnd()*.4-.2,
va=rnd()*.04-.02,
})
end
for i=#mino,1,-1 do
local P=mino[i]
P.y=P.y+P.vy
if P.y>SCR.h+25 then
rem(mino,i)
else
P.x=P.x+P.vx
P.ang=P.ang+P.va
P.vx=P.vx-.01+rnd()*.02
end
end
end
function back.draw()
gc.clear(.08,.08,.084)
for i=1,#mino do
local C=mino[i]
local c=C.color
gc.setColor(c[1],c[2],c[3],.2)
gc.draw(C.block,C.x,C.y,C.ang,C.k,C.k,C.block:getWidth()/2,C.block:getHeight()/2)
end
end
function back.discard()
mino=nil
end
return back