From 4629dafecef10192d1c2754ae8789a91581ab61f Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Sat, 14 Sep 2024 17:29:41 +0200 Subject: [PATCH] #102 - Various zone editor UX improvements and bug fixes --- package-lock.json | 12 ++++++------ .../gameMaster/zoneEditor/ZoneEditor.vue | 17 ++++++++++++++++- .../zoneEditor/partials/SelectedZoneObject.vue | 4 ++-- src/config.ts | 2 +- src/screens/Characters.vue | 11 +---------- src/stores/zoneEditor.ts | 2 +- 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88eafa3..83f309b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3365,9 +3365,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.22", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.22.tgz", - "integrity": "sha512-tKYm5YHPU1djz0O+CGJ+oJIvimtsCcwR2Z9w7Skh08lUdyzXY5djods3q+z2JkWdb7tCcmM//eVavSRAiaPRNg==", + "version": "1.5.23", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.23.tgz", + "integrity": "sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==", "dev": true, "license": "ISC" }, @@ -5145,9 +5145,9 @@ } }, "node_modules/npm-run-all2": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.2.tgz", - "integrity": "sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.2.3.tgz", + "integrity": "sha512-5RsxC7jEc/RjxOYBVdEfrJf5FsJ0pHA7jr2/OxrThXknajETCTYjigOCG3iaGjdYIKEQlDuCG0ir0T1HTva8pg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/src/components/gameMaster/zoneEditor/ZoneEditor.vue b/src/components/gameMaster/zoneEditor/ZoneEditor.vue index c2196a2..b9e8a82 100644 --- a/src/components/gameMaster/zoneEditor/ZoneEditor.vue +++ b/src/components/gameMaster/zoneEditor/ZoneEditor.vue @@ -3,7 +3,7 @@ - + @@ -123,6 +123,10 @@ function pencil(tile: Phaser.Tilemaps.Tile) { } function addZoneObject(tile: Phaser.Tilemaps.Tile) { + // Check if object already exists on position + const existingObject = zoneObjects.value.find((object) => object.positionX === tile.x && object.positionY === tile.y) + if (existingObject) return + const newObject = { id: uuidv4(), zoneId: zone.value!.id, @@ -137,6 +141,10 @@ function addZoneObject(tile: Phaser.Tilemaps.Tile) { } function addZoneEventTile(tile: Phaser.Tilemaps.Tile) { + // Check if event tile already exists on position + const existingEventTile = zoneEventTiles.value.find((eventTile) => eventTile.positionX === tile.x && eventTile.positionY === tile.y) + if (existingEventTile) return + const newEventTile = { id: uuidv4(), zoneId: zone.value!.id, @@ -263,4 +271,11 @@ watch( }, { deep: true } ) + +const setSelectedZoneObject = (zoneObject: ZoneObject | null) => { + if (!zoneObject) return + // Check if tool is move or return + if (zoneEditorStore.tool !== 'move') return + zoneEditorStore.setSelectedZoneObject(zoneObject) +} diff --git a/src/components/gameMaster/zoneEditor/partials/SelectedZoneObject.vue b/src/components/gameMaster/zoneEditor/partials/SelectedZoneObject.vue index 4aa1ffb..3c83382 100644 --- a/src/components/gameMaster/zoneEditor/partials/SelectedZoneObject.vue +++ b/src/components/gameMaster/zoneEditor/partials/SelectedZoneObject.vue @@ -1,5 +1,5 @@ diff --git a/src/stores/zoneEditor.ts b/src/stores/zoneEditor.ts index 3a7378a..14a5776 100644 --- a/src/stores/zoneEditor.ts +++ b/src/stores/zoneEditor.ts @@ -85,7 +85,7 @@ export const useZoneEditorStore = defineStore('zoneEditor', { setSelectedObject(object: any) { this.selectedObject = object }, - setSelectedZoneObject(zoneObject: ZoneObject) { + setSelectedZoneObject(zoneObject: ZoneObject | null) { const gameStore = useGameStore() // Access the gameStore if (gameStore.isMovingCamera) return // Step 2: Check isMovingCamera before proceeding