From 86ab84a1a0c3df5ad7e76e4336905a272e49c065 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Wed, 11 Sep 2024 10:12:27 +0900 Subject: [PATCH] Fix mobile gesture handling --- src/ts/hotkey.ts | 54 ++++++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 25 deletions(-) diff --git a/src/ts/hotkey.ts b/src/ts/hotkey.ts index 4f43260d..724855f8 100644 --- a/src/ts/hotkey.ts +++ b/src/ts/hotkey.ts @@ -147,38 +147,42 @@ export function initMobileGesture(){ let pressingPointers = new Map() - 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) + } } } }