Renamed get to getById, map improvement
This commit is contained in:
parent
49dcd92a9e
commit
a9cedba4e0
@ -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<T extends { id: string; updatedAt: Date }>(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
|
||||
|
@ -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)
|
||||
})
|
||||
</script>
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -23,7 +23,7 @@ const items = ref<PlacedMapObjectT[]>([])
|
||||
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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -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}`)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -14,7 +14,7 @@ export class BaseStorage<T extends { id: string }> {
|
||||
|
||||
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<T extends { id: string }> {
|
||||
}
|
||||
}
|
||||
|
||||
async get(id: string): Promise<T | null> {
|
||||
async getById(id: string): Promise<T | null> {
|
||||
try {
|
||||
const item = await this.dexie.table(this.tableName).get(id)
|
||||
return item || null
|
||||
|
@ -31,7 +31,7 @@ export class CharacterTypeStorage extends BaseStorage<any> {
|
||||
}
|
||||
|
||||
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<any> {
|
||||
}
|
||||
|
||||
async getSpriteId(characterTypeId: string) {
|
||||
const characterType = await this.get(characterTypeId)
|
||||
const characterType = await this.getById(characterTypeId)
|
||||
return characterType?.sprite
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user