新增虚拟按键样式设置

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)
end
end
LANG.set(SETTING.lang)
--Update data
do
@@ -268,6 +267,7 @@ do
needSave=true
autoRestart=true
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
SETTING.frameMul=100
end
@@ -320,4 +320,7 @@ do
if autoRestart then
love.event.quit('restart')
end
end
end
LANG.set(SETTING.lang)
VK.setShape(SETTING.VKSkin)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,34 @@
local gc=love.graphics
local gc_draw,gc_setColor,gc_setLineWidth=gc.draw,gc.setColor,gc.setLineWidth
local next=next
local SETTING,TIME=SETTING,TIME
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
local VKIcon={}
gc.setDefaultFilter('nearest','nearest')
@@ -69,6 +95,14 @@ function VK.release(id)
keys[id].isDown=false
end
function VK.setShape(s)
skin=s
end
function VK.nextShape()
skin=skin%#buttonImages+1
return skin
end
function VK.switchKey(id,on)
keys[id].ava=on
end
@@ -100,61 +134,53 @@ function VK.update()
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()
if not SETTING.VKSwitch then return end
local a=SETTING.VKAlpha
local buttonImage=buttonImages[skin]
local rippleImage=rippleImages[skin]
local holdImage=holdImages[skin]
if SETTING.VKIcon then
for i,B in next,keys do
if B.ava then
local r=B.r*.71
local r=B.r
--Button outline
gc_setColor(1,1,1,a)
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
local _=B.pressTime
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
if _>0 then
gc_setColor(1,1,1,a*_*.08)
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
--Glow when press
if B.isDown then
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
else
for _,B in next,keys do
if B.ava then
local r=B.r*.71
local r=B.r
gc_setColor(1,1,1,a)
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
if _>0 then
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)
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
@@ -162,19 +188,21 @@ function VK.draw()
end
function VK.preview(selected)
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
local r=B.r*.71
local r=B.r
gc_setColor(1,1,1,SETTING.VKAlpha)
gc_setLineWidth(r*.07)
gc_draw(buttonImage,B.x,B.y,nil,r/50,nil,50,50)
if selected==id and TIME()%.26<.13 then
gc_draw(buttonImage,B.x,B.y,nil,r*.01,nil,100,100)
if selected==i and TIME()%.26<.13 then
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
if SETTING.VKIcon then
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