forked from noxious/server
Fixes and improvements for dynamic zone asset loading
This commit is contained in:
@ -26,36 +26,16 @@ class ZoneManager {
|
||||
logger.info('Zone manager loaded')
|
||||
}
|
||||
|
||||
// For now only current zone.
|
||||
public async getNeededAssets(zone: Zone, getMore = true): Promise<ZoneAssets> {
|
||||
const tiles: string[] = this.getUnique((JSON.parse(JSON.stringify(zone.tiles)) as string[][]).reduce((acc, val) => [...acc, ...val]));
|
||||
public async getZoneAssets(zone: Zone): Promise<ZoneAssets> {
|
||||
const tiles: string[] = this.getUnique(
|
||||
(JSON.parse(JSON.stringify(zone.tiles)) as string[][]).reduce((acc, val) => [...acc, ...val])
|
||||
);
|
||||
const objects = await zoneRepository.getObjects(zone.id);
|
||||
const eventTeleportTiles = await zoneRepository.getEventTeleportTiles(zone.id);
|
||||
let toZoneAssets = null;
|
||||
if(getMore) {
|
||||
for (const eventTeleportTile of eventTeleportTiles) {
|
||||
console.log(eventTeleportTile);
|
||||
console.log(eventTeleportTile.teleport.toZoneId);
|
||||
const toZone = await zoneRepository.getById(eventTeleportTile.teleport.toZoneId);
|
||||
console.log(toZone);
|
||||
if(toZone) {
|
||||
if(!toZoneAssets) {
|
||||
toZoneAssets = await this.getNeededAssets(toZone, false);
|
||||
} else {
|
||||
const newToZoneAssets = await this.getNeededAssets(toZone, false);
|
||||
toZoneAssets = {
|
||||
tiles: this.getUnique([...toZoneAssets.tiles, ...(newToZoneAssets ? newToZoneAssets.tiles : [])]),
|
||||
objects: this.getUnique([...toZoneAssets.objects, ...(newToZoneAssets ? newToZoneAssets.objects : [])]),
|
||||
} as ZoneAssets
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
let mappedObjects = this.getUnique(objects.map(x => x.objectId));
|
||||
const mappedObjects = this.getUnique(objects.map(x => x.objectId));
|
||||
|
||||
return {
|
||||
tiles: this.getUnique([...tiles, ...(toZoneAssets ? toZoneAssets.tiles : [])]),
|
||||
objects: this.getUnique([...mappedObjects, ...(toZoneAssets ? toZoneAssets.objects : [])]),
|
||||
tiles: tiles,
|
||||
objects: mappedObjects,
|
||||
} as ZoneAssets;
|
||||
}
|
||||
|
||||
@ -67,7 +47,7 @@ class ZoneManager {
|
||||
public async loadZone(zone: Zone) {
|
||||
const loadedZone = new LoadedZone(zone)
|
||||
this.loadedZones.push(loadedZone)
|
||||
await this.getNeededAssets(zone);
|
||||
await this.getZoneAssets(zone);
|
||||
logger.info(`Zone ID ${zone.id} loaded`)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user