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 @@
-
+
+
+
@@ -14,10 +16,11 @@
\ 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
+}