From 7071d934b40d6b51865a7d25a68cafad3a279e19 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Thu, 6 Feb 2025 14:02:50 +0100 Subject: [PATCH] Update origin X and Y values in real-time --- .../game/map/partials/PlacedMapObject.vue | 9 ++++++++- .../mapEditor/partials/SelectedPlacedMapObject.vue | 6 +++--- src/composables/useMapEditorComposable.ts | 13 +++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/components/game/map/partials/PlacedMapObject.vue b/src/components/game/map/partials/PlacedMapObject.vue index 7f6ba6d..8e435c3 100644 --- a/src/components/game/map/partials/PlacedMapObject.vue +++ b/src/components/game/map/partials/PlacedMapObject.vue @@ -10,7 +10,7 @@ import { calculateIsometricDepth, loadMapObjectTextures, tileToWorldXY } from '@ import { MapObjectStorage } from '@/storage/storages' import { useGameStore } from '@/stores/gameStore' import { Image, useScene } from 'phavuer' -import { computed, onMounted, ref } from 'vue' +import { computed, onMounted, ref, watch } from 'vue' import Tilemap = Phaser.Tilemaps.Tilemap import TilemapLayer = Phaser.Tilemaps.TilemapLayer @@ -69,6 +69,13 @@ const imageProps = computed(() => ({ originY: mapObject.value!.originY })) +watch( + () => mapEditor.refreshMapObject.value, + async () => { + await initialize() + } +) + onMounted(async () => { await initialize() }) diff --git a/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue b/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue index 40add9d..21f7bdf 100644 --- a/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue +++ b/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue @@ -4,7 +4,7 @@ - @@ -12,7 +12,7 @@ - + @@ -90,12 +90,12 @@ async function handleUpdate() { }, async (response: boolean) => { if (!response) return - // Update mapObject in storage await mapObjectStorage.update(mapObject.value!.id, { name: mapObjectName.value, originX: mapObjectOriginX.value, originY: mapObjectOriginY.value }) + mapEditor.triggerMapObjectRefresh() // Add this line } ) } diff --git a/src/composables/useMapEditorComposable.ts b/src/composables/useMapEditorComposable.ts index 4b095ae..9ff67bf 100644 --- a/src/composables/useMapEditorComposable.ts +++ b/src/composables/useMapEditorComposable.ts @@ -25,6 +25,12 @@ const teleportSettings = ref({ toRotation: 0 }) +/** + * We can update origin X and Y in src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue + * and this will trigger a refresh for spawned mao objects + */ +const refreshMapObject = ref(0) + export function useMapEditorComposable() { const loadMap = (map: Map) => { currentMap.value = map @@ -79,6 +85,10 @@ export function useMapEditorComposable() { shouldClearTiles.value = false } + function triggerMapObjectRefresh() { + refreshMapObject.value++ // Increment to trigger watchers + } + const reset = () => { tool.value = 'move' drawMode.value = 'tile' @@ -86,6 +96,7 @@ export function useMapEditorComposable() { selectedTile.value = '' selectedMapObject.value = null shouldClearTiles.value = false + refreshMapObject.value = 0 } return { @@ -101,6 +112,7 @@ export function useMapEditorComposable() { selectedPlacedObject, shouldClearTiles, teleportSettings, + refreshMapObject, // Methods loadMap, @@ -115,6 +127,7 @@ export function useMapEditorComposable() { setTeleportSettings, triggerClearTiles, resetClearTilesFlag, + triggerMapObjectRefresh, reset } }