Fix mobile gesture handling

This commit is contained in:
kwaroran
2024-09-11 10:12:27 +09:00
parent 342408081a
commit 86ab84a1a0

View File

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