local gc,ms=love.graphics,love.mouse local int,sin=math.floor,math.sin local VK_org=VK_org local scene={} local defaultSetSelect local snapUnit=1 local selected--Button selected local function save1() FILE.save(VK_org,'conf/vkSave1') end local function load1() local D=FILE.load('conf/vkSave1') if D then TABLE.update(D,VK_org) else MES.new('error',text.noFile) end end local function save2() FILE.save(VK_org,'conf/vkSave2') end local function load2() local D=FILE.load('conf/vkSave2') if D then TABLE.update(D,VK_org) else MES.new('error',text.noFile) end end function scene.sceneInit() BG.set('rainbow') defaultSetSelect=1 selected=false end function scene.sceneBack() FILE.save(VK_org,'conf/virtualkey') end local function onVK_org(x,y) local dist,nearest=1e10 for K=1,#VK_org do local B=VK_org[K] if B.ava then local d1=(x-B.x)^2+(y-B.y)^2 if d1=10 then gc.setLineWidth(3) gc.setColor(1,1,1,sin(TIME()*4)*.1+.1) for i=x1,x2+snapUnit,snapUnit do local x=i-i%snapUnit gc.line(x,y1,x,y2) end for i=y1,y2+snapUnit,snapUnit do local y=i-i%snapUnit gc.line(x1,y,x2,y) end end 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, 80, 280, 80},--func1 {10,1280-80, 280, 80},--func2 },--Farter's tetr.js set { {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, 1280-80, 280, 80},--func1 {10,80, 280, 80},--func2 },--Mirrored tetr.js set { {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, 720-240, 80},--func1 {10,240, 720-240, 80},--func2 },--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, 400, 720-80, 80},--hold {9, 80, 720-240, 80},--func1 {10,80, 720-400, 80},--func2 },--Keyboard set { {9, 70, 50,30},--func1 {10,130, 50,30},--func2 {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},--zangiLeft {20,1210, 50,30},--zangiRight },--PC key feedback(top&in a row) } scene.widgetList={ WIDGET.newButton{name="default",x=530,y=90,w=200,h=80,font=35, code=function() local D=virtualkeySet[defaultSetSelect] for i=1,#VK_org do VK_org[i].ava=false end --Replace keys 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 MES.new('check',("==[ %d ]=="):format(defaultSetSelect)) defaultSetSelect=defaultSetSelect%5+1 selected=false end}, WIDGET.newSelector{name="snap", x=750,y=90,w=200,h=80,color='Y',list={1,10,20,40,60,80},disp=function()return snapUnit end,code=function(i)snapUnit=i end}, WIDGET.newButton{name="option", x=530,y=190,w=200,h=80,fText=TEXTURE.more,code=function()SCN.go('setting_touchSwitch')end}, WIDGET.newButton{name="back", x=750,y=190,w=200,h=80,fText=TEXTURE.back,code=backScene}, WIDGET.newKey{name="save1", x=475,y=290,w=90,h=70,code=save1}, WIDGET.newKey{name="load1", x=585,y=290,w=90,h=70,code=load1}, WIDGET.newKey{name="save2", x=695,y=290,w=90,h=70,code=save2}, WIDGET.newKey{name="load2", x=805,y=290,w=90,h=70,code=load2}, WIDGET.newSlider{name="size", x=440,y=370,w=460,unit=19,font=40,show="vkSize", disp=function() return VK_org[selected].r/10-1 end, code=function(v) if selected then VK_org[selected].r=(v+1)*10 end end, hideF=function() return not selected end}, WIDGET.newKey{name="shape",x=640,y=600,w=200,h=80,code=function()SETTING.VKSkin=VK.nextShape()end}, } return scene