var Class = require('../utils/Class'); var PluginManager = require('../plugins/PluginManager'); var ScenePlugin = new Class({ initialize: function ScenePlugin(scene){ this.scene = scene; this.systems = scene.sys; if (!scene.sys.settings.isBooted) { scene.sys.events.once('boot', this.boot, this); } this.settings = scene.sys.settings; this.key = scene.sys.settings.key; this.manager = scene.sys.game.scene; this._queue = [] ; } , boot: function (){ var eventEmitter = this.systems.events; eventEmitter.on('preupdate', this.preUpdate, this); eventEmitter.on('shutdown', this.shutdown, this); eventEmitter.on('destroy', this.destroy, this); } , preUpdate: function (){ var len = _AN_Read_length('length', this._queue); if (len === 0) { return ; } var manager = this.manager; for (var i = 0; i < len; i++ ){ var action = this._queue[i]; switch (action.type){ case 'add': manager.add(action.key, action.data, action.autoStart); break ; case 'start': manager.stop(this.key); manager.start(action.key, action.data); break ; case 'launch': manager.start(action.key, action.data); break ; case 'pause': manager.pause(action.key); break ; case 'resume': manager.resume(action.key); break ; case 'stop': manager.stop(action.key); break ; case 'swap': manager.swap(this.key, action.key); break ; case 'moveUp': manager.moveUp(this.key); break ; case 'moveDown': manager.moveDown(this.key); break ; case 'bringToTop': manager.bringToTop(this.key); break ; case 'sendToBack': manager.sendToBack(this.key); break ; case 'swapPosition': manager.swapPosition(this.key, action.key); break ; case 'sleep': manager.sleep(action.key); break ; case 'wake': manager.wake(action.key); break ; } } this._queue.length = 0; } , start: function (key, data){ if (key === undefined) { key = this.key; } this._queue.push({ type: 'start', key: key, data: data} ); return this; } , add: function (key, sceneConfig, autoStart){ this._queue.push({ type: 'add', key: key, data: sceneConfig, autoStart: autoStart} ); return this; } , launch: function (key, data){ if (key === undefined) { key = this.key; } this._queue.push({ type: 'launch', key: key, data: data} ); return this; } , pause: function (key){ if (key === undefined) { key = this.key; } this._queue.push({ type: 'pause', key: key} ); return this; } , resume: function (key){ if (key === undefined) { key = this.key; } this._queue.push({ type: 'resume', key: key} ); return this; } , sleep: function (key){ this._queue.push({ type: 'sleep', key: key} ); return this; } , wake: function (key){ this._queue.push({ type: 'wake', key: key} ); return this; } , swap: function (key){ this._queue.push({ type: 'swap', key: key} ); return this; } , stop: function (key){ if (key === undefined) { key = this.key; } this._queue.push({ type: 'stop', key: key} ); return this; } , setVisible: function (value){ this.settings.visible = value; return this; } , swapPosition: function (key){ this._queue.push({ type: 'swapPosition', key: key} ); } , moveUp: function (){ this._queue.push({ type: 'moveUp'} ); } , moveDown: function (){ this._queue.push({ type: 'moveDown'} ); } , bringToTop: function (){ this._queue.push({ type: 'bringToTop'} ); } , sendToBack: function (){ this._queue.push({ type: 'sendToBack'} ); } , get: function (key){ return this.manager.getScene(key); } , transitionTo: function (key, duration){ } , isActive: function (key){ if (key === undefined) { key = this.key; } return this.manager.isActive(key); } , shutdown: function (){ } , destroy: function (){ } } ); PluginManager.register('ScenePlugin', ScenePlugin, 'scenePlugin'); module.exports = ScenePlugin;