phaser4-rex-plugins
Version:
2 lines (1 loc) • 7.06 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):[]}};const e=Phaser.Scene;var i=function(t){return t instanceof e};const s=Phaser.Game;var n=function(t){return t instanceof s};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:i(e)?e:e.scene&&i(e.scene)?e.scene:e.parent&&e.parent.scene&&i(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:i(t)?t.sys.game:i(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},c=Phaser.Utils.Objects.GetValue;class p extends a{constructor(t,e){super(t,e);var i=this.scene?"update":"step";this.tickEventName=c(e,"tickEventName",i),this.isSceneTicker=!d(this.tickEventName)}startTicking(){super.startTicking(),this.isSceneTicker?this.scene.sys.events.on(this.tickEventName,this.update,this):this.game.events.on(this.tickEventName,this.update,this)}stopTicking(){super.stopTicking(),this.isSceneTicker&&this.scene?this.scene.sys.events.off(this.tickEventName,this.update,this):this.game&&this.game.events.off(this.tickEventName,this.update,this)}}var d=function(t){return"step"===t||"poststep"===t};const v=Phaser.Math.Vector2;class g{constructor(){this.position=new v,this.velocity=new v}init(t,e){return this.velocity.reset(),this.position.set(t,e),this}update(t,e,i){return this.velocity.set(t-this.position.x,e-this.position.y),0===this.velocity.x&&0===this.velocity.y||this.velocity.setToPolar(this.velocity.angle(),this.velocity.length()/i),this.position.set(t,e),this}}const l=Phaser.Utils.Objects.GetValue,m=Phaser.Math.Vector2,y=Phaser.Math.Distance.Between,E=Phaser.Math.Angle.BetweenPoints;class _ extends p{constructor(t,e){super(t,e),this._target=void 0,this.mySpeedMonitor=new g,this.targetSpeedMonitor=new g,this.predictedPosition=new m,this.resetFromJSON(e),this.boot()}resetFromJSON(t){return this.isRunning=l(t,"isRunning",!1),this.setEnable(l(t,"enable",!0)),this.setTarget(l(t,"target",void 0)),this}toJSON(){return{isRunning:this.isRunning,duration:this.duration,tickingMode:this.tickingMode}}shutdown(t){this.isShutdown||(this.setTarget(),super.shutdown(t))}setEnable(t){return null==t&&(t=!0),this.enable=t,this}get target(){return this._target}set target(t){return null==t&&(t=void 0),this.target===t||(this.target&&this.target.off("destroy",this.onTargetDestroy,this),t&&t.once("destroy",this.onTargetDestroy,this),this._target=t),this.isRunning?void 0===this.target&&super.stop():void 0!==this.target&&(this.mySpeedMonitor.init(this.parent.x,this.parent.y),this.targetSpeedMonitor.init(this.target.x,this.target.y),super.start()),this}setTarget(t){return this.target=t,this}onTargetDestroy(t,e){return this.setTarget(),this}update(t,e){if(!this.isRunning)return this;if(void 0===this.target)return this;if(!this.enable)return this.predictedPosition.copy(this.target),this;var i=this.parent;e/=1e3,this.mySpeedMonitor.update(i.x,i.y,e),this.targetSpeedMonitor.update(this.target.x,this.target.y,e);var s=this.targetSpeedMonitor.velocity.x-this.mySpeedMonitor.velocity.x,n=this.targetSpeedMonitor.velocity.y-this.mySpeedMonitor.velocity.y;if(0===s&&0===n)this.predictedPosition.copy(this.target);else{var r=y(0,0,s,n);t=y(this.target.x,this.target.y,i.x,i.y)/r,this.predictedPosition.set(this.target.x+this.targetSpeedMonitor.velocity.x*t,this.target.y+this.targetSpeedMonitor.velocity.y*t)}return this}get predictedAngle(){return E(this.parent,this.predictedPosition)}}class f extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}add(t,e){return new _(t,e)}}return f},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexinterceptionplugin=e();