import { Assets, Texture } from 'pixi.js';
/**
* Загрузчик ассетов поверх Assets из PixiJS: группы, прогресс, готовые Texture.
* URL ассетов передаётся функцией-резолвером (приложение решает, где лежат файлы).
*/
export class AssetLoader {
private textures = new Map<string, Texture>();
constructor(private resolveUrl: (key: string) => string) {}
/** Загрузить группу ключей; onProgress получает долю 0..1. */
async load(keys: string[], onProgress?: (p: number) => void): Promise<void> {
let done = 0;
for (const key of keys) {
const tex = await Assets.load<Texture>(this.resolveUrl(key));
this.textures.set(key, tex);
done++;
onProgress?.(done / keys.length);
}
}
texture(key: string): Texture {
const t = this.textures.get(key);
if (!t) throw new Error(`Текстура не загружена: ${key}`);
return t;
}
has(key: string): boolean {
return this.textures.has(key);
}
}