Fix mobile gesture handling
This commit is contained in:
@@ -147,38 +147,42 @@ export function initMobileGesture(){
|
|||||||
|
|
||||||
let pressingPointers = new Map<number, {x:number, y:number}>()
|
let pressingPointers = new Map<number, {x:number, y:number}>()
|
||||||
|
|
||||||
document.addEventListener('pointerdown', (ev) => {
|
document.addEventListener('touchstart', (ev) => {
|
||||||
pressingPointers.set(ev.pointerId, {x: ev.clientX, y: ev.clientY})
|
for(const touch of ev.changedTouches){
|
||||||
|
pressingPointers.set(touch.identifier, {x: touch.clientX, y: touch.clientY})
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
passive: true
|
passive: true
|
||||||
})
|
})
|
||||||
document.addEventListener('pointerup', (ev) => {
|
document.addEventListener('touchend', (ev) => {
|
||||||
const d = pressingPointers.get(ev.pointerId)
|
for(const touch of ev.changedTouches){
|
||||||
const moveX = ev.clientX - d.x
|
const d = pressingPointers.get(touch.identifier)
|
||||||
const moveY = ev.clientY - d.y
|
const moveX = touch.clientX - d.x
|
||||||
pressingPointers.delete(ev.pointerId)
|
const moveY = touch.clientY - d.y
|
||||||
|
pressingPointers.delete(touch.identifier)
|
||||||
|
|
||||||
if(moveX > 50 && Math.abs(moveY) < Math.abs(moveX)){
|
if(moveX > 50 && Math.abs(moveY) < Math.abs(moveX)){
|
||||||
if(get(selectedCharID) === -1){
|
if(get(selectedCharID) === -1){
|
||||||
if(get(MobileGUIStack) > 0){
|
if(get(MobileGUIStack) > 0){
|
||||||
MobileGUIStack.update(v => v - 1)
|
MobileGUIStack.update(v => v - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(get(MobileSideBar) > 0){
|
||||||
|
MobileSideBar.update(v => v - 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else if(moveX < -50 && Math.abs(moveY) < Math.abs(moveX)){
|
||||||
if(get(MobileSideBar) > 0){
|
if(get(selectedCharID) === -1){
|
||||||
MobileSideBar.update(v => v - 1)
|
if(get(MobileGUIStack) < 2){
|
||||||
|
MobileGUIStack.update(v => v + 1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
else{
|
||||||
}
|
if(get(MobileSideBar) < 3){
|
||||||
else if(moveX < -50 && Math.abs(moveY) < Math.abs(moveX)){
|
MobileSideBar.update(v => v + 1)
|
||||||
if(get(selectedCharID) === -1){
|
}
|
||||||
if(get(MobileGUIStack) < 2){
|
|
||||||
MobileGUIStack.update(v => v + 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if(get(MobileSideBar) < 3){
|
|
||||||
MobileSideBar.update(v => v + 1)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user