diff --git a/src/components/gameMaster/zoneEditor/ZoneEditor.vue b/src/components/gameMaster/zoneEditor/ZoneEditor.vue index fdd7058..4c9f9a6 100644 --- a/src/components/gameMaster/zoneEditor/ZoneEditor.vue +++ b/src/components/gameMaster/zoneEditor/ZoneEditor.vue @@ -1,5 +1,7 @@ \ No newline at end of file + diff --git a/src/components/utilities/Modal.vue b/src/components/utilities/Modal.vue index 4ba47ca..81792a7 100644 --- a/src/components/utilities/Modal.vue +++ b/src/components/utilities/Modal.vue @@ -223,23 +223,23 @@ watch( ) onMounted(() => { - window.addEventListener('mousemove', drag) - window.addEventListener('mouseup', stopDrag) - window.addEventListener('mousemove', resizeModal) - window.addEventListener('mouseup', stopResize) + addEventListener('mousemove', drag) + addEventListener('mouseup', stopDrag) + addEventListener('mousemove', resizeModal) + addEventListener('mouseup', stopResize) if (props.modalPositionX !== 0 && props.modalPositionY !== 0) { - window.addEventListener('resize', handleResize) + addEventListener('resize', handleResize) } initializePosition() }) onUnmounted(() => { - window.removeEventListener('mousemove', drag) - window.removeEventListener('mouseup', stopDrag) - window.removeEventListener('mousemove', resizeModal) - window.removeEventListener('mouseup', stopResize) + removeEventListener('mousemove', drag) + removeEventListener('mouseup', stopDrag) + removeEventListener('mousemove', resizeModal) + removeEventListener('mouseup', stopResize) if (props.modalPositionX !== 0 && props.modalPositionY !== 0) { - window.removeEventListener('resize', handleResize) + removeEventListener('resize', handleResize) } }) diff --git a/src/composables/zoneComposable.ts b/src/composables/zoneComposable.ts index a640927..678d03e 100644 --- a/src/composables/zoneComposable.ts +++ b/src/composables/zoneComposable.ts @@ -4,8 +4,7 @@ import TilemapLayer = Phaser.Tilemaps.TilemapLayer import Tileset = Phaser.Tilemaps.Tileset import Tile = Phaser.Tilemaps.Tile import { useAssetManager } from '@/managers/assetManager' -import type { Zone as ZoneT } from '@/types' -import { unduplicateArray } from '@/utilities' +import type { AssetT, Zone as ZoneT } from '@/types' export function getTile(layer: TilemapLayer | Tilemap, x: number, y: number): Tile | undefined { const tile = layer.getTileAtWorldXY(x, y) @@ -48,6 +47,7 @@ export function tileToWorldY(layer: TilemapLayer | Tilemap, pos_x: number, pos_y export function placeTile(zone: Tilemap, layer: TilemapLayer, x: number, y: number, tileName: string) { let tileImg = zone.getTileset(tileName) as Tileset if (!tileImg) { + console.log('tile not found:', tileName) tileImg = zone.getTileset('blank_tile') as Tileset } layer.putTileAt(tileImg.firstgid, x, y) @@ -86,9 +86,10 @@ export function FlattenZoneArray(tiles: string[][]) { } export async function loadZoneTilesIntoScene(zone: ZoneT, scene: Phaser.Scene) { - const tileArray = unduplicateArray(FlattenZoneArray(zone.tiles)) + const tileArray: AssetT[] = await fetch(config.server_endpoint + '/assets/list_tiles/' + zone.id).then((response) => response.json()) + console.log(tileArray) for (const tile of tileArray) { - await loadZoneTileTexture(scene, tile, new Date()) + await loadZoneTileTexture(scene, tile.key, tile.updatedAt) } } diff --git a/src/managers/assetManager.ts b/src/managers/assetManager.ts index 087c15a..083cf33 100644 --- a/src/managers/assetManager.ts +++ b/src/managers/assetManager.ts @@ -24,8 +24,17 @@ class AssetManager extends Dexie { async downloadAsset(key: string, url: string, group: string, updatedAt: Date, frameCount?: number, frameWidth?: number, frameHeight?: number) { try { + // Check if the asset already exists, then check if updatedAt is newer + const asset = await this.assets.get(key) + if (asset && asset.updatedAt > updatedAt) { + return + } + + // Download the asset const response = await fetch(config.server_endpoint + url) const blob = await response.blob() + + // Store the asset in the database await this.assets.put({ key, data: blob, group, updatedAt, frameCount, frameWidth, frameHeight }) } catch (error) { console.error(`Failed to add asset ${key}:`, error) diff --git a/src/screens/ZoneEditor.vue b/src/screens/ZoneEditor.vue index 57f4d65..df46290 100644 --- a/src/screens/ZoneEditor.vue +++ b/src/screens/ZoneEditor.vue @@ -11,17 +11,16 @@ diff --git a/src/services/authentication.ts b/src/services/authentication.ts index 4c9ab2a..ccf778f 100644 --- a/src/services/authentication.ts +++ b/src/services/authentication.ts @@ -33,4 +33,4 @@ export async function resetPassword(email: string) { } catch (error: any) { return { error: error.response.data.message } } -} \ No newline at end of file +} diff --git a/src/utilities.ts b/src/utilities.ts index 0567050..905dc81 100644 --- a/src/utilities.ts +++ b/src/utilities.ts @@ -4,4 +4,4 @@ export function uuidv4() { export function unduplicateArray(array: any[]) { return [...new Set(array.flat())] -} \ No newline at end of file +}