diff --git a/parts/backgrounds/blockspace.lua b/parts/backgrounds/blockspace.lua new file mode 100644 index 00000000..3e2f1df1 --- /dev/null +++ b/parts/backgrounds/blockspace.lua @@ -0,0 +1,56 @@ +--Space but tetrominoes +local gc=love.graphics +local sin,cos=math.sin,math.cos +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%2==0 then + local r=rnd(29) + ins(mino,{ + block=TEXTURE.miniBlock[r], + color=minoColor[SETTING.skin[r]], + ang=6.2832*rnd(), + rotate=6.2832*rnd(), + vr=.03-rnd()*.06, + d=0, + v=1, + }) + end + local rad=SCR.rad + for i=#mino,1,-1 do + local M=mino[i] + M.d=M.d+M.v + if M.d>rad*1.05 then + rem(mino,i) + else + M.rotate=M.rotate+M.vr + M.v=M.v*(1+M.d/SCR.rad*.2) + end + end +end +function back.draw() + gc.clear(.15,.15,.15) + gc.push("transform") + gc.origin() + gc.translate(SCR.w/2,SCR.h/2) + for i=1,#mino do + local M=mino[i] + local c=M.color + gc.setColor(c[1],c[2],c[3],.4) + gc.draw(M.block,M.d*cos(M.ang),M.d*sin(M.ang),M.rotate,(18*M.d/SCR.rad)^1.6,nil,M.block:getWidth()/2,M.block:getHeight()/2) + end + gc.pop() +end +function back.discard() + mino=nil +end +return back \ No newline at end of file diff --git a/parts/modes/master_extra.lua b/parts/modes/master_extra.lua index 65574c51..884d3967 100644 --- a/parts/modes/master_extra.lua +++ b/parts/modes/master_extra.lua @@ -35,7 +35,7 @@ return{ end end end, - bg="tunnel",bgm="far", + bg="blockspace",bgm="far", }, slowMark=true, load=function()