phaser4-rex-plugins
Version:
2 lines (1 loc) • 8.03 kB
JavaScript
var t,e;t=void 0,e=function(){var t=function(t,e,i){return"__BASE"===i?`${t},${e}`:`${i}:${t},${e}`};function e(t){if(null===t||"object"!=typeof t)return t;if(Array.isArray(t))return t.map((t=>e(t)));if(t instanceof Date)return new Date(t);if(t instanceof RegExp)return new RegExp(t);if(Object.getPrototypeOf(t)!==Object.prototype)return t;const i={};for(let s in t)t.hasOwnProperty(s)&&(i[s]=e(t[s]));return i}const i=Phaser.Utils.Objects.IsPlainObject,s=Phaser.Utils.Objects.GetValue;var r=function(t){return"string"==typeof t&&(t=n[t]),t};const n={scale:0,repeat:1};var o=function(t,e){return 0===t||t===this.columns.count-1||0===e||e===this.rows.count-1},a=function(){},h={_beginDraw:a,_drawImage:a,_drawTileSprite:a,_endDraw:a,setGetFrameNameCallback:function(e){return void 0===e&&(e=t),this.getFrameNameCallback=e,this},setBaseTexture:function(t,i,s,r){Array.isArray(i)&&(r=s,s=i,i=void 0),null==i&&(i="__BASE"),"number"==typeof s&&arguments.length>=6?(s=[arguments[2],void 0,arguments[3]],r=[arguments[4],void 0,arguments[5]]):void 0===s&&void 0===r&&void 0!==this.columns.data&&void 0!==this.rows.data?(s=this.columns.data,r=this.rows.data):(s=e(s),r=e(r)),this.textureKey=t,this.baseFrameName=i,this.columns.data=s,this.columns.count=s?s.length:0,this.columns.stretch=0,this.columns.minWidth=0,this.columns.scale=1,this.rows.data=r,this.rows.count=r?r.length:0,this.rows.stretch=0,this.rows.minHeight=0,this.rows.scale=1;var n=this.scene.sys.textures.get(t);if(!n)return this.clear(),this;if(!s||!r)return this.clear(),this;for(var o=n.get(i),a=o.width,h=0,c=0,d=s.length;c<d;c++)void 0===s[c]?h++:"number"==typeof s[c]?a-=s[c]:a-=s[c].width;var u=h>0?a/h:0,l=o.height,v=0;for(c=0,d=r.length;c<d;c++)void 0===r[c]?v++:"number"==typeof r[c]?l-=r[c]:l-=r[c].width;for(var m,f,g,p,w,x=v?l/v:0,y=0,b=0,P=0,S=r.length;P<S;P++){void 0===r[P]&&(r[P]=x),"number"==typeof r[P]&&(r[P]={height:r[P],stretch:P%2}),g=(m=r[P]).height,this.rows.stretch+=0|m.stretch,this.rows.minHeight+=m.stretch>0?0:g,y=0,c=0;for(var F=s.length;c<F;c++){if(void 0===s[c]&&(s[c]=u),"number"==typeof s[c]&&(s[c]={width:s[c],stretch:c%2}),p=(f=s[c]).width,0===P&&(this.columns.stretch+=0|f.stretch,this.columns.minWidth+=f.stretch>0?0:p),p>=1&&g>=1){var j=typeof(w=this.getFrameNameCallback(c,P,i));"string"!==j&&"number"!==j||n.add(w,0,y+o.cutX,b+o.cutY,p,g)}y+=p}b+=g}return this.updateTexture(),this},updateTexture:function(){if(this.clear(),void 0===this.textureKey)return this;var t=this.scene.sys.textures.get(this.textureKey);if(!t)return this;var e,i,s,r,n,o,a,h=this.columns.minWidth*this.maxFixedPartScaleX,c=this.rows.minHeight*this.maxFixedPartScaleY,d=this.width-h,u=this.height-c,l=d>=0?this.maxFixedPartScaleX:this.width/h,v=u>=0?this.maxFixedPartScaleY:this.height/c;if(this.preserveRatio){var m=Math.min(l,v);if(l>m){var f=(l-m)*h;d>=0?d+=f:d=f,l=m}if(v>m){var g=(v-m)*c;u>=0?u+=g:u=g,v=m}}this.columns.scale=l,this.rows.scale=v,e=d>0&&this.columns.stretch>0?d/this.columns.stretch:0,i=u>0&&this.rows.stretch>0?u/this.rows.stretch:0;var p=0,w=0;this._beginDraw();for(var x=0,y=this.rows.count;x<y;x++){a=0===(n=this.rows.data[x]).stretch?n.height*v:i*n.stretch,p=0;for(var b=0,P=this.columns.count;b<P;b++)o=0===(r=this.columns.data[b]).stretch?r.width*l:e*r.stretch,s=this.getFrameNameCallback(b,x,this.baseFrameName),t.has(s)&&o>0&&a>0&&(0==(0===n.stretch&&0===r.stretch||0===this.getStretchMode(b,x)?0:1)?this._drawImage(this.textureKey,s,p,w,o,a):this._drawTileSprite(this.textureKey,s,p,w,o,a)),p+=o;w+=a}this._endDraw()},setStretchMode:function(t){return i(t)?(this.stretchMode.edge=r(s(t,"edge",0)),this.stretchMode.internal=r(s(t,"internal",0))):(t=r(t),this.stretchMode.edge=t,this.stretchMode.internal=t),this},getStretchMode:function(t,e){return o.call(this,t,e)?this.stretchMode.edge:this.stretchMode.internal},setPreserveRatio:function(t){return null==t&&(t=!0),this.preserveRatio=t,this},setMaxFixedPartScale:function(t,e){return void 0===e&&(e=t),this.maxFixedPartScaleX=t,this.maxFixedPartScaleY=e,this}};const c=Phaser.Utils.Objects.IsPlainObject,d=Phaser.Utils.Objects.GetValue,u=Phaser.Game;var l=function(t){return t instanceof u};const v=Phaser.Scene;var m=function(t){return t instanceof v},f=function(t){return null==t||"object"!=typeof t?null:l(t)?t:l(t.game)?t.game:m(t)?t.sys.game:m(t.scene)?t.scene.sys.game:void 0};const g=Phaser.GameObjects;var p=void 0,w=function(t,e){if(p||(p={},f(t).events.once("destroy",(function(){for(var t in p)p[t].destroy();p=void 0}))),!p.hasOwnProperty(e)){var i=f(t).scene.systemScene;(t=new g[e](i)).setOrigin(0),p[e]=t}return p[e]};const x=Phaser.GameObjects.RenderTexture;class y extends(function(t,e){class i extends t{constructor(t,i,s,r,n,o,a,h,u,l){if(c(i)?(i=d(l=i,"x",0),s=d(l,"y",0),r=d(l,"width",1),n=d(l,"height",1),o=d(l,"key",void 0),a=d(l,"baseFrame",void 0),h=d(l,"columns",void 0),u=d(l,"rows",void 0)):c(r)?(r=d(l=r,"width",1),n=d(l,"height",1),o=d(l,"key",void 0),a=d(l,"baseFrame",void 0),h=d(l,"columns",void 0),u=d(l,"rows",void 0)):c(o)?(o=d(l=o,"key",void 0),a=d(l,"baseFrame",void 0),h=d(l,"columns",void 0),u=d(l,"rows",void 0)):c(a)?(a=d(l=a,"baseFrame",void 0),h=d(l,"columns",void 0),u=d(l,"rows",void 0)):Array.isArray(a)?(l=u,u=h,h=a,a=d(l,"baseFrame",void 0)):c(h)&&(h=d(l=h,"columns",void 0),u=d(l,"rows",void 0)),void 0===a&&(a=d(l,"frame",void 0)),void 0===h){var v=d(l,"leftWidth",void 0),m=d(l,"rightWidth",void 0);void 0!==v&&void 0!==m&&(h=[v,void 0,m])}if(void 0===u){var f=d(l,"topHeight",void 0),g=d(l,"bottomHeight",void 0);void 0!==f&&void 0!==g&&(u=[f,void 0,g])}super(t),this.type=e,this.setPosition(i,s).setSize(r,n).setOrigin(.5,.5),this.columns={},this.rows={},this.stretchMode={},this._tileSprite=void 0,this._image=void 0,this.setGetFrameNameCallback(d(l,"getFrameNameCallback",void 0)),this.setStretchMode(d(l,"stretchMode",0)),this.setPreserveRatio(d(l,"preserveRatio",!0));var p=d(l,"maxFixedPartScale",1),w=d(l,"maxFixedPartScaleX",p),x=d(l,"maxFixedPartScaleY",void 0);this.setMaxFixedPartScale(w,x),this.setBaseTexture(o,a,h,u)}get minWidth(){return this.columns.minWidth}get minHeight(){return this.rows.minHeight}get fixedPartScaleX(){return this.columns.scale}get fixedPartScaleY(){return this.rows.scale}resize(t,e){return this.width===t&&this.height===e||(super.resize?super.resize(t,e):super.setSize(t,e),this.updateTexture()),this}get leftWidth(){return this.columns.data[0]}get rightWidth(){return this.columns.data[this.columns.count-1]}get topHeight(){return this.rows.data[0]}get bottomHeight(){return this.rows.data[this.rows.count-1]}}return Object.assign(i.prototype,h),i}(x,"rexNinePatch")){}var b={_drawImage:function(t,e,i,s,r,n){var o=w(this,"Image").setTexture(t,e).setDisplaySize(r,n);this.draw(o,i,s).render()},_drawTileSprite:function(t,e,i,s,r,n){var o=w(this,"TileSprite").setTexture(t,e).setSize(r,n);this.draw(o,i,s).render()}};function P(t,e,i,s,r,n,o,a,h){var c=new y(this.scene,t,e,i,s,r,n,o,a,h);return this.scene.add.existing(c),c}Object.assign(y.prototype,b);const S=Phaser.GameObjects.BuildGameObject;function F(t,e){void 0===t&&(t={}),void 0!==e&&(t.add=e);var i=new y(this.scene,t);return S(this.scene,i,t),i}var j=function(t){return null==t||""===t||0===t.length};class O extends Phaser.Plugins.BasePlugin{constructor(t){super(t),t.registerGameObject("rexNinePatch",P,F)}start(){this.game.events.on("destroy",this.destroy,this)}}return function(t,e,i,s){if(void 0===s&&(s="."),"object"==typeof t)if(j(e)){if(null==i)return;"object"==typeof i&&(t=i)}else{"string"==typeof e&&(e=e.split(s));var r=e.pop(),n=function(t,e,i){var s=t;if(j(e));else{var r;"string"==typeof e&&(e=e.split("."));for(var n=0,o=e.length;n<o;n++){var a;null!=s[r=e[n]]&&"object"==typeof s[r]||(a=n===o-1?void 0===i?{}:i:{},s[r]=a),s=s[r]}}return s}(t,e);n[r]=i}}(window,"RexPlugins.GameObjects.NinePatch",y),O},"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).rexninepatchplugin=e();