diff --git a/package-lock.json b/package-lock.json
index ecb7752..74b1c43 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5204,9 +5204,9 @@
}
},
"node_modules/nwsapi": {
- "version": "2.2.12",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz",
- "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==",
+ "version": "2.2.13",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz",
+ "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==",
"dev": true,
"license": "MIT"
},
diff --git a/src/components/gameMaster/zoneEditor/ZoneEditor.vue b/src/components/gameMaster/zoneEditor/ZoneEditor.vue
index 2cffa06..2a01ccd 100644
--- a/src/components/gameMaster/zoneEditor/ZoneEditor.vue
+++ b/src/components/gameMaster/zoneEditor/ZoneEditor.vue
@@ -248,32 +248,6 @@ function handleMove() {
console.log('move btn clicked')
}
-onBeforeMount(async () => {
- tileArray.forEach((row, y) => row.forEach((_, x) => placeTile(zoneTilemap, tiles, x, y, 'blank_tile')))
-
- if (zone.value?.tiles) {
- setAllTiles(zoneTilemap, tiles, zone.value.tiles)
- tileArray = zone.value.tiles.map((row) => row.map((tileId) => tileId || 'blank_tile'))
- }
-
- zoneEventTiles.value = zone.value?.zoneEventTiles ?? []
- zoneObjects.value = sortByIsometricDepth(zone.value?.zoneObjects ?? [])
-
- // Center camera
- const centerY = (zoneTilemap.height * zoneTilemap.tileHeight) / 2
- const centerX = (zoneTilemap.width * zoneTilemap.tileWidth) / 2
- scene.cameras.main.centerOn(centerX, centerY)
-})
-
-onUnmounted(() => {
- zoneEventTiles.value = []
- zoneObjects.value = []
- tiles?.destroy()
- zoneTilemap?.removeAllLayers()
- zoneTilemap?.destroy()
- zoneEditorStore.reset()
-})
-
// watch zoneEditorStore.objectList and update originX and originY of objects in zoneObjects
watch(
objectList,
@@ -317,5 +291,29 @@ const setSelectedZoneObject = (zoneObject: ZoneObject | null) => {
onBeforeMount(async () => {
await gameStore.fetchAllZoneAssets()
await loadAssets(scene)
+
+ tileArray.forEach((row, y) => row.forEach((_, x) => placeTile(zoneTilemap, tiles, x, y, 'blank_tile')))
+
+ if (zone.value?.tiles) {
+ setAllTiles(zoneTilemap, tiles, zone.value.tiles)
+ tileArray = zone.value.tiles.map((row) => row.map((tileId) => tileId || 'blank_tile'))
+ }
+
+ zoneEventTiles.value = zone.value?.zoneEventTiles ?? []
+ zoneObjects.value = sortByIsometricDepth(zone.value?.zoneObjects ?? [])
+
+ // Center camera
+ const centerY = (zoneTilemap.height * zoneTilemap.tileHeight) / 2
+ const centerX = (zoneTilemap.width * zoneTilemap.tileWidth) / 2
+ scene.cameras.main.centerOn(centerX, centerY)
+})
+
+onUnmounted(() => {
+ zoneEventTiles.value = []
+ zoneObjects.value = []
+ tiles?.destroy()
+ zoneTilemap?.removeAllLayers()
+ zoneTilemap?.destroy()
+ zoneEditorStore.reset()
})
diff --git a/src/components/sprites/Character.vue b/src/components/sprites/Character.vue
index a4e784d..540b04c 100644
--- a/src/components/sprites/Character.vue
+++ b/src/components/sprites/Character.vue
@@ -156,7 +156,7 @@ onMounted(() => {
charContainer.value!.setName(props.character!.name)
if (props.character.id === gameStore.character!.id) {
- zoneStore.characterLoaded = true
+ zoneStore.setCharacterLoaded(true)
}
// Set sprite
diff --git a/src/components/zone/Zone.vue b/src/components/zone/Zone.vue
index c1abf6a..fb28308 100644
--- a/src/components/zone/Zone.vue
+++ b/src/components/zone/Zone.vue
@@ -8,7 +8,7 @@
import { useScene } from 'phavuer'
import { useGameStore } from '@/stores/gameStore'
import { useZoneStore } from '@/stores/zoneStore'
-import { onBeforeUnmount, ref } from 'vue'
+import { onBeforeMount, onBeforeUnmount, ref } from 'vue'
import type { Character as CharacterT, Zone as ZoneT, ExtendedCharacter as ExtendedCharacterT } from '@/types'
import Tiles from '@/components/zone/Tiles.vue'
import Objects from '@/components/zone/Objects.vue'
@@ -26,16 +26,6 @@ type zoneLoadData = {
characters: CharacterT[]
}
-gameStore.connection!.emit('zone:character:join', async (response: zoneLoadData) => {
- // Fetch assets for new zone
- await gameStore.fetchZoneAssets(response.zone.id)
- await loadAssets(scene)
-
- // Set zone and characters
- zoneStore.setZone(response.zone)
- zoneStore.setCharacters(response.characters)
-})
-
// Event listeners
gameStore.connection!.on('zone:character:teleport', async (data: zoneLoadData) => {
/**
@@ -69,6 +59,23 @@ gameStore.connection!.on('character:move', (data: ExtendedCharacterT) => {
zoneStore.updateCharacter(data)
})
+onBeforeMount(() => {
+ /**
+ * @TODO, when returning from the zone editor, the emit is not s
+ */
+ console.log('before mount')
+
+ gameStore.connection!.emit('zone:character:join', async (response: zoneLoadData) => {
+ // Fetch assets for new zone
+ await gameStore.fetchZoneAssets(response.zone.id)
+ await loadAssets(scene)
+
+ // Set zone and characters
+ zoneStore.setZone(response.zone)
+ zoneStore.setCharacters(response.characters)
+ })
+})
+
onBeforeUnmount(() => {
zoneStore.reset()
gameStore.connection!.off('zone:character:teleport')
diff --git a/src/screens/Game.vue b/src/screens/Game.vue
index 1c33fe7..0e7d575 100644
--- a/src/screens/Game.vue
+++ b/src/screens/Game.vue
@@ -4,7 +4,7 @@