local gc=love.graphics local int,ceil,rnd,abs=math.floor,math.ceil,math.random,math.abs local max,min,sin,cos=math.max,math.min,math.sin,math.cos local scr=scr local BGinit,BGresize,BGupdate,BGdraw,BGdiscard={},{},{},{},{} local BGvars={_G=_G} function BGdraw.none() gc.clear(.15,.15,.15) end function BGdraw.grey() gc.clear(.3,.3,.3) end function BGinit.glow() t=0 end function BGupdate.glow(dt) t=t+dt end function BGdraw.glow() local t=(sin(t*.5)+sin(t*.7)+sin(t*.9+1)+sin(t*1.5)+sin(t*2+10))*.08 gc.clear(t,t,t) end function BGinit.rgb() t=0 end function BGupdate.rgb(dt) t=t+dt end function BGdraw.rgb() gc.clear( sin(t*1.2)*.15+.2, sin(t*1.5)*.15+.2, sin(t*1.9)*.15+.2 ) end function BGinit.strap() t=0 img=_G.IMG.gameBG2 end function BGupdate.strap(dt) t=t+dt end function BGdraw.strap() gc.setColor(.5,.5,.5) local x=t%16*-64 repeat gc.draw(img,x,0,nil,8,scr.h) x=x+1024--image width*8 until x>=scr.w end function BGinit.flink() t=0 end function BGupdate.flink(dt) t=t+dt end function BGdraw.flink() local t=.13-t%3%1.7 if t<.2 then gc.clear(t,t,t) else gc.clear(0,0,0) end end function BGinit.game1() t=0 img=_G.IMG.gameBG1 end function BGupdate.game1(dt) t=t+dt end function BGdraw.game1() gc.setColor(.5,.5,.5) gc.draw(img,scr.w*.5,scr.h*.5,t*.15,scr.rad*.0625,nil,16,16) end--Rainbow function BGinit.game2() t=0 img=_G.IMG.gameBG1 end function BGupdate.game2(dt) t=t+dt end function BGdraw.game2() gc.setColor(.5,.26,.26) gc.draw(img,scr.w*.5,scr.h*.5,t*.15,scr.rad*.0625,nil,16,16) end--Red rainbow function BGinit.game3() t=0 img=_G.IMG.gameBG1 end function BGupdate.game3(dt) t=t+dt end function BGdraw.game3() gc.setColor(.4,.4,.8) gc.draw(img,scr.w*.5,scr.h*.5,t*.15,scr.rad*.0625,nil,16,16) end--Blue rainbow function BGinit.game4() t=0 img=_G.IMG.gameBG2 end function BGupdate.game4(dt) t=t+dt end function BGdraw.game4() gc.setColor(.05,.4,.4) local x=t%8*-128 repeat gc.draw(img,x,0,nil,8,scr.h) x=x+1024--image width*8 until x>=scr.w end--Fast strap function BGinit.game5() t=0 end function BGupdate.game5(dt) t=t+dt end function BGdraw.game5() local t=2.5-t%20%6%2.5 if t<.3 then gc.clear(t,t,t) else gc.clear(0,0,0) end end--Lightning function BGinit.game6() t=0 colorLib=_G.SKIN.libColor colorSet=_G.setting.skin miniBlock=_G.miniBlock end function BGupdate.game6(dt) t=t+dt end local blocks=require("parts/mino") local scs=require("parts/spinCenters") function BGdraw.game6() local t=1.2-t%10%3%1.2 if t<.3 then gc.clear(t,t,t) else gc.clear(0,0,0) end local R=7-int(t*.5)%7 local _=colorLib[colorSet[R]] gc.setColor(_[1],_[2],_[3],.1) gc.draw(miniBlock[R],640,360,t%3.1416*6,400,400,scs[R][0][2]-.5,#blocks[R][0]-scs[R][0][1]+.5) end--Fast lightning&spining tetromino local matrixT={}for i=1,50 do matrixT[i]={}for j=1,50 do matrixT[i][j]=love.math.noise(i,j)+2 end end function BGinit.matrix() t=0 end function BGupdate.matrix(dt) t=t+dt end function BGdraw.matrix() gc.scale(scr.k) gc.clear(.15,.15,.15) local _=ceil(scr.h/80) for i=1,ceil(scr.w/80)do for j=1,_ do gc.setColor(1,1,1,sin(i+matrixT[i][j]*t)*.1+.1) gc.rectangle("fill",80*i,80*j,-80,-80) end end gc.scale(1/scr.k) end function BGinit.space() stars={} for i=1,2600,5 do local s=rnd(4) stars[i]=s --size stars[i+1]=rnd(W)-10 --x stars[i+2]=rnd(H)-10 --y stars[i+3]=(rnd()-.5)*.01*s --vx stars[i+4]=(rnd()-.5)*.01*s --vy end--800 var end function BGresize.space(w,h) W,H=w+20,h+20 BGinit.space() end function BGupdate.space(dt) local s=stars for i=1,2600,5 do s[i+1]=(s[i+1]+s[i+3])%W s[i+2]=(s[i+2]+s[i+4])%H end--star moving end function BGdraw.space() gc.clear(.2,.2,.2) if not stars[1]then return end gc.translate(-10,-10) gc.setColor(.8,.8,.8) for i=1,2600,5 do local s=stars local x,y=s[i+1],s[i+2] s=s[i] gc.rectangle("fill",x,y,s,s) end gc.translate(10,10) end function BGdiscard.space() stars={} end for k in next,BGdraw do if BGinit[k]then setfenv(BGinit[k], BGvars)end if BGresize[k]then setfenv(BGresize[k], BGvars)end if BGupdate[k]then setfenv(BGupdate[k], BGvars)end if BGdraw[k]then setfenv(BGdraw[k], BGvars)end if BGdiscard[k]then setfenv(BGdiscard[k], BGvars)end end local BG={ cur="none", resize=NULL, update=NULL, draw=BGdraw.none, } function BG.set(bg) if bg==BG.cur or not setting.bg then return end BG.cur=bg local _=BGdiscard[BG.cur]if _ then _()collectgarbage()end BG.resize=BGresize[bg]or NULL;BG.resize(scr.w,scr.h) _=BGinit[bg]if _ then _()end BG.update=BGupdate[bg]or NULL BG.draw=BGdraw[bg] end return BG