import { PluginPureHook, BlockPair } from '@gedit/runtime-compiler'; import { global } from './common'; export enum PhaserPlugin { spine = 'spine', dragonbones = 'dragonbones', } export function plugin(hook: PluginPureHook, plugins: PhaserPlugin[]): void { hook.print('plugins: '); hook.push(); hook.print('scene: '); hook.push(BlockPair.bracket); plugins.forEach(type => { switch (type) { case PhaserPlugin.spine: hook.println( "{ key: 'SpinePlugin', plugin: window.SpinePlugin, mapping: 'spine' }," ); break; case PhaserPlugin.dragonbones: hook.println( "{ key: 'DragonBones', plugin: window.dragonBones.phaser.plugin.DragonBonesScenePlugin, mapping: 'dragonbone' }," ); break; default: break; } }); hook.pop(); hook.pop(false); hook.println(','); } export function physics(hook: PluginPureHook): void { hook.println("physics: { default: 'matter' },"); } export function config(hook: PluginPureHook): void { const { width, height, element } = hook.ctx; hook.print(`window.${global.GAME_CONFIG} = `); hook.push(); hook.println(`width: ${width},`); hook.println(`height: ${height},`); hook.println(`parent: '${element}',`); const enablePlugins = []; if (hook.ctx.plugins.spine) { enablePlugins.push(PhaserPlugin.spine); } if (hook.ctx.plugins.dragonbones) { enablePlugins.push(PhaserPlugin.dragonbones); } plugin(hook, enablePlugins); physics(hook); hook.pop(); }