新增虚拟按键样式设置

This commit is contained in:
MrZ626
2021-05-20 00:02:37 +08:00
parent 41ce44fc0e
commit 6fa9aa30fa
10 changed files with 71 additions and 35 deletions

View File

@@ -236,7 +236,6 @@ for _,v in next,fs.getDirectoryItems("parts/scenes")do
LANG.addScene(sceneName) LANG.addScene(sceneName)
end end
end end
LANG.set(SETTING.lang)
--Update data --Update data
do do
@@ -268,6 +267,7 @@ do
needSave=true needSave=true
autoRestart=true autoRestart=true
end end
if not SETTING.VKSkin then SETTING.VKSkin=1 end
if not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul)then if not TABLE.find({8,10,13,17,22,29,37,47,62,80,100},SETTING.frameMul)then
SETTING.frameMul=100 SETTING.frameMul=100
end end
@@ -320,4 +320,7 @@ do
if autoRestart then if autoRestart then
love.event.quit('restart') love.event.quit('restart')
end end
end end
LANG.set(SETTING.lang)
VK.setShape(SETTING.VKSkin)

View File

@@ -305,6 +305,7 @@ SETTING={--Settings
VKSFX=.2,--SFX volume VKSFX=.2,--SFX volume
VKVIB=0,--VIB VKVIB=0,--VIB
VKSwitch=false,--If disp VKSwitch=false,--If disp
VKSkin=1,--If disp
VKTrack=false,--If tracked VKTrack=false,--If tracked
VKDodge=false,--If dodge VKDodge=false,--If dodge
VKTchW=.3,--Touch-Pos Weight VKTchW=.3,--Touch-Pos Weight

View File

@@ -389,6 +389,7 @@ return{
save2="Save2", save2="Save2",
load2="Load2", load2="Load2",
size="Size", size="Size",
shape="Shape",
}, },
setting_touchSwitch={ setting_touchSwitch={
b1= "Move Left:", b2="Move Right:", b3="Rotate Right:", b4="Rotate Left:", b1= "Move Left:", b2="Move Right:", b3="Rotate Right:", b4="Rotate Left:",

View File

@@ -358,6 +358,7 @@ return{
-- save2="Save2", -- save2="Save2",
-- load2="Load2", -- load2="Load2",
size="Taille", size="Taille",
-- shape="Shape",
}, },
setting_touchSwitch={ setting_touchSwitch={
b1= "Déplacement vers la gauche :",b2="Déplacement vers la droite:", b1= "Déplacement vers la gauche :",b2="Déplacement vers la droite:",

View File

@@ -388,6 +388,7 @@ return{
-- save2="Save2", -- save2="Save2",
-- load2="Load2", -- load2="Load2",
size="Tamanho", size="Tamanho",
-- shape="Shape",
}, },
setting_touchSwitch={ setting_touchSwitch={
b1= "Esquerda:", b2="Direita:", b3="Giro Dir.:", b4="Giro Esq.:", b1= "Esquerda:", b2="Direita:", b3="Giro Dir.:", b4="Giro Esq.:",

View File

@@ -362,6 +362,7 @@ return{
-- save2="Save2", -- save2="Save2",
-- load2="Load2", -- load2="Load2",
size="Tamaño", size="Tamaño",
-- shape="Shape",
}, },
setting_touchSwitch={ setting_touchSwitch={
b1= "Mover Izq.:",b2="Mover Der.:",b3="Rotar Der.:",b4="Rotar Izq.:", b1= "Mover Izq.:",b2="Mover Der.:",b3="Rotar Der.:",b4="Rotar Izq.:",

View File

@@ -241,6 +241,7 @@ return{
save2=">2", save2=">2",
load2="2>", load2="2>",
size="←→", size="←→",
shape="@?",
}, },
setting_touchSwitch={ setting_touchSwitch={
b1="←:", b2="→:", b3="R→:", b4="←R:", b1="←:", b2="→:", b3="R→:", b4="←R:",

View File

@@ -388,6 +388,7 @@ return{
save2="保存2", save2="保存2",
load2="读取2", load2="读取2",
size="大小", size="大小",
shape="形状",
}, },
setting_touchSwitch={ setting_touchSwitch={
b1= "左移:", b2="右移:", b3="顺时针旋转:", b4="逆时针旋转:", b1= "左移:", b2="右移:", b3="顺时针旋转:", b4="逆时针旋转:",

View File

@@ -84,8 +84,8 @@ end
function scene.draw() function scene.draw()
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.setLineWidth(7)gc.rectangle('line',340,15,600,690) gc.setLineWidth(3)
gc.setLineWidth(3)gc.rectangle('line',490,85,300,600) gc.rectangle('line',490,85,300,600)
VK.preview(selected) VK.preview(selected)
if snapUnit>=10 then if snapUnit>=10 then
gc.setLineWidth(3) gc.setLineWidth(3)
@@ -193,11 +193,8 @@ scene.widgetList={
selected=false selected=false
end}, 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.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,font=40, WIDGET.newButton{name="option", x=530,y=190,w=200,h=80,font=40,code=function()SCN.go('setting_touchSwitch')end},
code=function() WIDGET.newButton{name="back", x=750,y=190,w=200,h=80,font=35,code=backScene},
SCN.go('setting_touchSwitch')
end},
WIDGET.newButton{name="back", x=750,y=190,w=200,h=70,font=35,code=backScene},
WIDGET.newKey{name="save1", x=475,y=290,w=90,h=70,code=save1}, 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="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="save2", x=695,y=290,w=90,h=70,code=save2},
@@ -214,6 +211,7 @@ scene.widgetList={
hideF=function() hideF=function()
return not selected return not selected
end}, end},
WIDGET.newKey{name="shape",x=640,y=600,w=200,h=80,code=function()SETTING.VKSkin=VK.nextShape()end},
} }
return scene return scene

View File

@@ -1,8 +1,34 @@
local gc=love.graphics local gc=love.graphics
local gc_draw,gc_setColor,gc_setLineWidth=gc.draw,gc.setColor,gc.setLineWidth
local next=next local next=next
local SETTING,TIME=SETTING,TIME local SETTING,TIME=SETTING,TIME
local VK_org=VK_org local VK_org=VK_org
local skin=1
local r=10
local buttonImages={
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98},{'dCirc',100,100,90}},
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98,8},{'dCirc',100,100,90,8}},
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98,6},{'dCirc',100,100,90,6}},
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98,4},{'dCirc',100,100,89,4}},
DOGC{200,200,{'setLW',4},{'dRect',31,31,138,138},{'dRect',39,39,122,122}},
}
local rippleImages={
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98}},
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98,8}},
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98,6}},
DOGC{200,200,{'setLW',4},{'dCirc',100,100,98,4}},
DOGC{200,200,{'setLW',4},{'dRect',31,31,138,138}},
}
local holdImages={
DOGC{200,200,{'fCirc',100,100,86}},
DOGC{200,200,{'fCirc',100,100,86,8}},
DOGC{200,200,{'fCirc',100,100,85,6}},
DOGC{200,200,{'fCirc',100,100,83,4}},
DOGC{200,200,{'fRect',43,43,114,114}},
}
--Virtualkey icons --Virtualkey icons
local VKIcon={} local VKIcon={}
gc.setDefaultFilter('nearest','nearest') gc.setDefaultFilter('nearest','nearest')
@@ -69,6 +95,14 @@ function VK.release(id)
keys[id].isDown=false keys[id].isDown=false
end end
function VK.setShape(s)
skin=s
end
function VK.nextShape()
skin=skin%#buttonImages+1
return skin
end
function VK.switchKey(id,on) function VK.switchKey(id,on)
keys[id].ava=on keys[id].ava=on
end end
@@ -100,61 +134,53 @@ function VK.update()
end end
end end
local gc_draw,gc_setColor,gc_setLineWidth=gc.draw,gc.setColor,gc.setLineWidth
local buttonImage=DOGC{100,100,
{'setLW',4},{'dRect',2,2,96,96},
{'setLW',4},{'dRect',10,10,80,80},
}
local rippleImage=DOGC{100,100,
{'setLW',4},{'dRect',2,2,96,96},
}
local holdImage=DOGC{100,100,
{'fRect',14,14,72,72},
}
function VK.draw() function VK.draw()
if not SETTING.VKSwitch then return end if not SETTING.VKSwitch then return end
local a=SETTING.VKAlpha local a=SETTING.VKAlpha
local buttonImage=buttonImages[skin]
local rippleImage=rippleImages[skin]
local holdImage=holdImages[skin]
if SETTING.VKIcon then if SETTING.VKIcon then
for i,B in next,keys do for i,B in next,keys do
if B.ava then if B.ava then
local r=B.r*.71 local r=B.r
--Button outline --Button outline
gc_setColor(1,1,1,a) gc_setColor(1,1,1,a)
gc_setLineWidth(r*.07) gc_setLineWidth(r*.07)
gc_draw(buttonImage,B.x,B.y,nil,r/50,nil,50,50) gc_draw(buttonImage,B.x,B.y,nil,r*.01,nil,100,100)
--Icon --Icon
local _=B.pressTime local _=B.pressTime
gc_setColor(1,1,1,a) gc_setColor(1,1,1,a)
gc_draw(VKIcon[i],B.x,B.y,nil,r*.026+_*.06,nil,18,18) gc_draw(VKIcon[i],B.x,B.y,nil,r*.024+_*.06,nil,18,18)
--Ripple --Ripple
if _>0 then if _>0 then
gc_setColor(1,1,1,a*_*.08) gc_setColor(1,1,1,a*_*.08)
local d=r*(1.4-_*.04) local d=r*(1.4-_*.04)
gc_draw(rippleImage,B.x,B.y,nil,d/50,nil,50,50) gc_draw(rippleImage,B.x,B.y,nil,d*.01,nil,100,100)
end end
--Glow when press --Glow when press
if B.isDown then if B.isDown then
gc_setColor(1,1,1,a*.4) gc_setColor(1,1,1,a*.4)
gc_draw(holdImage,B.x,B.y,nil,r/50,nil,50,50) gc_draw(holdImage,B.x,B.y,nil,r*.01,nil,100,100)
end end
end end
end end
else else
for _,B in next,keys do for _,B in next,keys do
if B.ava then if B.ava then
local r=B.r*.71 local r=B.r
gc_setColor(1,1,1,a) gc_setColor(1,1,1,a)
gc_setLineWidth(r*.07) gc_setLineWidth(r*.07)
gc_draw(buttonImage,B.x,B.y,nil,r/50,nil,50,50) gc_draw(buttonImage,B.x,B.y,nil,r*.01,nil,100,100)
local _=B.pressTime local _=B.pressTime
if _>0 then if _>0 then
gc_setColor(1,1,1,a*_*.08) gc_setColor(1,1,1,a*_*.08)
gc_draw(holdImage,B.x,B.y,nil,r/50,nil,50,50) gc_draw(holdImage,B.x,B.y,nil,r*.01,nil,100,100)
local d=r*(1.4-_*.04) local d=r*(1.4-_*.04)
gc_draw(rippleImage,B.x,B.y,nil,d/50,nil,50,50) gc_draw(rippleImage,B.x,B.y,nil,d*.01,nil,100,100)
end end
end end
end end
@@ -162,19 +188,21 @@ function VK.draw()
end end
function VK.preview(selected) function VK.preview(selected)
if not SETTING.VKSwitch then return end if not SETTING.VKSwitch then return end
for id,B in next,VK_org do local buttonImage=buttonImages[skin]
local holdImage=holdImages[skin]
for i,B in next,VK_org do
if B.ava then if B.ava then
local r=B.r*.71 local r=B.r
gc_setColor(1,1,1,SETTING.VKAlpha) gc_setColor(1,1,1,SETTING.VKAlpha)
gc_setLineWidth(r*.07) gc_setLineWidth(r*.07)
gc_draw(buttonImage,B.x,B.y,nil,r/50,nil,50,50) gc_draw(buttonImage,B.x,B.y,nil,r*.01,nil,100,100)
if selected==id and TIME()%.26<.13 then if selected==i and TIME()%.26<.13 then
gc_setColor(1,1,1,SETTING.VKAlpha*.62) gc_setColor(1,1,1,SETTING.VKAlpha*.62)
gc_draw(holdImage,B.x,B.y,nil,r/50,nil,50,50) gc_draw(holdImage,B.x,B.y,nil,r*.01,nil,100,100)
end end
if SETTING.VKIcon then if SETTING.VKIcon then
gc_setColor(1,1,1,SETTING.VKAlpha) gc_setColor(1,1,1,SETTING.VKAlpha)
gc_draw(VKIcon[id],B.x,B.y,nil,r*.026,nil,18,18) gc_draw(VKIcon[i],B.x,B.y,nil,r*.024,nil,18,18)
end end
end end
end end