From 1105a53feb3032a2da1ceb3bcfe6504af6a2d147 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Sat, 28 Sep 2024 02:17:33 +0200 Subject: [PATCH] Minor improvements --- package-lock.json | 6 +-- .../gameMaster/zoneEditor/ZoneEditor.vue | 50 +++++++++---------- src/components/sprites/Character.vue | 2 +- src/components/zone/Zone.vue | 29 +++++++---- src/screens/Game.vue | 6 +-- src/stores/zoneStore.ts | 6 ++- 6 files changed, 54 insertions(+), 45 deletions(-) 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 @@
- +
@@ -76,6 +76,8 @@ const createGame = (game: Phaser.Game) => { } const preloadScene = async (scene: Phaser.Scene) => { + isLoaded.value = false + /** * Create loading bar */ @@ -138,8 +140,6 @@ const createScene = async (scene: Phaser.Scene) => { gameStore.assets.forEach((asset) => { if (asset.group !== 'sprite_animations') return - console.log(asset.frameCount) - scene.anims.create({ key: asset.key, frameRate: 7, diff --git a/src/stores/zoneStore.ts b/src/stores/zoneStore.ts index a69f2a9..82db502 100644 --- a/src/stores/zoneStore.ts +++ b/src/stores/zoneStore.ts @@ -37,9 +37,13 @@ export const useZoneStore = defineStore('zone', { removeCharacter(character_id: number) { this.characters = this.characters.filter((char) => char.id !== character_id) }, + setCharacterLoaded(loaded: boolean) { + this.characterLoaded = loaded + }, reset() { this.zone = null - this.characters = [] + this.characters = [], + this.characterLoaded = false } } })