UNPKG

phaser4-rex-plugins

Version:
2 lines (1 loc) 5.93 kB
var t,e;t=void 0,e=function(){var t={setEventEmitter(t,e){return void 0===e&&(e=Phaser.Events.EventEmitter),this._privateEE=!0===t||void 0===t,this._eventEmitter=this._privateEE?new e:t,this},destroyEventEmitter(){return this._eventEmitter&&this._privateEE&&this._eventEmitter.shutdown(),this},getEventEmitter(){return this._eventEmitter},on(){return this._eventEmitter&&this._eventEmitter.on.apply(this._eventEmitter,arguments),this},once(){return this._eventEmitter&&this._eventEmitter.once.apply(this._eventEmitter,arguments),this},off(){return this._eventEmitter&&this._eventEmitter.off.apply(this._eventEmitter,arguments),this},emit(t){return this._eventEmitter&&t&&this._eventEmitter.emit.apply(this._eventEmitter,arguments),this},addListener(){return this._eventEmitter&&this._eventEmitter.addListener.apply(this._eventEmitter,arguments),this},removeListener(){return this._eventEmitter&&this._eventEmitter.removeListener.apply(this._eventEmitter,arguments),this},removeAllListeners(){return this._eventEmitter&&this._eventEmitter.removeAllListeners.apply(this._eventEmitter,arguments),this},listenerCount(){return this._eventEmitter?this._eventEmitter.listenerCount.apply(this._eventEmitter,arguments):0},listeners(){return this._eventEmitter?this._eventEmitter.listeners.apply(this._eventEmitter,arguments):[]},eventNames(){return this._eventEmitter?this._eventEmitter.eventNames.apply(this._eventEmitter,arguments):[]}},e=function(t,e,s){if(!t||"number"==typeof t)return s;if("string"==typeof e){if(t.hasOwnProperty(e))return t[e];if(-1===e.indexOf("."))return s;e=e.split(".")}for(var i=e,r=t,n=s,h=0;h<i.length;h++){if(e=i[h],!r.hasOwnProperty(e)){n=s;break}r=n=r[e]}return n};class s{constructor(t){this._states={},this._stateLock=!1,this.enable=!0,this._start=void 0,this._state=void 0,this._prevState=void 0;var s=e(t,"eventEmitter",void 0),i=e(t,"EventEmitterClass",void 0);this.setEventEmitter(s,i)}shutdown(){this.destroyEventEmitter()}destroy(){this.shutdown()}toJSON(){return{curState:this.state,prevState:this.prevState,enable:this.enable,start:this._start}}setEnable(t){return void 0===t&&(t=!0),this.enable=t,this}toggleEnable(){return this.setEnable(!this.enable),this}getState(t){return this._states[t]}addState(t,e){return"string"!=typeof t&&(t=(e=t).name),this._states[t]=e,this}addStates(t){if(Array.isArray(t))for(var e=0,s=t.length;e<s;e++)this.addState(t[e]);else for(var i in t)this.addState(i,t[i]);return this}removeState(t){return this._states.hasOwnProperty(t)&&delete this._states[t],this}removeAllStates(){for(var t in this._states)delete this._states[t];return this}set state(t){var e;this.enable&&!this._stateLock&&this._state!==t&&(this._prevState=this._state,this._state=t,this._stateLock=!0,this.emit("statechange",this),null!=this._prevState&&((e=this.getState(this._prevState))&&e.exit&&e.exit(this),this.emit(`exit_${this._prevState}`,this)),this._stateLock=!1,null!=this._state&&((e=this.getState(this._state))&&e.enter&&e.enter(this),this.emit(`enter_${this._state}`,this)))}get state(){return this._state}get prevState(){return this._prevState}get stateList(){return Object.keys(this._states)}start(t){return this._start=t,this._prevState=void 0,this._state=t,this}goto(t){return null!=t&&(this.state=t),this}next(){var t,e=this.getState(this.state);return e&&e.next?(t="string"==typeof e.next?e.next:e.next(this),this.goto(t),this):this}runMethod(t,e,s,i,r,n){var h=this.getState(this.state);if(h){var a=h[t];if(a){switch(arguments.length){case 1:return a(this);case 2:return a(this,e);case 3:return a(this,e,s);case 4:return a(this,e,s,i);case 5:return a(this,e,s,i,r);case 6:return a(this,e,s,i,r,n)}var o=Array.prototype.slice.call(arguments);return o[0]=this,a.apply(void 0,o)}}}}Object.assign(s.prototype,t);var i=function(t,e,s,i,r){void 0===r&&(r=!1);var n=t._events[e];if(!n)return!1;for(var h=0,a=n.length;h<a;h++){var o=n[h];if(o.fn===s&&o.context===i&&o.once===r)return!0}return!1};class r extends s{constructor(t){super(t),this._scene=e(t,"scene",void 0)}shutdown(){this.stopUpdate(),this.stopPreUpdate(),this.stopPostUpdate(),this._scene=void 0,super.shutdown()}getScene(){return this._scene}update(t,e){this.runMethod("update",t,e)}preupdate(t,e){this.runMethod("preupdate",t,e)}postupdate(t,e){this.runMethod("postupdate",t,e)}startUpdate(t){t||(t=this._scene);var e=t.sys.events;return i(e,"update",this.update,this)||(this._scene=t,e.on("update",this.update,this)),this}stopUpdate(){return this._scene?(this._scene.sys.events.off("update",this.update,this),this):this}startPreUpdate(t){t||(t=this._scene);var e=t.sys.events;return i(e,"preupdate",this.preupdate,this)||(this._scene=t,e.on("preupdate",this.preupdate,this)),this}stopOreUpdate(){return this._scene?(this._scene.sys.events.off("preupdate",this.preupdate,this),this):this}startPostUpdate(t){t||(t=this._scene);var e=t.sys.events;return i(e,"postupdate",this.postupdate,this)||(this._scene=t,e.on("postupdate",this.postupdate,this)),this}stopPostUpdate(){return this._scene?(this._scene.sys.events.off("postupdate",this.postupdate,this),this):this}}var n=function(t){return null==t||""===t||0===t.length};class h extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t){return new r(t)}}return function(t,e,s,i){if(void 0===i&&(i="."),"object"==typeof t)if(n(e)){if(null==s)return;"object"==typeof s&&(t=s)}else{"string"==typeof e&&(e=e.split(i));var r=e.pop(),h=function(t,e,s){var i=t;if(n(e));else{var r;"string"==typeof e&&(e=e.split("."));for(var h=0,a=e.length;h<a;h++){var o;null!=i[r=e[h]]&&"object"==typeof i[r]||(o=h===a-1?void 0===s?{}:s:{},i[r]=o),i=i[r]}}return i}(t,e);h[r]=s}}(window,"RexPlugins.StateManager",r),h},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexstatemanagerplugin=e();