重构背景系统(每个背景使用独立文件),全局变量名整理
This commit is contained in:
24
parts/backgrounds/aura.lua
Normal file
24
parts/backgrounds/aura.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
--Cool liquid background
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.aura:send("w",SCR.W)
|
||||
SHADER.aura:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.aura:send("t",t)
|
||||
gc.setShader(SHADER.aura)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
return back
|
||||
56
parts/backgrounds/badapple.lua
Normal file
56
parts/backgrounds/badapple.lua
Normal file
@@ -0,0 +1,56 @@
|
||||
--Bad Apple!! (128x96, 10fps, 2192f)
|
||||
local gc=love.graphics
|
||||
local int=math.floor
|
||||
local back={}
|
||||
|
||||
local bAnd,bRshift=bit.band,bit.rshift
|
||||
local t
|
||||
local video
|
||||
local X,Y,K
|
||||
function back.init()
|
||||
if not video then
|
||||
video=love.data.decompress("string","zlib",love.filesystem.read("Zframework/badapple.dat"))
|
||||
end
|
||||
t=0
|
||||
BG.resize()
|
||||
end
|
||||
function back.resize()
|
||||
local W,H=SCR.w,SCR.h
|
||||
if H/W>=96/128 then
|
||||
K=W/128
|
||||
X,Y=0,(H-W*96/128)*.5
|
||||
else
|
||||
K=H/96
|
||||
X,Y=(W-H*128/96)*.5,0
|
||||
end
|
||||
end
|
||||
function back.update()
|
||||
t=t+1
|
||||
if t==13146 then
|
||||
t=0
|
||||
end
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.2,.2,.2)
|
||||
gc.push("transform")
|
||||
gc.origin()
|
||||
gc.translate(X,Y)
|
||||
gc.scale(K)
|
||||
gc.setColor(.4,.4,.4)
|
||||
local t1=1536*int(t/6)+1
|
||||
for i=0,1535 do
|
||||
local B=video:byte(t1+i)
|
||||
for j=7,0,-1 do
|
||||
local p=8*i+j
|
||||
if bAnd(B,1)==0 then
|
||||
gc.rectangle("fill",p%128,int(p/128),1,1)
|
||||
end
|
||||
B=bRshift(B,1)
|
||||
end
|
||||
end
|
||||
gc.pop()
|
||||
end
|
||||
function back.discard()
|
||||
video=nil
|
||||
end
|
||||
return back
|
||||
23
parts/backgrounds/bg1.lua
Normal file
23
parts/backgrounds/bg1.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
--Horizonal red-blue gradient
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
BG.resize()
|
||||
end
|
||||
function back.resize()
|
||||
SHADER.gradient1:send("w",SCR.W)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.gradient1:send("t",t)
|
||||
gc.setShader(SHADER.gradient1)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
return back
|
||||
23
parts/backgrounds/bg2.lua
Normal file
23
parts/backgrounds/bg2.lua
Normal file
@@ -0,0 +1,23 @@
|
||||
--Vertical red-green gradient
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
BG.resize(nil,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.gradient2:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.gradient2:send("t",t)
|
||||
gc.setShader(SHADER.gradient2)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
return back
|
||||
75
parts/backgrounds/fan.lua
Normal file
75
parts/backgrounds/fan.lua
Normal file
@@ -0,0 +1,75 @@
|
||||
--UUZ's fan
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local max,min,sin=math.max,math.min,math.sin
|
||||
local ins,rem=table.insert,table.remove
|
||||
local back={}
|
||||
|
||||
local t
|
||||
local fan,petal
|
||||
function back.init()
|
||||
t=rnd(2600)
|
||||
fan=title_fan
|
||||
petal={}
|
||||
BG.resize()
|
||||
end
|
||||
function back.update()
|
||||
t=t+1
|
||||
if t%10==0 then
|
||||
ins(petal,{
|
||||
x=SCR.w*rnd(),
|
||||
y=0,
|
||||
vy=2+rnd()*2,
|
||||
vx=rnd()*2-.5,
|
||||
rx=4+rnd()*4,
|
||||
ry=4+rnd()*4,
|
||||
})
|
||||
end
|
||||
for i=#petal,1,-1 do
|
||||
local P=petal[i]
|
||||
P.y=P.y+P.vy
|
||||
if P.y>SCR.h then
|
||||
rem(petal,i)
|
||||
else
|
||||
P.x=P.x+P.vx
|
||||
P.vx=P.vx+rnd()*.01
|
||||
P.rx=max(min(P.rx+rnd()-.5,10),2)
|
||||
P.ry=max(min(P.ry+rnd()-.5,10),2)
|
||||
end
|
||||
end
|
||||
end
|
||||
function back.draw()
|
||||
gc.push("transform")
|
||||
gc.translate(SCR.w/2,SCR.h/2+20*sin(t*.02))
|
||||
gc.scale(SCR.k)
|
||||
gc.clear(.1,.1,.1)
|
||||
gc.setLineWidth(320)
|
||||
gc.setColor(.3,.2,.3)
|
||||
gc.arc("line","open",0,420,500,-.8*3.1416,-.2*3.1416)
|
||||
|
||||
gc.setLineWidth(4)
|
||||
gc.setColor(.7,.5,.65)
|
||||
gc.arc("line","open",0,420,660,-.799*3.1416,-.201*3.1416)
|
||||
gc.arc("line","open",0,420,340,-.808*3.1416,-.192*3.1416)
|
||||
gc.line(-281,224,-530,30.5)
|
||||
gc.line(281,224,530,30.5)
|
||||
|
||||
gc.setLineWidth(6)
|
||||
gc.setColor(.55,.5,.6)
|
||||
for i=1,8 do
|
||||
gc.polygon("line",fan[i])
|
||||
end
|
||||
|
||||
gc.setLineWidth(2)
|
||||
gc.setColor(.6,.3,.5)
|
||||
gc.origin()
|
||||
for i=1,#petal do
|
||||
local P=petal[i]
|
||||
gc.ellipse("fill",P.x,P.y,P.rx,P.ry)
|
||||
end
|
||||
gc.pop()
|
||||
end
|
||||
function back.discard()
|
||||
petal=nil
|
||||
end
|
||||
return back
|
||||
19
parts/backgrounds/flink.lua
Normal file
19
parts/backgrounds/flink.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
--Flash after random time
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
local t1=.13-t%3%1.9
|
||||
if t1<.2 then gc.clear(t1,t1,t1)
|
||||
else gc.clear(0,0,0)
|
||||
end
|
||||
end
|
||||
return back
|
||||
17
parts/backgrounds/glow.lua
Normal file
17
parts/backgrounds/glow.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
--Light-dark
|
||||
local gc=love.graphics
|
||||
local rnd,sin=math.random,math.sin
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
local t1=(sin(t*.5)+sin(t*.7)+sin(t*.9+1)+sin(t*1.5)+sin(t*2+10))*.08
|
||||
gc.clear(t1,t1,t1)
|
||||
end
|
||||
return back
|
||||
6
parts/backgrounds/grey.lua
Normal file
6
parts/backgrounds/grey.lua
Normal file
@@ -0,0 +1,6 @@
|
||||
local gc=love.graphics
|
||||
local back={}
|
||||
function back.draw()
|
||||
gc.clear(.3,.3,.3)
|
||||
end
|
||||
return back
|
||||
19
parts/backgrounds/lightning.lua
Normal file
19
parts/backgrounds/lightning.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
--Lightning
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
local t1=2.5-t%20%6%2.5
|
||||
if t1<.3 then gc.clear(t1,t1,t1)
|
||||
else gc.clear(0,0,0)
|
||||
end
|
||||
end
|
||||
return back
|
||||
27
parts/backgrounds/lightning2.lua
Normal file
27
parts/backgrounds/lightning2.lua
Normal file
@@ -0,0 +1,27 @@
|
||||
--Fast lightning + spining tetromino
|
||||
local gc=love.graphics
|
||||
local int,rnd=math.floor,math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
local colorLib
|
||||
local blocks=BLOCKS
|
||||
local scs=spinCenters
|
||||
function back.init()
|
||||
colorLib=SKIN.libColor
|
||||
t=rnd()*2600
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
local R=7-int(t*.5%7)
|
||||
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 _=colorLib[SETTING.skin[R]]
|
||||
gc.setColor(_[1],_[2],_[3],.12)
|
||||
gc.draw(TEXTURE.miniBlock[R],640,360,t%3.1416*6,400,400,scs[R][0][2]+.5,#blocks[R][0]-scs[R][0][1]-.5)
|
||||
end
|
||||
return back
|
||||
29
parts/backgrounds/matrix.lua
Normal file
29
parts/backgrounds/matrix.lua
Normal file
@@ -0,0 +1,29 @@
|
||||
--Black-White grid
|
||||
local gc=love.graphics
|
||||
local rnd,sin=math.random,math.sin
|
||||
local ceil=math.ceil
|
||||
local back={}
|
||||
|
||||
local t
|
||||
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 back.init()
|
||||
t=rnd()*2600
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.15,.15,.15)
|
||||
gc.push("transform")
|
||||
local k=SCR.k
|
||||
gc.scale(k)
|
||||
local Y=ceil(SCR.h/80/k)
|
||||
for x=1,ceil(SCR.w/80/k)do
|
||||
for y=1,Y do
|
||||
gc.setColor(1,1,1,sin(x+matrixT[x][y]*t)*.1+.1)
|
||||
gc.rectangle("fill",80*x,80*y,-80,-80)
|
||||
end
|
||||
end
|
||||
gc.pop()
|
||||
end
|
||||
return back
|
||||
6
parts/backgrounds/none.lua
Normal file
6
parts/backgrounds/none.lua
Normal file
@@ -0,0 +1,6 @@
|
||||
local gc=love.graphics
|
||||
local back={}
|
||||
function back.draw()
|
||||
gc.clear(.15,.15,.15)
|
||||
end
|
||||
return back
|
||||
24
parts/backgrounds/rainbow.lua
Normal file
24
parts/backgrounds/rainbow.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
--Colorful RGB
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.rgb1:send("w",SCR.W)
|
||||
SHADER.rgb1:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.rgb1:send("t",t)
|
||||
gc.setShader(SHADER.rgb1)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
return back
|
||||
24
parts/backgrounds/rainbow2.lua
Normal file
24
parts/backgrounds/rainbow2.lua
Normal file
@@ -0,0 +1,24 @@
|
||||
--Blue RGB
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize(_,h)
|
||||
SHADER.rgb2:send("w",SCR.W)
|
||||
SHADER.rgb2:send("h",h*SCR.dpi)
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
SHADER.rgb2:send("t",t)
|
||||
gc.setShader(SHADER.rgb2)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
return back
|
||||
20
parts/backgrounds/rgb.lua
Normal file
20
parts/backgrounds/rgb.lua
Normal file
@@ -0,0 +1,20 @@
|
||||
--Changing pure color
|
||||
local gc=love.graphics
|
||||
local rnd,sin=math.random,math.sin
|
||||
local back={}
|
||||
|
||||
local t
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(
|
||||
sin(t*1.2)*.15+.2,
|
||||
sin(t*1.5)*.15+.2,
|
||||
sin(t*1.9)*.15+.2
|
||||
)
|
||||
end
|
||||
return back
|
||||
48
parts/backgrounds/space.lua
Normal file
48
parts/backgrounds/space.lua
Normal file
@@ -0,0 +1,48 @@
|
||||
--Space with stars
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
|
||||
local stars
|
||||
local W,H
|
||||
function back.init()
|
||||
stars={}
|
||||
W,H=SCR.w+20,SCR.h+20
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end
|
||||
function back.resize()
|
||||
local S=stars
|
||||
for i=1,1260,5 do
|
||||
local s=rnd(26,40)*.1
|
||||
S[i]=s*SCR.k --Size
|
||||
S[i+1]=rnd(W)-10 --X
|
||||
S[i+2]=rnd(H)-10 --Y
|
||||
S[i+3]=(rnd()-.5)*.01*s --Vx
|
||||
S[i+4]=(rnd()-.5)*.01*s --Vy
|
||||
end
|
||||
end
|
||||
function back.update()
|
||||
local S=stars
|
||||
--Star moving
|
||||
for i=1,1260,5 do
|
||||
S[i+1]=(S[i+1]+S[i+3])%W
|
||||
S[i+2]=(S[i+2]+S[i+4])%H
|
||||
end
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.2,.2,.2)
|
||||
if not stars[1]then return end
|
||||
gc.translate(-10,-10)
|
||||
gc.setColor(.8,.8,.8)
|
||||
for i=1,1260,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 back.discard()
|
||||
stars=nil
|
||||
end
|
||||
return back
|
||||
39
parts/backgrounds/welcome.lua
Normal file
39
parts/backgrounds/welcome.lua
Normal file
@@ -0,0 +1,39 @@
|
||||
--Welcome to Techmino
|
||||
local gc=love.graphics
|
||||
local rnd,sin=math.random,math.sin
|
||||
local back={}
|
||||
|
||||
local t
|
||||
local txt
|
||||
function back.init()
|
||||
t=rnd()*2600
|
||||
txt=gc.newText(getFont(80),"Welcome To Techmino")
|
||||
end
|
||||
function back.update(dt)
|
||||
t=t+dt
|
||||
end
|
||||
function back.draw()
|
||||
if -t%13.55<.1283 then
|
||||
gc.clear(.2+.1*sin(t),.2+.1*sin(1.26*t),.2+.1*sin(1.626*t))
|
||||
else
|
||||
gc.clear(.1,.1,.1)
|
||||
end
|
||||
gc.push("transform")
|
||||
gc.replaceTransform(xOy)
|
||||
gc.translate(640,360)
|
||||
gc.scale(1.1626,1.26)
|
||||
if -t%6.26<.1355 then
|
||||
gc.translate(60*sin(t*.26),100*sin(t*.626))
|
||||
end
|
||||
if -t%12.6<.1626 then
|
||||
gc.rotate(t+5*sin(.26*t)+5*sin(.626*t))
|
||||
end
|
||||
gc.setColor(.2,.3,.5)
|
||||
gc.draw(txt,-883*.5+4*sin(t*.7942),-110*.5+4*sin(t*.7355))
|
||||
gc.setColor(.4,.6,.8)
|
||||
gc.draw(txt,-883*.5+2*sin(t*.77023),-110*.5+2*sin(t*.7026))
|
||||
gc.setColor(.9,.9,.9)
|
||||
gc.draw(txt,-883*.5+3*sin(t*.7283),-110*.5+3*sin(t*.7626))
|
||||
gc.pop()
|
||||
end
|
||||
return back
|
||||
73
parts/backgrounds/wing.lua
Normal file
73
parts/backgrounds/wing.lua
Normal file
@@ -0,0 +1,73 @@
|
||||
--Flandre's wing
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
local back={}
|
||||
local wingColor={
|
||||
{0., .9, .9,.626},
|
||||
{.3, 1., .3,.626},
|
||||
{.9, .9, 0.,.626},
|
||||
{1., .5, 0.,.626},
|
||||
{1., .3, .3,.626},
|
||||
{.5, 0., 1.,.626},
|
||||
{.3, .3, 1.,.626},
|
||||
{0., .9, .9,.626},
|
||||
}
|
||||
local bar,crystal
|
||||
local W,H
|
||||
function back.init()
|
||||
bar=gc.newCanvas(41,1)
|
||||
gc.setCanvas(bar)
|
||||
gc.push("transform")
|
||||
gc.origin()
|
||||
for x=0,20 do
|
||||
gc.setColor(1,1,1,x/11)
|
||||
gc.rectangle("fill",x,0,1,1)
|
||||
gc.rectangle("fill",41-x,0,1,1)
|
||||
end
|
||||
gc.pop()
|
||||
gc.setCanvas()
|
||||
BG.resize()
|
||||
end
|
||||
function back.resize()
|
||||
crystal={}
|
||||
W,H=SCR.w,SCR.h
|
||||
for i=1,16 do
|
||||
crystal[i]={
|
||||
x=i<9 and W*.05*i or W*.05*(28-i),
|
||||
y=H*.1,
|
||||
a=0,
|
||||
va=0,
|
||||
f=i<9 and .012-i*.0005 or .012-(17-i)*.0005
|
||||
}
|
||||
end
|
||||
end
|
||||
function back.update()
|
||||
for i=1,16 do
|
||||
local B=crystal[i]
|
||||
B.a=B.a+B.va
|
||||
B.va=B.va*.986-B.a*B.f
|
||||
end
|
||||
end
|
||||
function back.draw()
|
||||
gc.clear(.06,.06,.06)
|
||||
local sy=H*.8
|
||||
for i=1,8 do
|
||||
gc.setColor(wingColor[i])
|
||||
local B=crystal[i]
|
||||
gc.draw(bar,B.x,B.y,B.a,1,sy,20,0)
|
||||
B=crystal[17-i]
|
||||
gc.draw(bar,B.x,B.y,B.a,1,sy,20,0)
|
||||
end
|
||||
end
|
||||
function back.event(level)
|
||||
for i=1,8 do
|
||||
local B=crystal[i]
|
||||
B.va=B.va+.001*level*(1+rnd())
|
||||
B=crystal[17-i]
|
||||
B.va=B.va-.001*level*(1+rnd())
|
||||
end
|
||||
end
|
||||
function back.discard()
|
||||
bar,crystal=nil
|
||||
end
|
||||
return back
|
||||
Reference in New Issue
Block a user