新增虚拟按键样式设置
This commit is contained in:
7
main.lua
7
main.lua
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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:",
|
||||
|
||||
@@ -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:",
|
||||
|
||||
@@ -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.:",
|
||||
|
||||
@@ -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.:",
|
||||
|
||||
@@ -241,6 +241,7 @@ return{
|
||||
save2=">2",
|
||||
load2="2>",
|
||||
size="←→",
|
||||
shape="@?",
|
||||
},
|
||||
setting_touchSwitch={
|
||||
b1="←:", b2="→:", b3="R→:", b4="←R:",
|
||||
|
||||
@@ -388,6 +388,7 @@ return{
|
||||
save2="保存2",
|
||||
load2="读取2",
|
||||
size="大小",
|
||||
shape="形状",
|
||||
},
|
||||
setting_touchSwitch={
|
||||
b1= "左移:", b2="右移:", b3="顺时针旋转:", b4="逆时针旋转:",
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user