整理虚拟按键相关函数

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

@@ -6,21 +6,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 noTouch,noKey=false,false
local touchMoveLastFrame=false
@@ -48,31 +36,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)
@@ -168,14 +132,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()
--Replay
if GAME.replaying then
@@ -186,11 +143,10 @@ function scene.update(dt)
if key==0 then--Just wait
elseif key<=32 then--Press key
P1:pressKey(key)
VK[key].isDown=true
VK[key].pressTime=10
pressVirtualkey(key)
elseif key<=64 then--Release key
VK[key-32].isDown=false
P1:releaseKey(key-32)
VK[key-32].isDown=false
end
_=_+2
end
@@ -284,7 +240,7 @@ function scene.draw()
end
--Virtual keys
drawVirtualKeys()
drawVirtualkeys()
--Attacking & Being attacked
if GAME.modeEnv.royaleMode then