327 lines
13 KiB
Lua
327 lines
13 KiB
Lua
local gc=love.graphics
|
|
local sys=love.system
|
|
|
|
actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","swap","restart","insLeft","insRight","insDown"}
|
|
color={
|
|
red={1,0,0},
|
|
green={0,1,0},
|
|
blue={.2,.2,1},
|
|
yellow={1,1,0},
|
|
magenta={1,0,1},
|
|
cyan={0,1,1},
|
|
grey={.6,.6,.6},
|
|
|
|
lightRed={1,.5,.5},
|
|
lightGreen={.5,1,.5},
|
|
lightBlue={.6,.6,1},
|
|
lightYellow={1,1,.5},
|
|
lightMagenta={1,.5,1},
|
|
lightCyan={.5,1,1},
|
|
lightGrey={.8,.8,.8},
|
|
|
|
darkRed={.6,0,0},
|
|
darkGreen={0,.6,0},
|
|
darkBlue={0,0,.6},
|
|
darkYellow={.6,.6,0},
|
|
darkMagenta={.6,0,.6},
|
|
darkCyan={0,.6,.6},
|
|
darkGrey={.3,.3,.3},
|
|
|
|
white={1,1,1},
|
|
orange={1,.6,0},
|
|
lightOrange={1,.7,.3},
|
|
purple={.5,0,1},
|
|
lightPurple={.7,.3,1},
|
|
}
|
|
|
|
sfx={
|
|
"button",
|
|
"ready","start","win","fail","collect",
|
|
"move","rotate","rotatekick","hold",
|
|
"prerotate","prehold",
|
|
"lock","drop","fall",
|
|
"reach",
|
|
"ren_1","ren_2","ren_3","ren_4","ren_5","ren_6","ren_7","ren_8","ren_9","ren_10","ren_11",
|
|
"clear_1","clear_2","clear_3","clear_4",
|
|
"spin_0","spin_1","spin_2","spin_3",
|
|
"emit","blip_1","blip_2",
|
|
"perfectclear",
|
|
}
|
|
bgm={
|
|
"blank",
|
|
"way",
|
|
"race",
|
|
"newera",
|
|
"push",
|
|
"reason",
|
|
"infinite",
|
|
"cruelty",
|
|
"final",
|
|
"secret7th",
|
|
"secret8th",
|
|
"rockblock",
|
|
"end",
|
|
}
|
|
|
|
customID={
|
|
"drop",
|
|
"lock",
|
|
"wait",
|
|
"fall",
|
|
"next",
|
|
"hold",
|
|
"sequence",
|
|
"visible",
|
|
"target",
|
|
"freshLimit",
|
|
"opponent",
|
|
}
|
|
customRange={
|
|
drop={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99,-1},
|
|
lock={0,1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,25,30,40,60,180,1e99},
|
|
wait={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
|
fall={0,1,2,3,4,5,6,7,8,10,15,20,30,60},
|
|
next={0,1,2,3,4,5,6},
|
|
hold={true,false},
|
|
sequence={"bag7","his4","rnd"},
|
|
visible={"show","time","fast","none"},
|
|
target={10,20,40,100,200,500,1000,1e99},
|
|
freshLimit={0,8,15,1e99},
|
|
opponent={0,60,30,20,15,10,7,5,4,3,2,1},
|
|
}
|
|
|
|
snapLevelValue={1,10,20,40,60,80}
|
|
|
|
RCPB={10,33,200,33,105,5,105,60}
|
|
up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
|
|
percent0to5={[0]="0%","20%","40%","60%","80%","100%",}
|
|
|
|
modeID={
|
|
[0]="custom",
|
|
"sprint","marathon","master","classic","zen","infinite","solo","tsd","blind","dig","survivor","tech",
|
|
"pctrain","pcchallenge","techmino41","techmino99","drought","hotseat",
|
|
}
|
|
modeLevel={
|
|
sprint={"10L","20L","40L","100L","400L","1000L"},
|
|
marathon={"EASY","NORMAL","HARD"},
|
|
master={"LUNATIC","ULTIMATE"},
|
|
classic={"CTWC"},
|
|
zen={"NORMAL"},
|
|
infinite={"NORMAL"},
|
|
solo={"EASY","NORMAL","HARD","LUNATIC"},
|
|
tsd={"NORMAL","HARD"},
|
|
blind={"EASY","HARD","HARD+","LUNATIC","ULTIMATE","GM"},
|
|
dig={"NORMAL","LUNATIC"},
|
|
survivor={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
|
|
tech={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
|
|
pctrain={"NORMAL","EXTRA"},
|
|
pcchallenge={"NORMAL","HARD","LUNATIC"},
|
|
techmino41={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
|
|
techmino99={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"},
|
|
drought={"NORMAL","MESS"},
|
|
hotseat={"2P","3P","4P",},
|
|
custom={""},
|
|
}
|
|
local t,f=true,false
|
|
blocks={
|
|
{[0]={{f,t,t},{t,t,f}},{{t,f},{t,t},{f,t}}},
|
|
{[0]={{t,t,f},{f,t,t}},{{f,t},{t,t},{t,f}}},
|
|
{[0]={{t,t,t},{f,f,t}},{{t,t},{t,f},{t,f}},{{t,f,f},{t,t,t}},{{f,t},{f,t},{t,t}}},
|
|
{[0]={{t,t,t},{t,f,f}},{{t,f},{t,f},{t,t}},{{f,f,t},{t,t,t}},{{t,t},{f,t},{f,t}}},
|
|
{[0]={{t,t,t},{f,t,f}},{{t,f},{t,t},{t,f}},{{f,t,f},{t,t,t}},{{f,t},{t,t},{f,t}}},
|
|
{[0]={{t,t},{t,t}},{{t,t},{t,t}}},
|
|
{[0]={{t,t,t,t}},{{t},{t},{t},{t}}},
|
|
}
|
|
local l={1,2,6,7}for i=1,4 do blocks[l[i]][2],blocks[l[i]][3]=blocks[l[i]][0],blocks[l[i]][1]end
|
|
for i=1,7 do blocks[i+7]=blocks[i]end
|
|
|
|
local virtualkeySet={
|
|
{
|
|
{80,720-200,6400,80},--moveLeft
|
|
{320,720-200,6400,80},--moveRight
|
|
{1280-80,720-200,6400,80},--rotRight
|
|
{1280-200,720-80,6400,80},--rotLeft
|
|
{1280-200,720-320,6400,80},--rotFlip
|
|
{200,720-320,6400,80},--hardDrop
|
|
{200,720-80,6400,80},--softDrop
|
|
{1280-320,720-200,6400,80},--hold
|
|
{1280-80,280,6400,80},--swap
|
|
{80,280,6400,80},--restart
|
|
},--Farter's set 3
|
|
{
|
|
{1280-320,720-200,6400,80},--moveLeft
|
|
{1280-80,720-200,6400,80},--moveRight
|
|
{200,720-80,6400,80},--rotRight
|
|
{80,720-200,6400,80},--rotLeft
|
|
{200,720-320,6400,80},--rotFlip
|
|
{1280-200,720-320,6400,80},--hardDrop
|
|
{1280-200,720-80,6400,80},--softDrop
|
|
{320,720-200,6400,80},--hold
|
|
{80,280,6400,80},--swap
|
|
{1280-80,280,6400,80},--restart
|
|
},--Mirrored farter's set 3
|
|
{
|
|
{80,720-80,6400,80},--moveLeft
|
|
{240,720-80,6400,80},--moveRight
|
|
{1280-240,720-80,6400,80},--rotRight
|
|
{1280-400,720-80,6400,80},--rotLeft
|
|
{1280-240,720-240,6400,80},--rotFlip
|
|
{1280-80,720-80,6400,80},--hardDrop
|
|
{1280-80,720-240,6400,80},--softDrop
|
|
{1280-80,720-400,6400,80},--hold
|
|
{80,360,6400,80},--swap
|
|
{80,80,6400,80},--restart
|
|
},--Author's set
|
|
{
|
|
{1280-400,720-80,6400,80},--moveLeft
|
|
{1280-80,720-80,6400,80},--moveRight
|
|
{240,720-80,6400,80},--rotRight
|
|
{80,720-80,6400,80},--rotLeft
|
|
{240,720-240,6400,80},--rotFlip
|
|
{1280-240,720-240,6400,80},--hardDrop
|
|
{1280-240,720-80,6400,80},--softDrop
|
|
{1280-80,720-240,6400,80},--hold
|
|
{80,720-240,6400,80},--swap
|
|
{80,320,6400,80},--restart
|
|
},--Keyboard set
|
|
{
|
|
{1200-360,40,0,40},--moveLeft
|
|
{1200-280,40,0,40},--moveRight
|
|
{1200-520,40,0,40},--rotRight
|
|
{1200-600,40,0,40},--rotLeft
|
|
{1200-440,40,0,40},--rotFlip
|
|
{1200-40,40,0,40},--hardDrop
|
|
{1200-120,40,0,40},--softDrop
|
|
{1200-200,40,0,40},--hold
|
|
{1200-680,40,0,40},--swap
|
|
{1200-760,40,0,40},--restart
|
|
},--PC key feedback
|
|
}
|
|
Buttons={
|
|
load={},
|
|
intro={},
|
|
main={
|
|
play={x=380,y=300,w=240,h=240,rgb=color.red,f=70,code=function()gotoScene("mode")end,down="stat",right="setting"},
|
|
setting={x=640,y=300,w=240,h=240,rgb=color.lightBlue,f=55,code=function()gotoScene("setting")end,down="stat",left="play",right="help"},
|
|
stat={x=640,y=560,w=240,h=240,rgb=color.cyan,f=55,code=function()gotoScene("stat")end,up="setting",left="play",right="help"},
|
|
help={x=900,y=560,w=240,h=240,rgb=color.yellow,f=55,code=function()gotoScene("help")end,up="setting",left="stat",right="quit"},
|
|
quit={x=1180,y=620,w=120,h=120,rgb=color.lightGrey,f=50,code=function()gotoScene("quit")end,up="setting",left="help"},
|
|
},
|
|
mode={
|
|
up={x=1000,y=210,w=200,h=140,rgb=color.white,hide=function()return modeSel==1 end,f=64,code=function()keyDown.mode("up")end},
|
|
down={x=1000,y=430,w=200,h=140,rgb=color.white,hide=function()return modeSel==#modeID end,f=80,code=function()keyDown.mode("down")end},
|
|
left={x=190,y=160,w=100,h=80,rgb=color.white,hide=function()return levelSel==1 end,code=function()keyDown.mode("left")end},
|
|
right={x=350,y=160,w=100,h=80,rgb=color.white,hide=function()return levelSel==#modeLevel[modeID[modeSel]] end,code=function()keyDown.mode("right")end},
|
|
start={x=1000,y=600,w=250,h=100,rgb=color.green,f=50,code=function()loadGame(modeSel,levelSel)end},
|
|
custom={x=270,y=540,w=190,h=85,rgb=color.yellow,code=function()gotoScene("custom")end},
|
|
back={x=640,y=630,w=230,h=90,rgb=color.white,f=45,code=back},
|
|
},
|
|
custom={
|
|
up={x=1000,y=200,w=100,h=100,rgb=color.white,code=function()optSel=(optSel-2)%#customID+1 end},
|
|
down={x=1000,y=440,w=100,h=100,rgb=color.white,f=50,code=function()optSel=optSel%#customID+1 end},
|
|
left={x=880,y=320,w=100,h=100,rgb=color.white,f=50,code=function()local k=customID[optSel]customSel[k]=(customSel[k]-2)%#customRange[k]+1 end},
|
|
right={x=1120,y=320,w=100,h=100,rgb=color.white,f=50,code=function()local k=customID[optSel]customSel[k]=customSel[k]%#customRange[k]+1 end},
|
|
start={x=1000,y=580,w=180,h=80,rgb=color.green,code=function()loadGame(0,1)end},
|
|
back={x=640,y=630,w=180,h=60,rgb=color.white,code=back},
|
|
},
|
|
play={
|
|
back={x=1235,y=45,w=80,h=80,rgb=color.white,code=back,f=35},
|
|
},
|
|
setting={--Normal setting
|
|
ghost= {x=290, y=90, w=210, h=60, rgb=color.white, code=function()setting.ghost=not setting.ghost end,down="grid",right="center"},
|
|
center= {x=505, y=90, w=210, h=60, rgb=color.white, code=function()setting.center=not setting.center end,down="swap",left="ghost",right="sfx"},
|
|
grid= {x=290, y=160, w=210, h=60, rgb=color.white, code=function()setting.grid=not setting.grid end,up="ghost",down="fxs",right="swap"},
|
|
swap= {x=505, y=160, w=210, h=60,f=28, rgb=color.white, code=function()setting.swap=not setting.swap end,up="center",down="arrD",left="grid",right="vib"},
|
|
fxs= {x=290, y=230, w=210, h=60, rgb=color.white, code=function()setting.fxs=not setting.fxs end,up="grid",down="dasU",right="fullscreen"},
|
|
|
|
dasD= {x=210, y=300, w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das-1)%31 end,up="fxs",down="sddasD",right="dasU"},
|
|
dasU= {x=370, y=300, w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das+1)%31 end,up="fxs",down="sddasU",left="dasD",right="arrD"},
|
|
arrD= {x=425, y=300, w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr-1)%16 end,up="swap",down="sdarrD",left="dasU",right="arrU"},
|
|
arrU= {x=585, y=300, w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr+1)%16 end,up="swap",down="sdarrU",left="arrD",right="bgblock"},--3~6
|
|
sddasD= {x=210, y=370, w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas-1)%11 end,up="dasD",down="lang",right="sddasU"},
|
|
sddasU= {x=370, y=370, w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas+1)%11 end,up="dasU",down="lang",left="sddasD",right="sdarrD"},
|
|
sdarrD= {x=425, y=370, w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr-1)%4 end,up="arrD",down="lang",left="sddasU",right="sdarrU"},
|
|
sdarrU= {x=585, y=370, w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr+1)%4 end,up="arrU",down="lang",left="sdarrD",right="frame"},
|
|
|
|
sfx= {x=760, y=90, w=160, h=60, rgb=color.white, code=function()setting.sfx=not setting.sfx end,down="vib",left="center",right="bgm"},
|
|
bgm= {x=940, y=90, w=160, h=60, rgb=color.white, code=function()
|
|
BGM()
|
|
setting.bgm=not setting.bgm
|
|
BGM("blank")
|
|
end,down="vib",left="sfx"},
|
|
vib= {x=850, y=160, w=340, h=60, rgb=color.white, code=function()
|
|
setting.vib=(setting.vib+1)%5
|
|
VIB(2)
|
|
end,up="sfx",down="fullscreen",left="swap"},
|
|
fullscreen= {x=850, y=230, w=340, h=60, rgb=color.white, code=function()
|
|
setting.fullscreen=not setting.fullscreen
|
|
love.window.setFullscreen(setting.fullscreen)
|
|
if not setting.fullscreen then
|
|
love.resize(gc.getWidth(),gc.getHeight())
|
|
end
|
|
end,up="vib",down="bgblock",left="arrU"},
|
|
bgblock= {x=850, y=300, w=340, h=60, rgb=color.white, code=function()
|
|
setting.bgblock=not setting.bgblock
|
|
if not setting.bgblock then
|
|
for i=1,16 do
|
|
BGblockList[i].v=3*BGblockList[i].v
|
|
end
|
|
end
|
|
end,up="fullscreen",down="frame",left="sdarrU"},
|
|
frame= {x=850, y=370, w=340, h=60, rgb=color.white, code=function()
|
|
setting.frameMul=setting.frameMul+(setting.frameMul<50 and 5 or 10)
|
|
if setting.frameMul>100 then setting.frameMul=25 end
|
|
end,up="bgblock",down="control",left="sdarrU"},
|
|
control= {x=850, y=440, w=340, h=60, rgb=color.green, code=function()gotoScene("setting2")end,up="frame",down="touch",left="lang"},
|
|
touch= {x=850, y=510, w=340, h=60, rgb=color.yellow, code=function()gotoScene("setting3")end,up="control",down="back",left="lang"},
|
|
lang= {x=280, y=510, w=200, h=60, rgb=color.red, code=function()
|
|
setting.lang=setting.lang%#langName+1
|
|
swapLanguage(setting.lang)
|
|
end,up="sddasD",down="back",right="touch"},
|
|
back= {x=640, y=620, w=300, h=70, rgb=color.white, code=back,up="touch"},
|
|
},
|
|
setting2={--Control setting
|
|
back={x=840,y=630,w=180,h=60,rgb=color.white,code=back},
|
|
},
|
|
setting3={--Touch setting
|
|
back={x=640,y=410,w=170,h=80,f=45,code=back},
|
|
hide={x=640,y=210,w=500,h=80,f=45,code=function()
|
|
setting.virtualkeySwitch=not setting.virtualkeySwitch
|
|
end},
|
|
default={x=450,y=310,w=170,h=80,code=function()
|
|
for K=1,#virtualkey do
|
|
local b,b0=virtualkey[K],virtualkeySet[defaultSel][K]
|
|
b[1],b[2],b[3],b[4]=b0[1],b0[2],b0[3],b0[4]
|
|
end--Default virtualkey
|
|
defaultSel=defaultSel%5+1
|
|
end},
|
|
snap={x=640,y=310,w=170,h=80,code=function()
|
|
snapLevel=snapLevel%6+1
|
|
end},
|
|
alpha={x=830,y=310,w=170,h=80,f=45,code=function()
|
|
setting.virtualkeyAlpha=(setting.virtualkeyAlpha+1)%6
|
|
--Adjust virtualkey alpha
|
|
end},
|
|
icon={x=450,y=410,w=170,h=80,f=45,code=function()
|
|
setting.virtualkeyIcon=not setting.virtualkeyIcon
|
|
--Switch virtualkey icon
|
|
end},
|
|
size={x=830,y=410,w=170,h=80,f=45,code=function()
|
|
if sel then
|
|
local b=virtualkey[sel]
|
|
b[4]=b[4]+10
|
|
if b[4]==150 then b[4]=40 end
|
|
b[3]=b[4]^2
|
|
end
|
|
end},
|
|
},
|
|
help={
|
|
back={x=640,y=590,w=180,h=60,rgb=color.white,code=back,right="qq"},
|
|
qq={x=980,y=590,w=230,h=60,rgb=color.white,code=function()sys.openURL("tencent://message/?uin=1046101471&Site=&Menu=yes")end,left="back"},
|
|
},
|
|
stat={
|
|
back={x=640,y=590,w=180,h=60,rgb=color.white,code=back,right="path"},
|
|
path={x=980,y=590,w=250,h=60,f=30,rgb=color.white,code=function()sys.openURL("C:/Users/MrZ/AppData/Roaming/LOVE/Techmino")end,left="back"},
|
|
},
|
|
sel=nil,--selected button id(integer)
|
|
} |