From cd9316a38431e22327fc8a42c4657a9061c32764 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Sun, 29 Sep 2024 20:13:54 +0200 Subject: [PATCH] Minor camera improvements --- src/composables/pointerHandlers/useGamePointerHandlers.ts | 8 +++++++- src/composables/useCameraControls.ts | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/composables/pointerHandlers/useGamePointerHandlers.ts b/src/composables/pointerHandlers/useGamePointerHandlers.ts index 8caa1a4..e906011 100644 --- a/src/composables/pointerHandlers/useGamePointerHandlers.ts +++ b/src/composables/pointerHandlers/useGamePointerHandlers.ts @@ -23,10 +23,16 @@ export function useGamePointerHandlers(scene: Phaser.Scene, layer: Phaser.Tilema function dragZone(pointer: Phaser.Input.Pointer) { if (!gameStore.isPlayerDraggingCamera) return + // Check if action is actually a drag by checking if the pointer has moved + if (pointer.prevPosition.x === pointer.x && pointer.prevPosition.y === pointer.y) return + const { x, y, prevPosition } = pointer const { scrollX, scrollY, zoom } = camera camera.setScroll(scrollX - (x - prevPosition.x) / zoom, scrollY - (y - prevPosition.y) / zoom) + // Check if camera has moved if not return + if (camera.scrollX === scrollX && camera.scrollY === scrollY) return + lastDragTime.value = Date.now() } @@ -57,7 +63,7 @@ export function useGamePointerHandlers(scene: Phaser.Scene, layer: Phaser.Tilema const deltaY = pointer.event.deltaY let zoomLevel = camera.zoom - deltaY * 0.005 - if(zoomLevel <= 0 || zoomLevel >= 3) return + if(zoomLevel <= 1 || zoomLevel >= 3) return camera.setZoom(zoomLevel) } diff --git a/src/composables/useCameraControls.ts b/src/composables/useCameraControls.ts index fc4a837..34fc333 100644 --- a/src/composables/useCameraControls.ts +++ b/src/composables/useCameraControls.ts @@ -8,10 +8,12 @@ export function useCameraControls(scene: Phaser.Scene): any { const camera = scene.cameras.main function onPointerDown(pointer: Phaser.Input.Pointer) { + if (gameStore.isPlayerDraggingCamera) return gameStore.setPlayerDraggingCamera(true) } function onPointerUp() { + if (!gameStore.isPlayerDraggingCamera) return gameStore.setPlayerDraggingCamera(false) }