phaser4-rex-plugins
Version:
2 lines (1 loc) • 6.3 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.Utils.Array.Add,s=Phaser.Utils.Array.AddAt,r=Phaser.Utils.Array.Remove,i=Phaser.Math.Clamp;var a={setTargets(t,e){return t&&void 0!==e&&(t=function(t,e){return t.reduce((function(t,s,r){return r%e==0&&t.push([]),t[t.length-1].push(s),t}),[])}(t,e)),this.targets=t,this.focus(this.focusedTarget),this},getTargetIndex(t,e){null==e&&(e={x:void 0,y:void 0});var s=this.targets;if(Array.isArray(s)&&!Array.isArray(s[0]))-1!==(a=s.indexOf(t))&&(e.x=a,e.y=0);else for(var r=0,i=s.length;r<i;r++){var a;if(-1!==(a=s[r].indexOf(t))){e.x=a,e.y=r;break}}return e},addTarget(t){var s=this.targets||[],r=Array.isArray(s)&&!Array.isArray(s[0])?s:s[s.length-1];return e(r,t),this.setTargets(s),this},insertTarget(t,e,r){var a=this.targets||[];return Array.isArray(a)&&!Array.isArray(a[0])?s(a,t,e):void 0===r?(Array.isArray(t)||(t=[t]),e=i(e,0,a.length-1),a.splice(e,0,t)):(r=i(r,0,a.length-1),s(a[r],t,e)),this.setTargets(a),this},removeTarget(t){var e=this.targets||[];if(Array.isArray(e)&&!Array.isArray(e[0]))r(e,t);else for(var s=0,i=e.length;s<i;s++)r(e[s],t);return this.setTargets(this.targets),this}};const n=Phaser.Math.Wrap;var h=function({startX:t,startY:e,backward:s}){var r=this.targets,i=!Array.isArray(r[0]);e=i?0:n(e,0,r.length),u=i?r:r[e];for(var a,h=t=n(t,0,u.length),l=e;!a;){var u;if(a=(u=i?r:r[l])[h],!this.isTargetFocusEnable(a)&&(a=null,s?(h-=1)<0&&(h=u.length-1,i||(l=n(l-1,0,r.length-1))):(h+=1)>=u.length&&(h=0,i||(l=n(l+1,0,r.length-1))),t===h&&e===l))return this.focusIndex.x=void 0,this.focusIndex.y=void 0,null}return this.focusIndex.x=h,this.focusIndex.y=l,a},l={isTargetFocusEnable(t){var e=!0;return this.getFocusEnableCallback&&(e=this.getFocusEnableCallback(t)),e},getFirst(){return h.call(this,{startX:0,startY:0,backward:!1})},getLast(){return h.call(this,{startX:-1,startY:-1,backward:!0})},getNext(){return void 0===this.focusIndex.x?this.getFirst():h.call(this,{startX:this.focusIndex.x+1,startY:this.focusIndex.y,backward:!1})},getPrevious(){return void 0===this.focusIndex.x?this.getLast():h.call(this,{startX:this.focusIndex.x-1,startY:this.focusIndex.y,backward:!0})},getNextRow(){return void 0===this.focusIndex.x?this.getFirst():h.call(this,{startX:this.focusIndex.x,startY:this.focusIndex.y+1,backward:!1})},getPreviousRow(){return void 0===this.focusIndex.x?this.getLast():h.call(this,{startX:this.focusIndex.x,startY:this.focusIndex.y-1,backward:!0})}},u=function(t){if(t===this.focusedTarget)return this;o.call(this),this.focusedTarget=t,t&&this.emit("focus",t)},o=function(){if(!this.focusedTarget)return this;var t=this.focusedTarget;this.focusedTarget=null,this.emit("blur",t)},c={first(){return this.enable?(u.call(this,this.getFirst()),this):this},last(){return this.enable?(u.call(this,this.getLast()),this):this},next(){return this.enable?(u.call(this,this.getNext()),this):this},previous(){return this.enable?(u.call(this,this.getPrevious()),this):this},nextRow(){return this.enable?(u.call(this,this.getNextRow()),this):this},previousRow(){return this.enable?(u.call(this,this.getPreviousRow()),this):this},focus(t){if(!this.enable)return this;if(!t)return this.blur(),this;if(!this.isTargetFocusEnable(t))return this;var e=this.getTargetIndex(t);return void 0===e.x?(this.blur(),this):(this.focusIndex.x=e.x,this.focusIndex.y=e.y,t!==this.focusedTarget&&u.call(this,t),this)},blur(){return this.enable?(o.call(this),this):this}},v={};Object.assign(v,a,l,c);const d=Phaser.Utils.Objects.GetValue,g=Phaser.Utils.Objects.IsPlainObject;class f{constructor(t,e){g(t)&&void 0===e&&(e=t,t=void 0);var s=d(e,"eventEmitter",void 0),r=d(e,"EventEmitterClass",void 0);this.setEventEmitter(s,r),this.scene=t,this.focusedTarget=void 0,this.focusIndex={x:void 0,y:void 0},this.resetFromJSON(e)}resetFromJSON(t){this.setEnable(d(t,"enable",!0)),this.setTargets(d(t,"targets"),d(t,"columns"));var e=d(t,"getFocusEnableCallback");if(e)this.setGetFocusEnableCallback(e);else{var s=d(t,"focusEnableDataKey");if(s)this.setFocusEnableDataKey(s);else{var r=d(t,"focusEnableKey");r&&this.setFocusEnableKey(r)}}}destroy(){this.targets=void 0}setEnable(t){return void 0===t&&(t=!0),this.enable=t,this}setFocusEnableDataKey(t){var e;return t&&(e=function(e){return e.getData(t)}),this.setGetFocusEnableCallback(e),this}setFocusEnableKey(t){var e;return t&&(e=function(e){return e[t]}),this.setGetFocusEnableCallback(e),this}setGetFocusEnableCallback(t){return this.getFocusEnableCallback=t,this}getFocusedTarget(){return this.focusedTarget}}Object.assign(f.prototype,t,v);class E extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t){return new f(t)}}return E},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexgroupnavigatorplugin=e();