整理虚拟按键相关函数

This commit is contained in:
MrZ626
2021-02-09 18:31:54 +08:00
parent 58db840200
commit d301a1c12b
3 changed files with 68 additions and 104 deletions

View File

@@ -8,21 +8,9 @@ local max,sin=math.max,math.sin
local SCR=SCR
local VK=virtualkey
local function onVirtualkey(x,y)
local dist,nearest=1e10
for K=1,#VK do
local B=VK[K]
if B.ava then
local d1=(x-B.x)^2+(y-B.y)^2
if d1<B.r^2 then
if d1<dist then
nearest,dist=K,d1
end
end
end
end
return nearest
end
local onVirtualkey=onVirtualkey
local pressVirtualkey=pressVirtualkey
local updateVirtualkey=updateVirtualkey
local hideChatBox
local textBox=WIDGET.newTextBox{name="texts",x=340,y=80,w=600,h=550,hide=function()return hideChatBox end}
@@ -70,31 +58,7 @@ function scene.touchDown(_,x,y)
local t=onVirtualkey(x,y)
if t then
PLAYERS[1]:pressKey(t)
if SETTING.VKSFX>0 then
SFX.play("virtualKey",SETTING.VKSFX)
end
local B=VK[t]
B.isDown=true
B.pressTime=10
if SETTING.VKTrack then
if SETTING.VKDodge then--Button collision (not accurate)
for i=1,#VK do
local b=VK[i]
local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5--Hit depth(Neg means distance)
if d>0 then
b.x=b.x+(b.x-B.x)*d*b.r*5e-4
b.y=b.y+(b.y-B.y)*d*b.r*5e-4
end
end
end
local O=VK_org[t]
local _FW,_CW=SETTING.VKTchW,1-SETTING.VKCurW
local _OW=1-_FW-_CW
--Auto follow: finger, current, origin (weight from setting)
B.x,B.y=x*_FW+B.x*_CW+O.x*_OW,y*_FW+B.y*_CW+O.y*_OW
end
VIB(SETTING.VKVIB)
pressVirtualkey(t,x,y)
end
end
function scene.touchUp(_,x,y)
@@ -293,14 +257,7 @@ function scene.update(dt)
touchMoveLastFrame=false
--Update virtualkey animation
if SETTING.VKSwitch then
for i=1,#VK do
_=VK[i]
if _.pressTime>0 then
_.pressTime=_.pressTime-1
end
end
end
updateVirtualkey()
if not playing then
heartBeatTimer=heartBeatTimer+dt
@@ -393,7 +350,7 @@ function scene.draw()
end
--Virtual keys
drawVirtualKeys()
drawVirtualkeys()
--Warning
gc.push("transform")