#178 : switch tool mode with key shortcuts in zone editor

This commit is contained in:
Dennis Postma 2024-10-02 19:38:53 +02:00
parent 95d322a63c
commit 9b474909b3

View File

@ -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);
}
}
}