From a9cedba4e045a512409dcedc77dbabe6024693ed Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Sun, 9 Feb 2025 17:33:10 +0100 Subject: [PATCH] Renamed get to getById, map improvement --- src/application/utilities.ts | 4 +- .../game/character/partials/CharacterHair.vue | 2 +- src/components/game/map/Map.vue | 2 +- src/components/game/map/MapTiles.vue | 2 +- src/components/game/map/PlacedMapObjects.vue | 2 +- .../game/map/partials/PlacedMapObject.vue | 2 +- .../partials/SelectedPlacedMapObject.vue | 2 +- src/components/screens/Characters.vue | 2 +- src/composables/useSoundComposable.ts | 2 +- src/services/mapService.ts | 40 ++++++++++++++----- src/services/textureService.ts | 2 +- src/storage/baseStorage.ts | 4 +- src/storage/storages.ts | 4 +- 13 files changed, 44 insertions(+), 26 deletions(-) diff --git a/src/application/utilities.ts b/src/application/utilities.ts index 19cac74..afb06e4 100644 --- a/src/application/utilities.ts +++ b/src/application/utilities.ts @@ -7,7 +7,7 @@ export function uuidv4() { } export function unduplicateArray(array: any[]) { - const arrayToProcess = typeof array.flat === 'function' ? array.flat() : array; + const arrayToProcess = typeof array.flat === 'function' ? array.flat() : array return [...new Set(arrayToProcess)] } @@ -24,7 +24,7 @@ export async function downloadCache(e for (const item of items) { let overwrite = false - const existingItem = await storage.get(item.id) + const existingItem = await storage.getById(item.id) if (!existingItem || item.updatedAt > existingItem.updatedAt) { overwrite = true diff --git a/src/components/game/character/partials/CharacterHair.vue b/src/components/game/character/partials/CharacterHair.vue index 4fd09bb..1c31f98 100644 --- a/src/components/game/character/partials/CharacterHair.vue +++ b/src/components/game/character/partials/CharacterHair.vue @@ -48,7 +48,7 @@ onMounted(async () => { hairSpriteId.value = spriteId const spriteStorage = new SpriteStorage() - sprite.value = await spriteStorage.get(spriteId) + sprite.value = await spriteStorage.getById(spriteId) await loadSpriteTextures(scene, spriteId) }) diff --git a/src/components/game/map/Map.vue b/src/components/game/map/Map.vue index 7752957..cb38a11 100644 --- a/src/components/game/map/Map.vue +++ b/src/components/game/map/Map.vue @@ -36,7 +36,7 @@ gameStore.connection?.on('map:character:teleport', async (data: mapLoadData) => async function initialize() { if (!mapStore.mapId) return - const map = await mapStorage.get(mapStore.mapId) + const map = await mapStorage.getById(mapStore.mapId) if (!map) return await loadTileTexturesFromMapTileArray(mapStore.mapId, scene) diff --git a/src/components/game/map/MapTiles.vue b/src/components/game/map/MapTiles.vue index 9ec2fc2..2231db0 100644 --- a/src/components/game/map/MapTiles.vue +++ b/src/components/game/map/MapTiles.vue @@ -22,7 +22,7 @@ const props = defineProps<{ onMounted(async () => { if (!mapStore.mapId) return - const map = await mapStorage.get(mapStore.mapId) + const map = await mapStorage.getById(mapStore.mapId) if (!map) return await loadTileTexturesFromMapTileArray(mapStore.mapId, scene) diff --git a/src/components/game/map/PlacedMapObjects.vue b/src/components/game/map/PlacedMapObjects.vue index 8a6a0f9..c9b9df6 100644 --- a/src/components/game/map/PlacedMapObjects.vue +++ b/src/components/game/map/PlacedMapObjects.vue @@ -23,7 +23,7 @@ const items = ref([]) onMounted(async () => { if (!mapStore.mapId) return - const map = await mapStorage.get(mapStore.mapId) + const map = await mapStorage.getById(mapStore.mapId) if (!map) return items.value = map.placedMapObjects diff --git a/src/components/game/map/partials/PlacedMapObject.vue b/src/components/game/map/partials/PlacedMapObject.vue index 8e435c3..0a546a7 100644 --- a/src/components/game/map/partials/PlacedMapObject.vue +++ b/src/components/game/map/partials/PlacedMapObject.vue @@ -41,7 +41,7 @@ async function initialize() { } const mapObjectStorage = new MapObjectStorage() - const _mapObject = await mapObjectStorage.get(props.placedMapObject.mapObject as string) + const _mapObject = await mapObjectStorage.getById(props.placedMapObject.mapObject as string) if (!_mapObject) return mapObject.value = _mapObject diff --git a/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue b/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue index ed16a4c..4db4afd 100644 --- a/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue +++ b/src/components/gameMaster/mapEditor/partials/SelectedPlacedMapObject.vue @@ -103,7 +103,7 @@ async function handleUpdate() { onMounted(async () => { if (!props.placedMapObject.mapObject) return - mapObject.value = await mapObjectStorage.get(props.placedMapObject.mapObject as string) + mapObject.value = await mapObjectStorage.getById(props.placedMapObject.mapObject as string) if (!mapObject.value) return mapObjectName.value = mapObject.value.name diff --git a/src/components/screens/Characters.vue b/src/components/screens/Characters.vue index 78490fb..b1f3c51 100644 --- a/src/components/screens/Characters.vue +++ b/src/components/screens/Characters.vue @@ -169,7 +169,7 @@ function loginWithCharacter() { function createCharacter() { gameStore.connection?.emit('character:create', { name: newCharacterName.value }, (success: boolean) => { if (success) return - isCreateNewCharacterModalOpen.value = false + isCreateNewCharacterModalOpen.value = false }) } diff --git a/src/composables/useSoundComposable.ts b/src/composables/useSoundComposable.ts index dfcf1e0..209cb4e 100644 --- a/src/composables/useSoundComposable.ts +++ b/src/composables/useSoundComposable.ts @@ -44,7 +44,7 @@ export function useSoundComposable() { } let audio: HTMLAudioElement - const cachedSound = await soundStorage.get(soundUrl) + const cachedSound = await soundStorage.getById(soundUrl) if (cachedSound) { audio = new Audio(`data:audio/mpeg;base64,${cachedSound.base64}`) diff --git a/src/services/mapService.ts b/src/services/mapService.ts index 3d89795..00540fc 100644 --- a/src/services/mapService.ts +++ b/src/services/mapService.ts @@ -71,23 +71,41 @@ export const calculateIsometricDepth = (positionX: number, positionY: number, wi } async function loadTileTextures(tiles: TileT[], scene: Phaser.Scene) { - // Load each tile into the scene - for (const tile of tiles) { - const textureData = { - key: tile.id, - data: '/textures/tiles/' + tile.id + '.png', - group: 'tiles', - updatedAt: tile.updatedAt - } as TextureData - await loadTexture(scene, textureData) - } + const tileStorage = new TileStorage() + + // Process all tiles in parallel using Promise.all + await Promise.all( + tiles.map(async (tileData) => { + try { + // Get complete tile data if needed + const tile = !tileData.id || !tileData.updatedAt ? await tileStorage.getById(tileData.id) : tileData + + // Skip if tile data couldn't be retrieved + if (!tile?.id) { + console.warn(`Failed to load tile data for ID: ${tileData.id}`) + return + } + + const textureData: TextureData = { + key: tile.id, + data: `/textures/tiles/${tile.id}.png`, + group: 'tiles', + updatedAt: tile.updatedAt + } + + await loadTexture(scene, textureData) + } catch (error) { + console.error(`Error loading texture for tile ${tileData.id}:`, error) + } + }) + ) } export async function loadTileTexturesFromMapTileArray(map_id: string, scene: Phaser.Scene) { const mapStorage = new MapStorage() const tileStorage = new TileStorage() - const map = await mapStorage.get(map_id) + const map = await mapStorage.getById(map_id) if (!map) return const tileArray = unduplicateArray(map.tiles) diff --git a/src/services/textureService.ts b/src/services/textureService.ts index 4ab7d16..7398672 100644 --- a/src/services/textureService.ts +++ b/src/services/textureService.ts @@ -60,7 +60,7 @@ export async function loadSpriteTextures(scene: Phaser.Scene, sprite_id: string) if (!sprite_id) return false const spriteStorage = new SpriteStorage() - const sprite = await spriteStorage.get(sprite_id) + const sprite = await spriteStorage.getById(sprite_id) if (!sprite) { console.error('Failed to load sprite:', sprite_id) diff --git a/src/storage/baseStorage.ts b/src/storage/baseStorage.ts index ad7ec61..de19f0f 100644 --- a/src/storage/baseStorage.ts +++ b/src/storage/baseStorage.ts @@ -14,7 +14,7 @@ export class BaseStorage { async add(item: T, overwrite = false) { try { - const existing = await this.get(item.id) + const existing = await this.getById(item.id) if (existing && !overwrite) return await this.dexie.table(this.tableName).put({ ...item }) @@ -39,7 +39,7 @@ export class BaseStorage { } } - async get(id: string): Promise { + async getById(id: string): Promise { try { const item = await this.dexie.table(this.tableName).get(id) return item || null diff --git a/src/storage/storages.ts b/src/storage/storages.ts index b26ba47..838069a 100644 --- a/src/storage/storages.ts +++ b/src/storage/storages.ts @@ -31,7 +31,7 @@ export class CharacterTypeStorage extends BaseStorage { } async getSpriteId(characterTypeId: string) { - const characterType = await this.get(characterTypeId) + const characterType = await this.getById(characterTypeId) return characterType?.sprite } } @@ -42,7 +42,7 @@ export class CharacterHairStorage extends BaseStorage { } async getSpriteId(characterTypeId: string) { - const characterType = await this.get(characterTypeId) + const characterType = await this.getById(characterTypeId) return characterType?.sprite } }