Fixes for dynamic zone asset loading

This commit is contained in:
2024-09-20 12:30:11 +02:00
parent 8d30e3a918
commit c1dc600f28
3 changed files with 101 additions and 109 deletions

View File

@ -25,26 +25,32 @@ type zoneLoadData = {
characters: CharacterT[]
}
gameStore.connection?.emit('zone:character:join', { zoneId: gameStore.character!.zoneId }, (response: zoneLoadData) => {
gameStore.connection?.emit('zone:character:join', { zoneId: gameStore.character!.zoneId }, async (response: zoneLoadData) => {
await assetStore.fetchAssetsByZoneId(response.zone.id)
zoneStore.setZone(response.zone)
zoneStore.setCharacters(response.characters)
})
// Event listeners
/**
* Fetch assets from the server when a new zone is loaded
*/
gameStore.connection?.on('zone:character:load_assets', async (zoneId: number) => {
await assetStore.fetchAssetsByZoneId(zoneId)
})
gameStore.connection?.on('zone:teleport', (data: zoneLoadData) => {
gameStore.connection?.on('zone:teleport', async (data: zoneLoadData) => {
if (zoneStore.zone?.id === data.zone.id) return
/**
* @TODO : Update character via global event server-side, remove this and listen for it somewhere not here
*/
gameStore.setCharacter({
...gameStore.character!,
zoneId: data.zone.id
})
await assetStore.fetchAssetsByZoneId(data.zone.id)
zoneStore.setZone(data.zone)
zoneStore.setCharacters(data.characters)
})
gameStore.connection?.on('zone:character:join', (data: ExtendedCharacterT) => {
gameStore.connection?.on('zone:character:join', async (data: ExtendedCharacterT) => {
zoneStore.addCharacter(data)
})
@ -61,7 +67,6 @@ onBeforeMount(() => {})
onBeforeUnmount(() => {
zoneStore.reset()
gameStore.connection?.off('zone:character:load_assets')
gameStore.connection?.off('zone:teleport')
gameStore.connection?.off('zone:character:join')
gameStore.connection?.off('zone:character:leave')