phaser4-rex-plugins
Version:
2 lines (1 loc) • 3.47 kB
JavaScript
var e,t;e=void 0,t=function(){var e=0;const t=Phaser.Geom.Rectangle,s=Phaser.Geom.Rectangle,i=Phaser.Geom.Rectangle,r=Phaser.Geom.Rectangle.CopyFrom;class o{constructor(e){this.scene=e,this.cameras=new Set,this.scrollX=0,this.scrollY=0,this.zoom=1,this._innerViewport=void 0,this._outerViewport=void 0,this._shrinkOuterViewport=void 0,this.boot()}boot(){var t=this.scene;(function(t){return t.sys.scale.scaleMode===Phaser.Scale.RESIZE||(0===e&&console.warn("Scale outer only works with RESIZE scale mode"),e++,!1)})(t)&&(t.sys.scale.on("resize",this.scale,this),t.sys.game.events.once("prestep",this.start,this)),t.sys.events.on("shutdown",(function(){this.cameras.clear()}),this)}destroy(){this.stop(),this.cameras.clear(),this.cameras=void 0,this.scene=void 0,this._innerViewport=void 0,this._outerViewport=void 0,this._shrinkOuterViewport=void 0}start(){return 0===this.cameras.size&&this.add(this.scene.sys.cameras.main),this.scale(),this}stop(){var e=this.scene;return e.sys.scale.off("resize",this.scale,this),e.sys.game.events.off("prestep",this.start,this),this}add(e){return this.cameras.add(e),this.scale(),this}get innerViewport(){return this._innerViewport}get outerViewport(){return this._outerViewport}getShrinkedOuterViewport(e,t,s){return"number"!=typeof t&&(s=t,t=void 0),void 0===s?s=new i:!0===s&&(void 0===this._shrinkOuterViewport&&(this._shrinkOuterViewport=new i),s=this._shrinkOuterViewport),r(this._outerViewport,s),function(e,t,s){var i=e.width,r=e.height,o=i/r;void 0!==t&&o>t&&(e.width=r*t),void 0!==s&&o<s&&(e.height=i/s)}(s,e,t),s.centerX=this._outerViewport.centerX,s.centerY=this._outerViewport.centerY,s}onFirstTick(){0===this.cameras.size&&this.add(this.scene.sys.cameras.main),this.scale()}scale(){return function(e,t){void 0===t&&(t={});var s=e.game.config,i=s.width,r=s.height,o=0===r?1:i/r,h=e.sys.scale.displaySize,n=h.width,c=h.height,a=0===c?1:n/c;t.scrollX=(i-n)/2,t.scrollY=(r-c)/2,t.zoom=o<a?c/r:n/i}(this.scene,this),this.cameras.forEach((function(e,t){e.zoomX=this.zoom,e.zoomY=this.zoom,e.scrollX=this.scrollX,e.scrollY=this.scrollY}),this),this._innerViewport=function(e,s){void 0===s&&(s=new t);var i=e.scene.game.config,r=i.width,o=i.height;return s.setTo(0,0,r,o),s}(this,this._innerViewport),this._outerViewport=function(e,t){void 0===t&&(t=new s);var i=1/e.zoom,r=e.scene.sys.scale.displaySize;t.width=r.width*i,t.height=r.height*i;var o=e.scene.game.config;return t.centerX=o.width/2,t.centerY=o.height/2,t}(this,this._outerViewport),this}}class h extends Phaser.Plugins.ScenePlugin{constructor(e,t){super(e,t),this.scaleOuter=new o(e)}boot(){this.scene.sys.events.on("destroy",this.destroy,this)}destroy(){this.scaleOuter.destroy(),this.scaleOuter=void 0,super.destroy()}add(e){return this.scaleOuter.add(e),this}scale(){return 0===this.scaleOuter.cameras.size&&this.add(this.scene.sys.cameras.main),this.scaleOuter.scale(),this}stop(){return this.scaleOuter.stop(),this}get scrollX(){return this.scaleOuter.scrollX}get scrollY(){return this.scaleOuter.scrollY}get zoom(){return this.scaleOuter.zoom}get innerViewport(){return this.scaleOuter.innerViewport}get outerViewport(){return this.scaleOuter.outerViewport}getShrinkedOuterViewport(e,t,s){return this.scaleOuter.getShrinkedOuterViewport(e,t,s)}}return h},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).rexscaleouterplugin=t();