UNPKG

phaser4-rex-plugins

Version:
2 lines (1 loc) 7.62 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):[]}};const e=Phaser.Scene;var s=function(t){return t instanceof e};const i=Phaser.Game;var n=function(t){return t instanceof i};const r=Phaser.Utils.Objects.GetValue;class h{constructor(t,e){this.setParent(t),this.isShutdown=!1,this.setEventEmitter(r(e,"eventEmitter",!0)),this.parent&&(this.parent===this.scene?this.scene.sys.events.once("shutdown",this.onEnvDestroy,this):this.parent===this.game?this.game.events.once("shutdown",this.onEnvDestroy,this):this.parent.once&&this.parent.once("destroy",this.onParentDestroy,this))}shutdown(t){this.isShutdown||(this.parent&&(this.parent===this.scene?this.scene.sys.events.off("shutdown",this.onEnvDestroy,this):this.parent===this.game?this.game.events.off("shutdown",this.onEnvDestroy,this):this.parent.once&&this.parent.off("destroy",this.onParentDestroy,this)),this.destroyEventEmitter(),this.parent=void 0,this.scene=void 0,this.game=void 0,this.isShutdown=!0)}destroy(t){this.shutdown(t)}onEnvDestroy(){this.destroy(!0)}onParentDestroy(t,e){this.destroy(e)}setParent(t){var e;return this.parent=t,this.scene=null==(e=t)||"object"!=typeof e?null:s(e)?e:e.scene&&s(e.scene)?e.scene:e.parent&&e.parent.scene&&s(e.parent.scene)?e.parent.scene:null,this.game=function(t){return null==t||"object"!=typeof t?null:n(t)?t:n(t.game)?t.game:s(t)?t.sys.game:s(t.scene)?t.scene.sys.game:void 0}(t),this}}Object.assign(h.prototype,t);const o=Phaser.Utils.Objects.GetValue;class a extends h{constructor(t,e){super(t,e),this._isRunning=!1,this.isPaused=!1,this.tickingState=!1,this.setTickingMode(o(e,"tickingMode",1))}boot(){2!==this.tickingMode||this.tickingState||this.startTicking()}shutdown(t){this.isShutdown||(this.stop(),this.tickingState&&this.stopTicking(),super.shutdown(t))}setTickingMode(t){"string"==typeof t&&(t=u[t]),this.tickingMode=t}startTicking(){this.tickingState=!0}stopTicking(){this.tickingState=!1}get isRunning(){return this._isRunning}set isRunning(t){this._isRunning!==t&&(this._isRunning=t,1===this.tickingMode&&t!=this.tickingState&&(t?this.startTicking():this.stopTicking()))}start(){return this.isPaused=!1,this.isRunning=!0,this}pause(){return this.isRunning&&(this.isPaused=!0,this.isRunning=!1),this}resume(){return this.isPaused&&(this.isPaused=!1,this.isRunning=!0),this}stop(){return this.isPaused=!1,this.isRunning=!1,this}complete(){this.isPaused=!1,this.isRunning=!1,this.emit("complete",this.parent,this)}}const u={no:0,lazy:1,always:2};class d{constructor(t,e,s,i,n){this.key=t,this.start=e,this.end=s,this.step=i,this.items=n,this._current=e}reset(){this._current=this.start}get isEnd(){return this.step>=0?this._current>=this.end:this._current<=this.end}get length(){return this.step>=0&&this.start>this.end||this.step<0&&this.start<this.end?0:Math.floor(this.end-this.start)+1}next(){return this.isEnd?this._current=this.start:this._current+=this.step,this}get current(){return this.items?this.items[this._current]:this._current}}class c{constructor(){this.indexes=[],this.length=0,this.reset()}reset(){for(var t=0,e=this.indexes.length;t<e;t++)this.indexes[t].reset();return this.firstPass=!0,this.currentCount=0,this}addNumberLoop(t,e,s,i){return void 0===i&&(i=s>=e?1:-1),this.indexes.push(new d(t,e,s,i)),this.length=this._getLength(),this}addItemsLoop(t,e,s){void 0===s&&(s=!1);var i=e.length-1,n=s?i:0,r=s?0:i,h=s?-1:1;return this.indexes.push(new d(t,n,r,h,e)),this.length=this._getLength(),this}addLoop(t){return this.indexes.push(new d(t.key,t.start,t.end,t.step,t.items)),this.length=this._getLength(),this}removeLoops(){return this.indexes.length=0,this.length=0,this}_getLength(){for(var t=void 0,e=0,s=this.indexes.length;e<s;e++)void 0===t?t=this.indexes[e].length:t*=this.indexes[e].length;return void 0===t?0:t}get progress(){return this.currentCount/this.length}get isEnd(){for(var t=this.indexes.length-1;t>=0;t--)if(!this.indexes[t].isEnd)return!1;return!0}next(){for(var t,e,s=this.indexes.length-1;s>=0&&(e=(t=this.indexes[s]).isEnd,t.next(),e);s--);return this}getCurrent(t){var e;void 0===t&&(t={});for(var s=this.indexes.length-1;s>=0;s--)t[(e=this.indexes[s]).key]=e.current;return t}getNext(t){return this.firstPass?this.firstPass=!1:this.next(),this.getCurrent(t),this.currentCount++,t}}const p=Phaser.Utils.Objects.GetValue;class l extends a{constructor(t,e){super(t,e),this.deltaPeriod=1e3/t.game.loop.targetFps,this.deltaPercentage=1,this.loopIndexGenerator=new c,this.currentIndexes={},this.resetFromJSON(e),this.boot()}resetFromJSON(t){return this.setCallback(p(t,"callback",this.callback),p(t,"scope",this.scope)),this.setDeltaPercentage(p(t,"deltaPercentage",this.deltaPercentage)),this.loopIndexGenerator.reset(),function(t){if("object"!=typeof t||null===t)return t;if(Array.isArray(t))t.length=0;else for(var e in t)delete t[e]}(this.currentIndexes),this}startTicking(){super.startTicking(),this.scene.sys.events.on("preupdate",this.preupdate,this)}stopTicking(){super.stopTicking(),this.scene&&this.scene.sys.events.off("preupdate",this.preupdate,this)}setCallback(t,e){return this.callback=t,this.scope=e,this}setDeltaPercentage(t){return this.deltaPercentage=t,this}addNumberLoop(t,e,s,i){return this.loopIndexGenerator.addNumberLoop(t,e,s,i),this}addItemsLoop(t,e,s){return this.loopIndexGenerator.addItemsLoop(t,e,s),this}addLoop(t){return this.loopIndexGenerator.addLoop(t),this}get curTime(){return(new Date).getTime()}get progress(){return this.loopIndexGenerator.progress}preupdate(t,e){if(this.isRunning&&this.callback){var s,i=this.curTime,n=this.deltaPeriod*this.deltaPercentage;this.emit("tickstart",this);do{if(this.loopIndexGenerator.isEnd)return void this.complete();this.currentIndexes=this.loopIndexGenerator.getNext(this.currentIndexes),this.scope?this.callback.call(this.scope,this.currentIndexes,this):this.callback(this.currentIndexes,this),s=this.curTime-i>=n}while(!s);this.emit("tickend",this)}}}class g extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t,e){return new l(t,e)}}return g},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexloopinticksplugin=e();