整理代码,添加设置方块初始方向动画

This commit is contained in:
MrZ626
2021-04-08 14:55:04 +08:00
parent f3f63454d3
commit 4ea26cfa32
3 changed files with 65 additions and 61 deletions

View File

@@ -1,19 +1,34 @@
local gc=love.graphics
local int=math.floor
local sin=math.sin
local minoRot={0,0,0,0,0,0,0}
local minoRot0={}
local scene={}
function scene.sceneInit()
for i=1,7 do
minoRot0[i]=SETTING.face[i]*1.57
end
end
function scene.update()
for i=1,7 do
minoRot[i]=minoRot[i]*.8+minoRot0[i]*.2
end
end
function scene.draw()
local t=TIME()
gc.setColor(1,1,1)
local texture=SKIN.curText
for N=1,7 do
for n=1,7 do
gc.push("transform")
gc.translate(-10+140*N,340)
gc.rotate(SETTING.face[N]*1.57+sin(t*3-N*.5)*.08)
local color=SETTING.skin[N]
local B=BLOCKS[N][0]
local x,y=-45-SCS[N][0][2]*30,15+SCS[N][0][1]*30
gc.translate(-10+140*n,340)
gc.rotate(minoRot[n]+sin(t*3-n*.5)*.08)
local color=SETTING.skin[n]
local B=BLOCKS[n][0]
local x,y=-45-SCS[n][0][2]*30,15+SCS[n][0][1]*30
local col=#B[1]
for i=1,#B do for j=1,col do
if B[i][j]then
@@ -29,38 +44,46 @@ function scene.draw()
gc.draw(texture[17],930,610+sin(2.6*t-6)*5,nil,2)
end
local function prevSkin(n)return function()SKIN.prev(n)end end
local function nextSkin(n)return function()SKIN.next(n)end end
local function nextDir(n)return function()SKIN.rotate(n)end end
local function prevSkin(i)
SETTING.skin[i]=(SETTING.skin[i]-2)%16+1
end
local function nextSkin(i)
SETTING.skin[i]=SETTING.skin[i]%16+1
end
local function nextDir(i)
SETTING.face[i]=(SETTING.face[i]+1)%4
minoRot0[i]=minoRot0[i]+1.5707963
SFX.play("rotate")
end
scene.widgetList={
WIDGET.newText{name="title", x=80,y=50,font=70,align="L"},
WIDGET.newButton{name="prev", x=700,y=100,w=140,h=100,fText="",font=50,code=function()SKIN.prevSet()end},
WIDGET.newButton{name="next", x=860,y=100,w=140,h=100,fText="",font=50,code=function()SKIN.nextSet()end},
WIDGET.newButton{name="prev1", x=130,y=230,w=90,h=65,fText="",code=prevSkin(1)},
WIDGET.newButton{name="prev2", x=270,y=230,w=90,h=65,fText="",code=prevSkin(2)},
WIDGET.newButton{name="prev3", x=410,y=230,w=90,h=65,fText="",code=prevSkin(3)},
WIDGET.newButton{name="prev4", x=550,y=230,w=90,h=65,fText="",code=prevSkin(4)},
WIDGET.newButton{name="prev5", x=690,y=230,w=90,h=65,fText="",code=prevSkin(5)},
WIDGET.newButton{name="prev6", x=830,y=230,w=90,h=65,fText="",code=prevSkin(6)},
WIDGET.newButton{name="prev7", x=970,y=230,w=90,h=65,fText="",code=prevSkin(7)},
WIDGET.newButton{name="prev1", x=130,y=230,w=90,h=65,fText="",code=function()prevSkin(1)end},
WIDGET.newButton{name="prev2", x=270,y=230,w=90,h=65,fText="",code=function()prevSkin(2)end},
WIDGET.newButton{name="prev3", x=410,y=230,w=90,h=65,fText="",code=function()prevSkin(3)end},
WIDGET.newButton{name="prev4", x=550,y=230,w=90,h=65,fText="",code=function()prevSkin(4)end},
WIDGET.newButton{name="prev5", x=690,y=230,w=90,h=65,fText="",code=function()prevSkin(5)end},
WIDGET.newButton{name="prev6", x=830,y=230,w=90,h=65,fText="",code=function()prevSkin(6)end},
WIDGET.newButton{name="prev7", x=970,y=230,w=90,h=65,fText="",code=function()prevSkin(7)end},
WIDGET.newButton{name="next1", x=130,y=450,w=90,h=65,fText="",code=nextSkin(1)},
WIDGET.newButton{name="next2", x=270,y=450,w=90,h=65,fText="",code=nextSkin(2)},
WIDGET.newButton{name="next3", x=410,y=450,w=90,h=65,fText="",code=nextSkin(3)},
WIDGET.newButton{name="next4", x=550,y=450,w=90,h=65,fText="",code=nextSkin(4)},
WIDGET.newButton{name="next5", x=690,y=450,w=90,h=65,fText="",code=nextSkin(5)},
WIDGET.newButton{name="next6", x=830,y=450,w=90,h=65,fText="",code=nextSkin(6)},
WIDGET.newButton{name="next7", x=970,y=450,w=90,h=65,fText="",code=nextSkin(7)},
WIDGET.newButton{name="next1", x=130,y=450,w=90,h=65,fText="",code=function()nextSkin(1)end},
WIDGET.newButton{name="next2", x=270,y=450,w=90,h=65,fText="",code=function()nextSkin(2)end},
WIDGET.newButton{name="next3", x=410,y=450,w=90,h=65,fText="",code=function()nextSkin(3)end},
WIDGET.newButton{name="next4", x=550,y=450,w=90,h=65,fText="",code=function()nextSkin(4)end},
WIDGET.newButton{name="next5", x=690,y=450,w=90,h=65,fText="",code=function()nextSkin(5)end},
WIDGET.newButton{name="next6", x=830,y=450,w=90,h=65,fText="",code=function()nextSkin(6)end},
WIDGET.newButton{name="next7", x=970,y=450,w=90,h=65,fText="",code=function()nextSkin(7)end},
WIDGET.newButton{name="spin1", x=130,y=540,w=90,h=65,code=nextDir(1)},
WIDGET.newButton{name="spin2", x=270,y=540,w=90,h=65,code=nextDir(2)},
WIDGET.newButton{name="spin3", x=410,y=540,w=90,h=65,code=nextDir(3)},
WIDGET.newButton{name="spin4", x=550,y=540,w=90,h=65,code=nextDir(4)},
WIDGET.newButton{name="spin5", x=690,y=540,w=90,h=65,code=nextDir(5)},
--WIDGET.newButton{name="spin6",x=825,y=540,w=90,h=65,code=nextDir(6)},--Cannot rotate O
WIDGET.newButton{name="spin7", x=970,y=540,w=90,h=65,code=nextDir(7)},
WIDGET.newButton{name="spin1", x=130,y=540,w=90,h=65,code=function()nextDir(1)end},
WIDGET.newButton{name="spin2", x=270,y=540,w=90,h=65,code=function()nextDir(2)end},
WIDGET.newButton{name="spin3", x=410,y=540,w=90,h=65,code=function()nextDir(3)end},
WIDGET.newButton{name="spin4", x=550,y=540,w=90,h=65,code=function()nextDir(4)end},
WIDGET.newButton{name="spin5", x=690,y=540,w=90,h=65,code=function()nextDir(5)end},
--WIDGET.newButton{name="spin6",x=825,y=540,w=90,h=65,code=function()nextDir(6)end},--Cannot rotate O
WIDGET.newButton{name="spin7", x=970,y=540,w=90,h=65,code=function()nextDir(7)end},
WIDGET.newButton{name="skinR", x=200,y=640,w=220,h=80,color="lPurple",font=35,
code=function()
@@ -72,6 +95,9 @@ scene.widgetList={
for i=1,29 do
SETTING.face[i]=0
end
for i=1,7 do
minoRot0[i]=(int(minoRot0[i]/6.2831853)+(minoRot0[i]%6.2831853>4 and 1 or 0))*6.2831853
end
SFX.play("hold")
end},
WIDGET.newButton{name="back", x=1140,y=640,w=170,h=80,font=40,code=backScene},