@@ -62,14 +62,14 @@
-
@@ -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
}
}