diff --git a/src/components/gameMaster/zoneEditor/partials/Toolbar.vue b/src/components/gameMaster/zoneEditor/partials/Toolbar.vue index 806abb1..e7cbc24 100644 --- a/src/components/gameMaster/zoneEditor/partials/Toolbar.vue +++ b/src/components/gameMaster/zoneEditor/partials/Toolbar.vue @@ -2,13 +2,13 @@
-
-
-
@@ -88,6 +88,7 @@ import { onBeforeUnmount, onMounted, ref } from 'vue' import { useScene } from 'phavuer' import { getTile } from '@/composables/zoneComposable' import { useZoneEditorStore } from '@/stores/zoneEditor' +import { onClickOutside } from '@vueuse/core' import TilemapLayer = Phaser.Tilemaps.TilemapLayer const zoneEditorStore = useZoneEditorStore() @@ -98,6 +99,8 @@ const props = defineProps({ const scene = useScene() const emit = defineEmits(['move', 'eraser', 'pencil', 'paint', 'save', 'clear']) +const clickOutsideElement = ref(null) + // track select state let selectPencilOpen = ref(false) let selectEraserOpen = ref(false) @@ -168,14 +171,34 @@ onBeforeUnmount(() => { removeEventListener('keydown', initKeyShortcuts) }) +function handleMoveClick() { + zoneEditorStore.setTool('move') + selectEraserOpen.value = false + selectPencilOpen.value = false +} + function handlePencilClick() { zoneEditorStore.setTool('pencil') selectPencilOpen.value = !selectPencilOpen.value + selectEraserOpen.value = false } function handleEraserClick() { zoneEditorStore.setTool('eraser') selectEraserOpen.value = !selectEraserOpen.value + selectPencilOpen.value = false +} + +function handlePaintClick() { + zoneEditorStore.setTool('paint') + selectEraserOpen.value = false + selectPencilOpen.value = false +} + +function handleSettingsClick() { + zoneEditorStore.toggleSettingsModal() + selectEraserOpen.value = false + selectPencilOpen.value = false } // Key bindings @@ -186,24 +209,36 @@ function initKeyShortcuts(event: KeyboardEvent) { if (document.activeElement?.tagName === 'INPUT') return if (event.key === 'm') { - zoneEditorStore.setTool('move') + handleMoveClick() } if (event.key === 'p') { - zoneEditorStore.setTool('pencil') + handlePencilClick() } if (event.key === 'e') { - zoneEditorStore.setTool('eraser') + handleEraserClick() } if (event.key === 'b') { - zoneEditorStore.setTool('paint') + handlePaintClick() } if (event.key === 'z') { - console.log('settings') - zoneEditorStore.toggleSettingsModal() + handleSettingsClick() + } +} + +onClickOutside(clickOutsideElement, event => handleClickOutside()) + + +function handleClickOutside() { + if (selectPencilOpen.value) { + selectPencilOpen.value = false + } + + if(selectEraserOpen.value) { + selectEraserOpen.value = false } }