phaser3-rex-plugins
Version:
2 lines (1 loc) • 6.26 kB
JavaScript
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,i,r){var n=t&&("object"==typeof t||"function"==typeof t),h=r&&("object"==typeof r||"function"==typeof r);if(!n&&!h)return i;var a=String(e);if(n&&a in t)return t[a];if(h&&a in r)return r[a];if(-1===a.indexOf("."))return i;var o=a.split(".");if(n){var u=s(t,o,i);if(u.found)return u.value}if(h){var p=s(r,o,i);if(p.found)return p.value}return i},s=function(t,e,s){for(var r=t,n=s,h=0,a=e.length;h<a;h++){var o=e[h];if(!r||"object"!=typeof r&&"function"!=typeof r||!(o in r))return i.found=!1,i;r=n=r[o]}return i.found=!0,i.value=n,i},i={};class r{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(r.prototype,t);var n=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 h extends r{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 n(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 n(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 n(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 a=function(t){return null!==t&&"object"==typeof t};class o extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t){return new h(t)}}return function(t,e,s,i="."){if(!a(t))return t;if(function(t){return null==t}(e)||""===e||Array.isArray(e)&&0===e.length)return t;if("string"==typeof e&&-1===e.indexOf(i)||"number"==typeof e)return t[e]=s,t;var r=function(t,e){return Array.isArray(t)||(t="string"!=typeof t||""===t.trim()?[]:t.split(e).filter(Boolean)),t}(e,i);if(0===r.length)return t;for(var n=t,h=r.length,o=0;o<h-1;o++){var u=r[o],p=n[u];a(p)||(n[u]={}),n=n[u]}n[r[h-1]]=s}(window,"RexPlugins.StateManager",h),o},"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();