Files
Techmino/Zframework/widgetList.lua
2020-07-23 00:42:47 +08:00

484 lines
23 KiB
Lua

local ins,rem=table.insert,table.remove
local mobileHide=(system=="Android"or system=="iOS")and function()return true end
local function BACK()SCN.back()end
local virtualkeySet={
{
{1, 80, 720-200, 80},--moveLeft
{2, 320, 720-200, 80},--moveRight
{3, 1280-80, 720-200, 80},--rotRight
{4, 1280-200, 720-80, 80},--rotLeft
{5, 1280-200, 720-320, 80},--rot180
{6, 200, 720-320, 80},--hardDrop
{7, 200, 720-80, 80},--softDrop
{8, 1280-320, 720-200, 80},--hold
{9, 1280-80, 280, 80},--func
{10,80, 280, 80},--restart
},--Farter's set,thanks
{
{1, 1280-320, 720-200, 80},--moveLeft
{2, 1280-80, 720-200, 80},--moveRight
{3, 200, 720-80, 80},--rotRight
{4, 80, 720-200, 80},--rotLeft
{5, 200, 720-320, 80},--rot180
{6, 1280-200, 720-320, 80},--hardDrop
{7, 1280-200, 720-80, 80},--softDrop
{8, 320, 720-200, 80},--hold
{9, 80, 280, 80},--func
{10,1280-80, 280, 80},--restart
},--Mirrored farter's set,sknaht
{
{1, 80, 720-80, 80},--moveLeft
{2, 240, 720-80, 80},--moveRight
{3, 1280-240, 720-80, 80},--rotRight
{4, 1280-400, 720-80, 80},--rotLeft
{5, 1280-240, 720-240, 80},--rot180
{6, 1280-80, 720-80, 80},--hardDrop
{7, 1280-80, 720-240, 80},--softDrop
{8, 1280-80, 720-400, 80},--hold
{9, 80, 360, 80},--func
{10,80, 80, 80},--restart
},--Author's set,not recommend
{
{1, 1280-400, 720-80, 80},--moveLeft
{2, 1280-80, 720-80, 80},--moveRight
{3, 240, 720-80, 80},--rotRight
{4, 80, 720-80, 80},--rotLeft
{5, 240, 720-240, 80},--rot180
{6, 1280-240, 720-240, 80},--hardDrop
{7, 1280-240, 720-80, 80},--softDrop
{8, 1280-80, 720-240, 80},--hold
{9, 80, 720-240, 80},--func
{10,80, 320, 80},--restart
},--Keyboard set
{
{10,70, 50,30},--restart
{9, 130, 50,30},--func
{4, 190, 50,30},--rotLeft
{3, 250, 50,30},--rotRight
{5, 310, 50,30},--rot180
{1, 370, 50,30},--moveLeft
{2, 430, 50,30},--moveRight
{8, 490, 50,30},--hold
{7, 550, 50,30},--softDrop1
{6, 610, 50,30},--hardDrop
{11,670, 50,30},--insLeft
{12,730, 50,30},--insRight
{13,790, 50,30},--insDown
{14,850, 50,30},--down1
{15,910, 50,30},--down4
{16,970, 50,30},--down10
{17,1030, 50,30},--dropLeft
{18,1090, 50,30},--dropRight
{19,1150, 50,30},--addLeft
{20,1210, 50,30},--addRight
},--PC key feedback(top&in a row)
}
--lambda Funcs for widgets,delete at file end
local function SETval(k) return function()return setting[k] end end
local function SETsto(k) return function(i)setting[k]=i end end
local function SETrev(k) return function()setting[k]=not setting[k] end end
local function pressKey(k) return function()love.keypressed(k) end end
local function setPen(i) return function()sceneTemp.pen=i end 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 VKAdisp(n) return function()return VK_org[n].ava end end
local function VKAcode(n) return function()VK_org[n].ava=not VK_org[n].ava end end
local function setLang(n) return function()LANG.set(n)setting.lang=n end end
local newButton,newSwitch,newSlider=WIDGET.new.button,WIDGET.new.switch,WIDGET.new.slider
local C=color
local Widgets={
load={},intro={},quit={},
main={
play= newButton(150,280,200,160,C.lightRed, 55,function()SCN.goto("mode")end, nil,"setting"),
setting=newButton(370,280,200,160,C.lightBlue, 45,function()SCN.goto("setting_game")end, nil,"music"),
music= newButton(590,280,200,160,C.lightPurple, 32,function()SCN.goto("music")end, nil,"help"),
help= newButton(150,460,200,160,C.lightYellow, 50,function()SCN.goto("help")end, nil,"stat"),
stat= newButton(370,460,200,160,C.lightCyan, 43,function()SCN.goto("stat")end, nil,"qplay"),
qplay= newButton(590,460,200,160,C.lightOrange, 43,function()SCN.push()loadGame(stat.lastPlay)end, nil,"lang"),
lang= newButton(150,610,160,100,C.lightGreen, 45,function()SCN.goto("setting_lang")end, nil,"quit"),
quit= newButton(590,610,160,100,C.lightGrey, 45,function()VOC.play("bye")SCN.swapTo("quit","slowFade")end,nil,"play"),
},
mode={
setting=newButton(1100, 540,240,90,C.lightGreen, 40,function()
SCN.goto("custom")
end,
function()
return mapCam.sel~="custom_clear" and mapCam.sel~="custom_puzzle"
end),
start= newButton(1040, 655,180,80,C.lightGrey, 40,pressKey("return"),function()return not mapCam.sel end),
back= newButton(1200, 655,120,80,C.white, 40,BACK),
},
music={
bgm= newSlider(760, 80,400,10,35,function()BGM.freshVolume()end,SETval("bgm"),SETsto("bgm")),
up= newButton(1100, 200,120,120,C.white, 55,pressKey("up")),
play= newButton(1100, 340,120,120,C.white, 35,pressKey("space"),function()return setting.bgm==0 end),
down= newButton(1100, 480,120,120,C.white, 55,pressKey("down")),
back= newButton(640, 630,230,90, C.white, 40,BACK),
},
custom={
up= newButton(1140, 100,100,100,C.white, 45,function()sceneTemp=(sceneTemp-2)%#customID+1 end),
down= newButton(1140, 340,100,100,C.white, 45,function()sceneTemp=sceneTemp%#customID+1 end),
left= newButton(1080, 220,100,100,C.white, 45,pressKey("left")),
right= newButton(1200, 220,100,100,C.white, 45,pressKey("right")),
set1= newButton(940, 320,260,70, C.lightYellow, 32,pressKey("1")),
set2= newButton(940, 400,260,70, C.lightYellow, 32,pressKey("2")),
set3= newButton(940, 480,260,70, C.lightYellow, 32,pressKey("3")),
set4= newButton(940, 560,260,70, C.lightYellow, 32,pressKey("4")),
set5= newButton(940, 640,260,70, C.lightYellow, 32,pressKey("5")),
seq= newButton(665, 415,200,40, C.lightGreen, 30,pressKey("q")),
draw= newButton(150, 80, 220,80, C.white, 35,pressKey("e")),
back= newButton(1200, 640,120,120,C.white, 35,BACK),
},
sequence={
Z= newButton(150, 440,90, 90,C.white, 50,pressKey(1)),
S= newButton(250, 440,90, 90,C.white, 50,pressKey(2)),
J= newButton(350, 440,90, 90,C.white, 50,pressKey(3)),
L= newButton(450, 440,90, 90,C.white, 50,pressKey(4)),
T= newButton(550, 440,90, 90,C.white, 50,pressKey(5)),
O= newButton(650, 440,90, 90,C.white, 50,pressKey(6)),
I= newButton(750, 440,90, 90,C.white, 50,pressKey(7)),
Z5= newButton(150, 540,90, 90,C.darkGrey, 50,pressKey(8)),
S5= newButton(250, 540,90, 90,C.darkGrey, 50,pressKey(9)),
P= newButton(350, 540,90, 90,C.darkGrey, 50,pressKey(10)),
Q= newButton(450, 540,90, 90,C.darkGrey, 50,pressKey(11)),
F= newButton(550, 540,90, 90,C.darkGrey, 50,pressKey(12)),
E= newButton(650, 540,90, 90,C.darkGrey, 50,pressKey(13)),
T5= newButton(750, 540,90, 90,C.darkGrey, 50,pressKey(14)),
U= newButton(850, 540,90, 90,C.darkGrey, 50,pressKey(15)),
V= newButton(950, 540,90, 90,C.darkGrey, 50,pressKey(16)),
W= newButton(150, 640,90, 90,C.darkGrey, 50,pressKey(17)),
X= newButton(250, 640,90, 90,C.darkGrey, 50,pressKey(18)),
J5= newButton(350, 640,90, 90,C.darkGrey, 50,pressKey(19)),
L5= newButton(450, 640,90, 90,C.darkGrey, 50,pressKey(20)),
R= newButton(550, 640,90, 90,C.darkGrey, 50,pressKey(21)),
Y= newButton(650, 640,90, 90,C.darkGrey, 50,pressKey(22)),
N= newButton(750, 640,90, 90,C.darkGrey, 50,pressKey(23)),
H= newButton(850, 640,90, 90,C.darkGrey, 50,pressKey(24)),
I5= newButton(950, 640,90, 90,C.darkGrey, 50,pressKey(25)),
left= newButton(850, 440,90, 90,C.lightGreen, 55,pressKey("left")),
right= newButton(950, 440,90, 90,C.lightGreen, 55,pressKey("right")),
backsp= newButton(1050, 440,90, 90,C.lightRed, 50,pressKey("backspace")),
reset= newButton(1050, 540,90, 90,C.lightRed, 50,pressKey("delete")),
back= newButton(1200, 640,120,120,C.white, 35,BACK),
},
draw={
b1= newButton(500+65*1, 150,58,58,C.red, 30,setPen(1)),--B1
b2= newButton(500+65*2, 150,58,58,C.orange, 30,setPen(2)),--B2
b3= newButton(500+65*3, 150,58,58,C.yellow, 30,setPen(3)),--B3
b4= newButton(500+65*4, 150,58,58,C.grass, 30,setPen(4)),--B4
b5= newButton(500+65*5, 150,58,58,C.green, 30,setPen(5)),--B5
b6= newButton(500+65*6, 150,58,58,C.water, 30,setPen(6)),--B6
b7= newButton(500+65*7, 150,58,58,C.cyan, 30,setPen(7)),--B7
b8= newButton(500+65*8, 150,58,58,C.blue, 30,setPen(8)),--B8
b9= newButton(500+65*9, 150,58,58,C.purple, 30,setPen(9)),--B9
b10= newButton(500+65*10,150,58,58,C.magenta, 30,setPen(10)),--B10
b11= newButton(500+65*11,150,58,58,C.pink, 30,setPen(11)),--B11
b12= newButton(500+65*1, 230,58,58,C.darkGrey, 30,setPen(12)),--Bone
b13= newButton(500+65*2, 230,58,58,C.grey, 30,setPen(13)),--GB1
b14= newButton(500+65*3, 230,58,58,C.lightGrey, 30,setPen(14)),--GB2
b15= newButton(500+65*4, 230,58,58,C.darkPurple, 30,setPen(15)),--GB3
b16= newButton(500+65*5, 230,58,58,C.darkRed, 30,setPen(16)),--GB4
b17= newButton(500+65*6, 230,58,58,C.darkGreen, 30,setPen(17)),--GB5
any= newButton(600, 360,120,120,C.lightGrey, 40,setPen(0)),
space= newButton(730, 360,120,120,C.grey, 65,setPen(-1)),
clear= newButton(1200, 500,120,120,C.white, 40,pressKey("delete")),
demo= newSwitch(755, 640,30,function()return sceneTemp.demo end,function()sceneTemp.demo=not sceneTemp.demo end),
copy= newButton(920, 640,120,120,C.lightRed, 35,function()copyBoard()end),
paste= newButton(1060, 640,120,120,C.lightBlue, 35,function()pasteBoard()end),
custom= newButton(110, 80, 140,80, C.white, 35,function()SCN.goto("custom")end),
back= newButton(1200, 640,120,120,C.white, 35,BACK),
},
play={
pause= newButton(1235,45,80,80,C.white,25,function()pauseGame()end),
},
pause={
resume= newButton(640,290,240,100,C.white,30,function()resumeGame()end),
restart=newButton(640,445,240,100,C.white,33,function()
TASK.removeTask_code(TICK.autoPause)
mergeStat(stat,players[1].stat)
resetGameData()
SCN.swapTo("play","none")
end),
setting=newButton(1120,70,240,90,C.lightBlue,35,function()
SCN.goto("setting_sound")
end),
quit= newButton(640,600,240,100,C.white,35,BACK),
},
setting_game={
graphic=newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sound"),
sound= newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_sound")end, nil,"ctrl"),
ctrl= newButton(290,220,320,80,C.lightYellow,35,function()SCN.goto("setting_control")end, nil,"key"),
key= newButton(640,220,320,80,C.lightGreen,35,function()SCN.goto("setting_key")end, nil,"touch"),
touch= newButton(990,220,320,80,C.lightBlue,35,function()SCN.goto("setting_touch")end, nil,"reTime"),
reTime= newSlider(350,340,300,10,30,nil, SETval("reTime"), SETsto("reTime"), nil,"maxNext"),
maxNext=newSlider(350,440,300,6,30,nil, SETval("maxNext"), SETsto("maxNext"), nil,"autoPause"),
autoPause=newSwitch(350,540,20, SETval("autoPause"), SETrev("autoPause"), nil,"layout"),
layout= newButton(590,540,140,70,C.white,35,function()
SCN.goto("setting_skin")
end,nil,"quickR"),
quickR= newSwitch(1050,320,35, SETval("quickR"), SETrev("quickR"), nil,"swap"),
swap= newSwitch(1050,400,20, SETval("swap"), SETrev("swap"), nil,"fine"),
fine= newSwitch(1050,480,20, SETval("fine"), SETrev("fine"), nil,"back"),
back= newButton(1140,650,200,80,C.white,40,BACK, nil,"graphic"),
},
setting_video={
sound= newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_sound")end, nil,"game"),
game= newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_game")end, nil,"ghost"),
ghost= newSwitch(250,180,35, SETval("ghost"), SETrev("ghost"), nil,"smooth"),
smooth= newSwitch(250,260,25, SETval("smooth"), SETrev("smooth"), nil,"center"),
center= newSwitch(500,180,35, SETval("center"), SETrev("center"), nil,"grid"),
grid= newSwitch(500,260,30, SETval("grid"), SETrev("grid"), nil,"bagLine"),
bagLine=newSwitch(730,180,30, SETval("bagLine"), SETrev("bagLine"), nil,"lockFX"),
lockFX= newSlider(350,340,373,3,32,nil, SETval("lockFX"), SETsto("lockFX"), nil,"dropFX"),
dropFX= newSlider(350,400,373,5,32,nil, SETval("dropFX"), SETsto("dropFX"), nil,"clearFX"),
clearFX=newSlider(350,460,373,3,32,nil, SETval("clearFX"), SETsto("clearFX"), nil,"shakeFX"),
shakeFX=newSlider(350,520,373,5,32,nil, SETval("shakeFX"), SETsto("shakeFX"), nil,"atkFX"),
atkFX= newSlider(350,580,373,5,32,nil, SETval("atkFX"), SETsto("atkFX"), nil,"frame"),
frame= newSlider(350,640,373,10,30,nil,function()return setting.frameMul>35 and setting.frameMul/10 or setting.frameMul/5-4 end,function(i)setting.frameMul=i<5 and 5*i+20 or 10*i end,nil,"text"),
text= newSwitch(1050,180,35,SETval("text"),SETrev("text"),nil,"warn"),
warn= newSwitch(1050,260,35,SETval("warn"),SETrev("warn"),nil,"fullscreen"),
fullscreen=newSwitch(1050,340,35,SETval("fullscreen"),function()
setting.fullscreen=not setting.fullscreen
love.window.setFullscreen(setting.fullscreen)
love.resize(love.graphics.getWidth(),love.graphics.getHeight())
end,nil,"bg"),
bg= newSwitch(1050,420,35,SETval("bg"),function()
BG.set("none")
setting.bg=not setting.bg
BG.set("space")
end,nil,"power"),
power= newSwitch(1050,500,35,SETval("powerInfo"),function()
setting.powerInfo=not setting.powerInfo
end,nil,"back"),
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"sound"),
},
setting_sound={
game= newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_game")end, nil,"graphic"),
graphic=newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sfx"),
sfx= newSlider(180,200,400,10,35,function()SFX.play("blip_1")end, SETval("sfx"), SETsto("sfx"), nil,"stereo"),
stereo= newSlider(180,500,400,10,35,function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, SETval("stereo"), SETsto("stereo"),function()return setting.sfx==0 end,"spawn"),
spawn= newSlider(180,300,400,10,30,function()SFX.play("spawn_1",setting.spawn,nil,true)end,SETval("spawn"), SETsto("spawn"),nil,"bgm"),
bgm= newSlider(180,400,400,10,35,function()BGM.freshVolume()end, SETval("bgm"), SETsto("bgm"), nil,"vib"),
vib= newSlider(750,200,400,5 ,28,function()VIB(2)end, SETval("vib"), SETsto("vib"), nil,"voc"),
voc= newSlider(750,300,400,10,32,function()VOC.play("nya")end, SETval("voc"), SETsto("voc"), nil,"back"),
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"game"),
},
setting_control={
das= newSlider(226,200,910, 26, 30,nil,SETval("das"), SETsto("das"), nil,"arr"),
arr= newSlider(226,290,525, 15, 30,nil,SETval("arr"), SETsto("arr"), nil,"sddas"),
sddas= newSlider(226,380,350, 10, 30,nil,SETval("sddas"), SETsto("sddas"),nil,"sdarr"),
sdarr= newSlider(226,470,140, 4, 30,nil,SETval("sdarr"), SETsto("sdarr"),nil,"ihs"),
ihs= newSwitch(1100,290,30, SETval("ihs"), SETrev("ihs"),nil,"irs"),
irs= newSwitch(1100,380,30, SETval("irs"), SETrev("irs"),nil,"ihs"),
ims= newSwitch(1100,470,30, SETval("ims"), SETrev("ims"),nil,"reset"),
reset= newButton(160,580,200, 100,C.lightRed,40,function()
local _=setting
_.das,_.arr=10,2
_.sddas,_.sdarr=0,2
_.ihs,_.irs,_.ims=false,false,false
end,nil,"back"),
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"das"),
},
setting_key={
back=newButton(1140,650,200,80,C.white,45,BACK),
},
setting_skin={
prev= newButton(700,100,140,100,C.white,50,function()SKIN.prevSet()end),
next= newButton(860,100,140,100,C.white,50,function()SKIN.nextSet()end),
prev1= newButton(130,230,90,65,C.white,30,prevSkin(1)),
prev2= newButton(270,230,90,65,C.white,30,prevSkin(2)),
prev3= newButton(410,230,90,65,C.white,30,prevSkin(3)),
prev4= newButton(550,230,90,65,C.white,30,prevSkin(4)),
prev5= newButton(690,230,90,65,C.white,30,prevSkin(5)),
prev6= newButton(830,230,90,65,C.white,30,prevSkin(6)),
prev7= newButton(970,230,90,65,C.white,30,prevSkin(7)),
next1= newButton(130,450,90,65,C.white,30,nextSkin(1)),
next2= newButton(270,450,90,65,C.white,30,nextSkin(2)),
next3= newButton(410,450,90,65,C.white,30,nextSkin(3)),
next4= newButton(550,450,90,65,C.white,30,nextSkin(4)),
next5= newButton(690,450,90,65,C.white,30,nextSkin(5)),
next6= newButton(830,450,90,65,C.white,30,nextSkin(6)),
next7= newButton(970,450,90,65,C.white,30,nextSkin(7)),
spin1= newButton(130,540,90,65,C.white,30,nextDir(1)),
spin2= newButton(270,540,90,65,C.white,30,nextDir(2)),
spin3= newButton(410,540,90,65,C.white,30,nextDir(3)),
spin4= newButton(550,540,90,65,C.white,30,nextDir(4)),
spin5= newButton(690,540,90,65,C.white,30,nextDir(5)),
--spin6=newButton(825,540,90,65,C.white,30,nextDir(6)),--cannot rotate O
spin7= newButton(970,540,90,65,C.white,30,nextDir(7)),
skinR= newButton(200,640,220,80,C.lightPurple,35,function()
setting.skin={1,5,8,2,10,3,7,1,5,5,1,8,2,10,3,7,10,7,8,2,8,2,1,5,3}
SFX.play("rotate")
end),
faceR= newButton(480,640,220,80,C.lightRed,35,function()
for i=1,25 do
setting.face[i]=0
end
SFX.play("hold")
end),
back= newButton(1140,650,200,80,C.white,40,BACK),
},
setting_touch={
default=newButton(520,80,170,80,C.white,35,function()
local D=virtualkeySet[sceneTemp.default]
for i=1,#VK_org do
VK_org[i].ava=false
end
for n=1,#D do
local T=D[n]
if T[1]then
local B=VK_org[n]
B.ava=true
B.x,B.y,B.r=T[2],T[3],T[4]
end
end--Replace keys
sceneTemp.default=sceneTemp.default%5+1
sceneTemp.sel=nil
end),
snap= newButton(760,80,170,80,C.white,35,function()
sceneTemp.snap=sceneTemp.snap%6+1
end),
option= newButton(520,180,170,80,C.white,40,function()
SCN.goto("setting_touchSwitch")
end),
back= newButton(760,180,170,80,C.white,40,BACK),
size= newSlider(450,265,460,14,40,nil,function()
return VK_org[sceneTemp.sel].r/10-1
end,
function(v)
if sceneTemp.sel then
VK_org[sceneTemp.sel].r=10+v*10
end
end,
function()return not sceneTemp.sel end),
},
setting_touchSwitch={
b1= newSwitch(280,80, 35,VKAdisp(1),VKAcode(1)),
b2= newSwitch(280,140, 35,VKAdisp(2),VKAcode(2)),
b3= newSwitch(280,200, 35,VKAdisp(3),VKAcode(3)),
b4= newSwitch(280,260, 35,VKAdisp(4),VKAcode(4)),
b5= newSwitch(280,320, 35,VKAdisp(5),VKAcode(5)),
b6= newSwitch(280,380, 35,VKAdisp(6),VKAcode(6)),
b7= newSwitch(280,440, 35,VKAdisp(7),VKAcode(7)),
b8= newSwitch(280,500, 35,VKAdisp(8),VKAcode(8)),
b9= newSwitch(280,560, 35,VKAdisp(9),VKAcode(9)),
b10= newSwitch(280,620, 35,VKAdisp(10),VKAcode(10)),
b11= newSwitch(620,80, 35,VKAdisp(11),VKAcode(11)),
b12= newSwitch(620,140, 35,VKAdisp(12),VKAcode(12)),
b13= newSwitch(620,200, 35,VKAdisp(13),VKAcode(13)),
b14= newSwitch(620,260, 35,VKAdisp(14),VKAcode(14)),
b15= newSwitch(620,320, 35,VKAdisp(15),VKAcode(15)),
b16= newSwitch(620,380, 35,VKAdisp(16),VKAcode(16)),
b17= newSwitch(620,440, 35,VKAdisp(17),VKAcode(17)),
b18= newSwitch(620,500, 35,VKAdisp(18),VKAcode(18)),
b19= newSwitch(620,560, 35,VKAdisp(19),VKAcode(19)),
b20= newSwitch(620,620, 35,VKAdisp(20),VKAcode(20)),
norm= newButton(840,100, 240,80,C.white,35,function()for i=1,20 do VK_org[i].ava=i<11 end end),
pro= newButton(1120,100, 240,80,C.white,35,function()for i=1,20 do VK_org[i].ava=true end end),
hide= newSwitch(1170,200, 40,SETval("VKSwitch"),SETrev("VKSwitch")),
track= newSwitch(1170,300, 35,SETval("VKTrack"),SETrev("VKTrack")),
sfx= newSlider(800,380,180,4,40,function()SFX.play("virtualKey",setting.VKSFX*.25)end,SETval("VKSFX"),SETsto("VKSFX")),
vib= newSlider(800,460,180,2,40,function()VIB(setting.VKVIB)end,SETval("VKVIB"),SETsto("VKVIB")),
icon= newSwitch(850,300, 40,SETval("VKIcon"),SETrev("VKIcon")),
tkset= newButton(1120,420,240,80,C.white,32,function()
SCN.goto("setting_trackSetting")
end,function()return not setting.VKTrack end),
alpha= newSlider(840,540,400,10,40,nil,SETval("VKAlpha"),SETsto("VKAlpha")),
back= newButton(1120,620,200,80,C.white,45,BACK),
},
setting_trackSetting={
VKDodge=newSwitch(400,200, 35,SETval("VKDodge"),SETrev("VKDodge")),
VKTchW= newSlider(140,310,1000,10,35,nil,SETval("VKTchW"),function(i)setting.VKTchW=i;setting.VKCurW=math.max(setting.VKCurW,i)end),
VKCurW= newSlider(140,370,1000,10,35,nil,SETval("VKCurW"),function(i)setting.VKCurW=i;setting.VKTchW=math.min(setting.VKTchW,i)end),
back= newButton(1080,600,240,80,C.white,45,BACK),
},
setting_lang={
chi= newButton(160,100,200,120,C.white,45,setLang(1),nil,"chi2"),
chi2= newButton(380,100,200,120,C.white,45,setLang(2),nil,"eng"),
eng= newButton(600,100,200,120,C.white,45,setLang(3),nil,"str"),
str= newButton(820,100,200,120,C.white,45,setLang(4),nil,"back"),
back= newButton(640,600,200,80,C.white,40,BACK,nil,"chi"),
},
help={
staff= newButton(980,500,150,80,C.white,32,function()SCN.goto("staff")end,nil,"his"),
his= newButton(1160,500,150,80,C.white,32,function()SCN.goto("history")end,nil,"qq"),
qq= newButton(1070,600,200,80,C.white,32,function()love.system.openURL("tencent://message/?uin=1046101471&Site=&Menu=yes")end,mobileHide,"back"),
back= newButton(640,600,200,80,C.white,40,BACK,nil,"staff"),
},
staff={
back= newButton(1160,630,150,80,C.white,40,BACK),
},
history={
prev= newButton(1155,170,180,180,C.white,65,pressKey("up"),function()return sceneTemp[2]==1 end),
next= newButton(1155,400,180,180,C.white,65,pressKey("down"),function()return sceneTemp[2]==#sceneTemp[1]end),
back= newButton(1155,600,180,90,C.white,40,BACK),
},
stat={
path= newButton(980,620,250,80,C.white,25,function()love.system.openURL(love.filesystem.getSaveDirectory())end,mobileHide,"back"),
back= newButton(640,620,200,80,C.white,40,BACK,nil,"path"),
},
debug={
killWTM=newButton(340,200,260,100,C.white,35,function()
marking=nil
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
SFX.play("clear")
end),
unlock= newButton(640,200,260,100,C.white,40,function()
for name,M in next,Modes do
if not modeRanks[name]then
modeRanks[name]=M.score and 0 or 6
end
end
FILE.saveUnlock()
TEXT.show("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
SFX.play("clear_2")
end),
reset= newButton(940,200,260,100,C.white,40,function()
sceneTemp.ct=sceneTemp.ct+1
if sceneTemp.ct==1 then
TEXT.show("RESET ALL DATA?",640,360,50,"appear",.5)
elseif sceneTemp.ct==5 then
TEXT.show("SURE?????",640,360,80,"beat",.5)
elseif sceneTemp.ct==10 then
local L=love.filesystem.getDirectoryItems("")
for i=1,#L do
local s=L[i]
if s:sub(-4)==".dat"then
love.filesystem.remove(s)
end
end
SFX.play("clear_4")SFX.play("finesseError_long")
TEXT.clear()
TEXT.show("ALL SAVING FILE DELETED",640,360,60,"stretch",.4)
SCN.back()
end
end),
back= newButton(640,620,200,80,C.white,40,BACK),
},
}
mobileHide,SETval,SETsto,SETrev=nil
pressKey,setPen,prevSkin,nextSkin=nil
nextDir,VKAdisp,VKAcode,setLang=nil
newButton,newSwitch,newSlider=nil
for _,L in next,Widgets do
for _,W in next,L do
if W.next then
W.next,L[W.next].prev=L[W.next],W
end
end
end
return Widgets