import { PluginPureHook } from '@gedit/runtime-compiler'; import { ResourceType } from '@gedit/runtime-render'; export function loadResource(hook: PluginPureHook, textureId: string): void { const { meta } = hook.ctx; const resource = meta.find(r => (textureId.indexOf(r.id) === 0)); if (!resource) { return; } switch (resource.type) { case ResourceType.image: hook.println(`this.load.image('${resource.id}', '${resource.url}');`); break; case ResourceType.spritesheet: if (typeof resource.atlas !== 'string') { return; } hook.println( `this.load.atlas('${resource.id}', '${resource.url}', '${resource.atlas}');` ); break; case ResourceType.spine: if (!Array.isArray(resource.atlas)) { return; } hook.println( `this.load.spine('${resource.id}', '${ resource.url }', [${resource.atlas.map(a => `'${a}'`).join(',')}]);` ); break; case ResourceType.tilemap: hook.println( `this.load.tilemapTiledJSON('${resource.id}', '${resource.url}');` ); if (resource.children && resource.children.length > 0) { resource.children.forEach(res => { hook.println(`this.load.image('${res.id}', '${res.url}');`); }); } break; case ResourceType.dragonbones: if (!resource.atlas || resource.atlas.length < 2) { return; } const [mainJson, boneJson, boneBin] = resource.atlas; hook.println( `this.load.dragonbone('${resource.id}', '${resource.url}', '${mainJson}', '${boneJson}');` ); if (boneBin) { hook.println( `this.load.dragonbone('${resource.id}', '${resource.url}', '${mainJson}', '${boneBin}', undefined, undefined, { responseType: 'arraybuffer' });` ); } break; default: break; } }