import { PluginPureHook } from '@gedit/runtime-compiler'; import { Resource, TilemapGameObject } from '@gedit/runtime-render'; import { code } from '../common'; export interface TilemapLayer { name: string; x: number; y: number; } export function tilemap( ctx: PluginPureHook, component: TilemapGameObject ): void { const { tilemap: data, name, displayType } = component; const res: Resource = ctx.ctx.meta.filter( r => r.id === data.texture )[0] as any; if ( !res || !res.children || res.children.length === 0 || !res.params || res.params.length === 0 ) { return; } ctx.comment(`@type ${displayType}\n@name ${name}`); ctx.push(); ctx.println(`const tilemap = ${code.create(component)}('${data.texture}');`); ctx.println('const tileset = [];'); res.children.forEach(image => { const key = image.id; ctx.println(`tilemap.addTilesetImage('${key}');`); ctx.println(`tileset.push('${key}');`); }); res.params.forEach(layer => { ctx.println( `tilemap.createLayer('${layer.name}', tileset, ${layer.x}, ${layer.y});` ); }); ctx.pop(); }