var Class = require('../utils/Class'); var StateManager = new Class({ initialize: function StateManager(state, game){ this.state = state; this.settings = state.sys.settings; this.key = state.sys.settings.key; this.manager = game.state; this._queue = [] ; } , update: 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 '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 '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; } , 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; } , 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.getState(key); } , transitionTo: function (key, duration){ } , isActive: function (key){ if (key === undefined) { key = this.key; } return this.manager.isActive(key); } } ); module.exports = StateManager;