diff --git a/src/components/gameMaster/mapEditor/Map.vue b/src/components/gameMaster/mapEditor/Map.vue index ff0eadb..505a2d9 100644 --- a/src/components/gameMaster/mapEditor/Map.vue +++ b/src/components/gameMaster/mapEditor/Map.vue @@ -21,7 +21,7 @@ const mapTiles = useTemplateRef('mapTiles') const mapObjects = useTemplateRef('mapObjects') const eventTiles = useTemplateRef('eventTiles') -function handlePointer(pointer: Phaser.Input.Pointer) { +function handlePointerDown(pointer: Phaser.Input.Pointer) { if (!mapTiles.value || !mapObjects.value || !eventTiles.value) return // Check if left mouse button is pressed @@ -41,14 +41,26 @@ function handlePointer(pointer: Phaser.Input.Pointer) { } } +function handlePointerMove(pointer: Phaser.Input.Pointer) { + if (mapEditor.inputMode.value === 'hold') { + handlePointerDown(pointer) + } +} + +function handlePointerUp(pointer: Phaser.Input.Pointer) { + +} + onMounted(() => { - scene.input.on(Phaser.Input.Events.POINTER_MOVE, handlePointer) - scene.input.on(Phaser.Input.Events.POINTER_DOWN, handlePointer) + scene.input.on(Phaser.Input.Events.POINTER_DOWN, handlePointerDown) + scene.input.on(Phaser.Input.Events.POINTER_MOVE, handlePointerMove) + scene.input.on(Phaser.Input.Events.POINTER_UP, handlePointerUp) }) onUnmounted(() => { - scene.input.off(Phaser.Input.Events.POINTER_MOVE, handlePointer) - scene.input.off(Phaser.Input.Events.POINTER_DOWN, handlePointer) + scene.input.off(Phaser.Input.Events.POINTER_DOWN, handlePointerDown) + scene.input.off(Phaser.Input.Events.POINTER_MOVE, handlePointerMove) + scene.input.off(Phaser.Input.Events.POINTER_UP, handlePointerUp) mapEditor.reset() }) diff --git a/src/components/gameMaster/mapEditor/partials/Toolbar.vue b/src/components/gameMaster/mapEditor/partials/Toolbar.vue index 09e466e..5993a75 100644 --- a/src/components/gameMaster/mapEditor/partials/Toolbar.vue +++ b/src/components/gameMaster/mapEditor/partials/Toolbar.vue @@ -73,7 +73,7 @@
- +
@@ -105,6 +105,8 @@ let selectEraserOpen = ref(false) let tileListShown = ref(false) let mapObjectListShown = ref(false) +let checkboxValue = ref(false) + defineExpose({ tileListShown, mapObjectListShown }) // drawMode @@ -131,6 +133,10 @@ function setEraserMode() { selectEraserOpen.value = false } +function handleCheck() { + mapEditor.setInputMode(checkboxValue.value ? 'hold' : 'tap') +} + function handleModeClick(mode: string, type: 'pencil' | 'eraser') { setDrawMode(mode) type === 'pencil' ? setPencilMode() : setEraserMode() diff --git a/src/components/screens/MapEditor.vue b/src/components/screens/MapEditor.vue index d967abe..40da3ff 100644 --- a/src/components/screens/MapEditor.vue +++ b/src/components/screens/MapEditor.vue @@ -12,8 +12,7 @@ @open-maps="mapModal?.open" @open-settings="mapSettingsModal?.open" @close-editor="mapEditor.toggleActive" - @close-lists="tileModal?.close" - @closeLists="objectModal?.close" + @close-lists="closeLists" @open-tile-list="tileModal?.open" @open-map-object-list="objectModal?.open" /> @@ -114,6 +113,11 @@ function save() { }) } +function closeLists() { + tileModal.value?.close() + objectModal.value?.close() +} + function clear() { if (!mapEditor.currentMap.value) return diff --git a/src/composables/useMapEditorComposable.ts b/src/composables/useMapEditorComposable.ts index ea2bd65..22c8db5 100644 --- a/src/composables/useMapEditorComposable.ts +++ b/src/composables/useMapEditorComposable.ts @@ -12,6 +12,7 @@ const currentMap = ref(null) const active = ref(false) const tool = ref('move') const drawMode = ref('tile') +const inputMode = ref('tap') const selectedTile = ref('') const selectedMapObject = ref(null) const shouldClearTiles = ref(false) @@ -53,6 +54,10 @@ export function useMapEditorComposable() { drawMode.value = mode } + const setInputMode = (mode: string) => { + inputMode.value = mode + } + const setSelectedTile = (tile: string) => { selectedTile.value = tile } @@ -76,6 +81,7 @@ export function useMapEditorComposable() { const reset = () => { tool.value = 'move' drawMode.value = 'tile' + inputMode.value = 'tap' selectedTile.value = '' selectedMapObject.value = null shouldClearTiles.value = false @@ -87,6 +93,7 @@ export function useMapEditorComposable() { active, tool, drawMode, + inputMode, selectedTile, selectedMapObject, shouldClearTiles, @@ -99,6 +106,7 @@ export function useMapEditorComposable() { toggleActive, setTool, setDrawMode, + setInputMode, setSelectedTile, setSelectedMapObject, setTeleportSettings,