phaser3-rex-plugins
Version:
2 lines (1 loc) • 11.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.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 a{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(a.prototype,t);const h=Phaser.GameObjects.Text,o=Phaser.GameObjects.BitmapText;var g=function(t){return t instanceof o?2:function(t){return t instanceof h}(t)?0:1},d=function(t,e,s){switch(g(t)){case 0:s=t.getWrappedText(e);break;case 1:s=t.getPenManager(e,s);break;case 2:s=t.maxWidth>0?t.setText(e).getTextBounds().wrappedText.split("\n"):e.split("\n")}return s},u=function(t){return null==t?t="":Array.isArray(t)?t=t.join("\n"):"number"==typeof t&&(t=t.toString()),t},p=function(t){var e=this.lines.lines;if(!e||e.length<=t)return this;var s=this.pageHeight;if(this.pageStartIndexes.push(t),s<=0)return this;for(var i=t,n=e.length;i<n;){var r=this.getLineIndexByHeight(i,s);if(r<=i&&(r=i+1),r>=n)break;this.pageStartIndexes.push(r),i=r}return this},l={clearText(){return this.sections.length=0,this.pageStartIndexes.length=0,this.lines.length=0,this},appendPage(t){var e=this.totalLinesCount;this.sections.push(u(t)),t=this.sections.join("\n"),this.lines=d(this.parent,t,this.lines);var s=this.totalLinesCount-e;if(s<=0)return this;if(this.isVariableLineHeightMode)p.call(this,e);else{var i;i=this.pageLinesCount>0?Math.ceil(s/this.pageLinesCount):1;for(var n=0;n<i;n++)this.pageStartIndexes.push(e+n*this.pageLinesCount)}return this},setText(t,e){void 0===e&&(e=!0),e&&this.resetIndex(),this.clearText();for(var s=u(t).split(this.pageBreak),i=0,n=s.length;i<n;i++)this.appendPage(s[i]);return this},appendText(t){var e=this.content+u(t);return this.setText(e,!1),this}};const x=Phaser.Math.Clamp;var v={resetIndex(){return this.pageIndex=-1,this.startLineIndex=-1,this.endLineIndex=void 0,this},setPageIndex(t){return t=x(t,0,this.lastPageIndex),this.pageIndex=t,this.startLineIndex=this.pageStartIndexes[t],this.endLineIndex=this.pageStartIndexes[t+1],this},getPage(t){return void 0===t&&(t=this.pageIndex),this.setPageIndex(t).getLines(this.startLineIndex,this.endLineIndex)},getNextPage(){return this.getPage(this.pageIndex+1)},getPreviousPage(){return this.getPage(this.pageIndex-1)},getFirstPage(){return this.getPage(0)},getLastPage(){return this.getPage(this.lastPageIndex)},setStartLineIndex(t){if(this.isVariableLineHeightMode){var e=this.pageHeight;if(e<=0)return this.startLineIndex=0,this.endLineIndex=this.totalLinesCount,this;var s=this.getLastStartLineIndexByHeight(e);t=x(t,0,s),this.startLineIndex=t;var i=this.getLineIndexByHeight(this.startLineIndex,e);i<=t&&(i=t+1),this.endLineIndex=i}else s=Math.max(this.totalLinesCount-this.pageLinesCount,0),t=x(t,0,s),this.startLineIndex=t,this.endLineIndex=t+this.pageLinesCount;return this},getPageByLineIndex(t){return this.setStartLineIndex(t).getLines(this.startLineIndex,this.endLineIndex)},getPageOfNextLine(){return this.getPageByLineIndex(this.startLineIndex+1)},getPageOfPreviousLine(){return this.getPageByLineIndex(this.startLineIndex-1)},getPageOfFirstLine(){return this.getPageByLineIndex(0)},getPageOfLastLine(){return this.getPageByLineIndex(this.totalLinesCount)}},c={showPage(t){return this.displayText(this.getPage(t)),this},showNextPage(){return this.displayText(this.getNextPage()),this},showPreviousPage(){return this.displayText(this.getPreviousPage()),this},showFirstPage(){return this.displayText(this.getFirstPage()),this},showLastPage(){return this.displayText(this.getLastPage()),this},show(){return this.displayText(this.getLines()),this},showPageByLineIndex(t){return this.displayText(this.getPageByLineIndex(t)),this},showNextLine(){return this.displayText(this.getPageOfNextLine()),this},showPreviousLine(){return this.displayText(this.getPageOfPreviousLine()),this},showFirstLine(){return this.displayText(this.getPageOfFirstLine()),this},showLastLine(){return this.displayText(this.getPageOfLastLine()),this},displayText(t){!function(t,e){switch(g(t)){case 0:var s=(n=t.style).wordWrapWidth,i=n.wordWrapCallback;n.wordWrapWidth=0,n.wordWrapCallback=void 0,t.setText(e),n.wordWrapWidth=s,n.wordWrapCallback=i;break;case 1:var n,r=(n=t.style).wrapMode;n.wrapMode=0,t.setText(e),n.wrapMode=r;break;case 2:var a=t._maxWidth;t._maxWidth=0,t.setText(e),t._maxWidth=a}}(this.parent,t)}},L={getLines:function(t,e){if(void 0===t&&(t=this.startLineIndex),void 0===e)if(this.isVariableLineHeightMode){var s=this.pageHeight;s<=0?e=this.totalLinesCount:(e=this.getLineIndexByHeight(t,s))<=t&&(e=t+1)}else{var i=this.pageLinesCount;e=i>0?t+i:this.totalLinesCount}var n;switch(e>this.totalLinesCount&&(e=this.totalLinesCount),this.textObjectType){case 0:case 2:n=this.lines.slice(t,e).join("\n");break;case 1:var r=this.lines.getLineStartIndex(t),a=this.lines.getLineEndIndex(e-1);((n=this.lines.getSliceTagText(r,a,!0)).match(/\n/g)||[]).length>e-t-1&&(n=n.substring(0,n.length-1))}return n}};Object.assign(L,l,v,c);const f=Phaser.Utils.Objects.GetValue;Phaser.Math.Clamp;class m extends a{constructor(t,e){super(t,{eventEmitter:!1}),this.textObjectType=g(this.parent),this.pageStartIndexes=[],this.lines=d(this.parent,""),this.sections=[],this.resetFromJSON(e)}resetFromJSON(t){this.setMaxLines(f(t,"maxLines",void 0)),this.setPageBreak(f(t,"pageBreak","\f\n")),this.setText(f(t,"text","")),this.startLineIndex=f(t,"start",-1),this.endLineIndex=f(t,"end",void 0);var e=f(t,"page");return void 0===e?this.resetIndex():this.setPageIndex(e),this}toJSON(){return{maxLines:this.maxLines,text:this.content,start:this.startLineIndex,end:this.endLineIndex,page:this.pageIndex,pageBreak:this.pageBreak}}shutdown(t){if(!this.isShutdown){switch(this.textObjectType){case 0:case 2:this.lines.length=0;break;case 1:this.lines.destroy()}this.pageStartIndexes.length=0,this.sections.length=0,this.lines=void 0,this.pageStartIndexes=void 0,this.sections=void 0,super.shutdown(t)}}setMaxLines(t){return this.maxLines=t,this}setPageBreak(t){return this.pageBreak=t,this}get pageCount(){return this.pageStartIndexes.length}get lastPageIndex(){return this.pageCount-1}get isFirstPage(){return this.pageIndex<=0}get isLastPage(){return this.pageIndex>=this.pageCount-1}get pageHeight(){var t=this.parent.padding;return this.parent.height-t.top-t.bottom}get totalLinesCount(){return this.lines?this.lines.length:0}get pageLinesCount(){if(void 0!==this.maxLines)return this.maxLines;if(this.isVariableLineHeightMode)throw new Error("pageLinesCount is not supported when isVariableLineHeightMode is enabled");var t;switch(this.textObjectType){case 0:case 1:var e=this.parent.style.maxLines;t=e>0?e:Math.floor(function(t){var e,s,i;switch(g(t)){case 0:e=t.height-t.padding.top-t.padding.bottom,s=t.lineSpacing,i=t.style.metrics.fontSize+t.style.strokeThickness;break;case 1:e=t.height-t.padding.top-t.padding.bottom,s=t.lineSpacing,i=t.style.metrics.fontSize;break;case 2:e=t.height,s=0;var n=t.fontSize/t.fontData.size;i=t.fontData.lineHeight*n}return(e+s)/(i+s)}(this.parent));break;case 2:t=this.totalLinesCount}return t}get isVariableLineHeightMode(){return 1===this.textObjectType&&!this.parent.style.fixedLineHeightMode&&void 0===this.maxLines&&this.parent.style.maxLines<=0}getPageIndexByLineIndex(t){var e=this.pageStartIndexes.length;if(0===e)return 0;if(null==t||t<=this.pageStartIndexes[0])return 0;for(var s=e-1;s>=0;s--)if(t>=this.pageStartIndexes[s])return s;return 0}getLineIndexByHeight(t,e){var s=this.lines.lines;if(!s||0===s.length)return 0;if(t<0)t=0;else if(t>=s.length)return s.length;for(var i=s[t].startOffset+e,n=t,r=s.length-1,a=s.length;n<=r;){var h=n+r>>1;s[h].endOffset>i?(a=h,r=h-1):n=h+1}return a}getLastStartLineIndexByHeight(t){if(t<=0)return 0;var e=this.lines.lines;if(!e||0===e.length)return 0;var s=e[e.length-1].endOffset-t;return s<=0?0:this.getLineIndexByStartOffsetCeil(s)}getLineIndexByStartOffset(t){var e=this.lines.lines;if(!e||0===e.length)return 0;if(t<=e[0].startOffset)return 0;for(var s=0,i=e.length-1,n=0;s<=i;){var r=s+i>>1;e[r].startOffset<=t?(n=r,s=r+1):i=r-1}return n}getLineIndexByStartOffsetCeil(t){var e=this.lines.lines;if(!e||0===e.length)return 0;if(t<=e[0].startOffset)return 0;for(var s=0,i=e.length-1,n=e.length-1;s<=i;){var r=s+i>>1;e[r].startOffset>=t?(n=r,i=r-1):s=r+1}return n}get isFirstLine(){return this.startLineIndex<=0}get isLastLine(){return this.endLineIndex===this.totalLinesCount}get content(){return this.sections.join(this.pageBreak)}}Object.assign(m.prototype,L);class y extends Phaser.Plugins.BasePlugin{constructor(t){super(t)}start(){this.game.events.on("destroy",this.destroy,this)}add(t,e){return new m(t,e)}}return y},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rextextpageplugin=e();