From 9b474909b3a47c467acf23239ebc7c5c1b690ef1 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Wed, 2 Oct 2024 19:38:53 +0200 Subject: [PATCH] #178 : switch tool mode with key shortcuts in zone editor --- .../zoneEditor/partials/Toolbar.vue | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/components/gameMaster/zoneEditor/partials/Toolbar.vue b/src/components/gameMaster/zoneEditor/partials/Toolbar.vue index fd03439..f14bbcc 100644 --- a/src/components/gameMaster/zoneEditor/partials/Toolbar.vue +++ b/src/components/gameMaster/zoneEditor/partials/Toolbar.vue @@ -171,13 +171,26 @@ function handleClick(tool: string) { selectEraserOpen.value = tool === 'eraser' ? !selectEraserOpen.value : false } -// Key bindings +function cycleToolMode(tool: 'pencil' | 'eraser') { + const modes = ['tile', 'object', 'teleport', 'blocking tile']; + const currentMode = tool === 'pencil' ? zoneEditorStore.drawMode : zoneEditorStore.eraserMode; + const currentIndex = modes.indexOf(currentMode); + const nextIndex = (currentIndex + 1) % modes.length; + const nextMode = modes[nextIndex]; + + if (tool === 'pencil') { + setDrawMode(nextMode); + } else { + setEraserMode(nextMode); + } +} + function initKeyShortcuts(event: KeyboardEvent) { if (!zoneEditorStore.zone) return // prevent if focused on composables if (document.activeElement?.tagName === 'INPUT') return - const keyActions: any = { + const keyActions: { [key: string]: string } = { m: 'move', p: 'pencil', e: 'eraser', @@ -186,7 +199,12 @@ function initKeyShortcuts(event: KeyboardEvent) { } if (keyActions.hasOwnProperty(event.key)) { - handleClick(keyActions[event.key]) + const tool = keyActions[event.key]; + if ((tool === 'pencil' || tool === 'eraser') && zoneEditorStore.tool === tool) { + cycleToolMode(tool); + } else { + handleClick(tool); + } } }