UNPKG

phaser4-rex-plugins

Version:
2 lines (1 loc) 7.7 kB
var e,t;e=void 0,t=function(){var e={setEventEmitter(e,t){return void 0===t&&(t=Phaser.Events.EventEmitter),this._privateEE=!0===e||void 0===e,this._eventEmitter=this._privateEE?new t:e,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(e){return this._eventEmitter&&e&&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 t=Phaser.Scene;var s=function(e){return e instanceof t};const i=Phaser.Game;var n=function(e){return e instanceof i};const r=Phaser.Utils.Objects.GetValue;class h{constructor(e,t){this.setParent(e),this.isShutdown=!1,this.setEventEmitter(r(t,"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(e){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(e){this.shutdown(e)}onEnvDestroy(){this.destroy(!0)}onParentDestroy(e,t){this.destroy(t)}setParent(e){var t;return this.parent=e,this.scene=null==(t=e)||"object"!=typeof t?null:s(t)?t:t.scene&&s(t.scene)?t.scene:t.parent&&t.parent.scene&&s(t.parent.scene)?t.parent.scene:null,this.game=function(e){return null==e||"object"!=typeof e?null:n(e)?e:n(e.game)?e.game:s(e)?e.sys.game:s(e.scene)?e.scene.sys.game:void 0}(e),this}}Object.assign(h.prototype,e);const o=Phaser.Input.Keyboard.KeyCodes;var a={};for(var u in o)a[o[u]]=u;const y=Phaser.Input.Keyboard.Key,d=Phaser.Utils.Array.Add,p=Phaser.Utils.Array.Remove;class l extends y{constructor(e,t){super(e,t),this.ports=[]}destroy(){this.unplugAllKeyObject(),this.ports=void 0,super.destroy()}plugKeyObject(e){return e.refKeyHub&&e.refKeyHub.unplugKeyObject(e),d(this.ports,e,0,(function(e){e.on("down",this.update,this).on("up",this.update,this),e.refKeyHub=this,this.update(c),this.plugin.emit("plug",this.key,e)}),this),this}unplugKeyObject(e){return e.refKeyHub!==this||p(this.ports,e,(function(e){e.off("down",this.update,this).off("up",this.update,this),e.refKeyHub=void 0,this.update(c),this.plugin.emit("unplug",this.key,e)}),this),this}unplugAllKeyObject(){for(var e=0,t=this.ports;e<t;e++){var s=this.ports[e];s.off("down",this.update,this).off("up",this.update,this),s.refKeyHub=void 0}return this.ports.length=0,this.update(c),this}getKeyObjects(){return this.ports}update(e){if(void 0===e.cancelled&&(e.cancelled=0,e.stopImmediatePropagation=function(){e.cancelled=1},e.stopPropagation=function(){e.cancelled=-1}),-1!==e.cancelled){for(var t=!1,s=0,i=this.ports.length;s<i;s++)if(this.ports[s].isDown){t=!0;break}if(this.isDown!==t){if((e=c).timeStamp=Date.now(),e.keyCode=this.keyCode,t?this.onDown(e):this.onUp(e),!e.cancelled){var n=(t?"keydown-":"keyup-")+a[this.keyCode];this.plugin.emit(n,e)}e.cancelled||(n=t?"keydown":"keyup",this.plugin.emit(n,e))}e.cancelled=0}else e.cancelled=0}}var c={timeStamp:0,keyCode:0,altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1,location:0};const v={0:"ZERO",1:"ONE",2:"TWO",3:"THREE",4:"FOUR",5:"FIVE",6:"SIX",7:"SEVEN",8:"EIGHT",9:"NINE",CAPSLOCK:"CAPS_LOCK",ESCAPE:"ESC",PAGEUP:"PAGE_UP",PAGEDOWN:"PAGE_DOWN",QUOTE:"QUOTES",BACKQUOTE:"BACKTICK",BRACKETLEFT:"OPEN_BRACKET",BRACKETRIGHT:"CLOSED_BRACKET",SEMICOLON:"COLON",SLASH:"FORWARD_SLASH",BACKSLASH:"BACK_SLASH"};var f={defineKeyStart(e){return this.defineKeyStop(),this.defineTargetKey=e,this.emit("definekey.start",e),this},defineKeyStop(e){if(!this.defineTargetKey)return this;this.plugKeyObject(e,this.defineTargetKey);var t=this.defineTargetKey;return this.defineTargetKey=null,this.emit("definekey.complete",t,e),this},defineKeyCancel(){return this.defineTargetKey?(this.defineTargetKey=null,this.emit("definekey.complete"),this):this},listenFromKeyboard(){var e=this,t=this.scene.input.keyboard,s=function(s){var i=function(e){var t=e.code.toUpperCase();return t in v?v[t]:t.startsWith("KEY")?t=t.substring(3):t.startsWith("ARROW")?t=t.substring(5):t.startsWith("DIGIT")?(t=t.substring(5),t=v[t]):t.startsWith("NUMPAD")?((t=t.substring(6))in v&&(t=v[t]),`NUMPAD_${t}`):t.startsWith("SHIFT")?"SHIFT":t.startsWith("CONTROL")?"CTRL":t.startsWith("ALT")?"ALT":t}(s),n=t.addKey(i);e.defineKeyStop(n)};return t.once("keydown",s),e.once("definekey.complete",(function(){t.off("keydown",s)})),this}},E={};Object.assign(E,f);const m=Phaser.Utils.Objects.GetValue,g=Phaser.Input.Keyboard.KeyCodes;class K extends h{constructor(e,t){void 0===t&&(t={}),super(e,t),this.keys={},this.singleMode=m(t,"singleMode",!1)}shutdown(e){if(!this.isShutdown){for(var t in this.keys)this.keys[t].destroy();this.keys=void 0,super.shutdown(e)}}plugKeyObject(e,t){if(!e)return t&&(s=this.addKey(t)).unplugAllKeyObject(),this;e.hasOwnProperty("key")||(e.key=a[e.keyCode]),t||(t=e.key);var s=this.addKey(t);return this.singleMode&&s.unplugAllKeyObject(),s.plugKeyObject(e),this}plugKeyObjects(e){if(Array.isArray(e))for(var t=0,s=e.length;t<s;t++)this.plugKeyObject(e[t]);else for(var i in e)this.plugKeyObject(e[i],i);return this}unplugKeyObject(e){var t=e.refKeyHub;return t&&t.unplugKeyObject(e),this}unplugKeyObjects(e){if(Array.isArray(e))for(var t=0,s=e.length;t<s;t++)this.unplugKeyObjects(e[t]);else for(var i in e)this.unplugKeyObjects(e[i]);return this}addKey(e){var t;if("string"==typeof e?t=g[e.toUpperCase()]:e=a[t=e],!this.keys.hasOwnProperty(t)){var s=new l(this,t);this.keys[t]=s,s.key=e}return this.keys[t]}addKeys(e){var t={};if("string"==typeof e)for(var s=0,i=(e=e.split(",")).length;s<i;s++)(n=e[s].trim())&&(t[n]=this.addKey(n));else for(var n in e)t[n]=this.addKey(e[n]);return t}createCursorKeys(){return this.addKeys({up:g.UP,down:g.DOWN,left:g.LEFT,right:g.RIGHT,space:g.SPACE,shift:g.SHIFT})}getKeyObjects(e){if(void 0===e){var t={};for(var s in this.keys){var i=this.keys[s],n=i.getKeyObjects();this.singleMode?t[i.key]=n[0]:t[i.key]=n}return t}return n=this.addKey(e).getKeyObjects(),this.singleMode?n[0]:n}}Object.assign(K.prototype,E);class O extends Phaser.Plugins.BasePlugin{constructor(e){super(e)}start(){this.game.events.on("destroy",this.destroy,this)}add(e,t){return new K(e,t)}}return O},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).rexkeyshubplugin=t();