bard-legends-framework 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';var actionsLib=require('actions-lib');require('reflect-metadata');var helpersLib=require('helpers-lib'),L=require('pixi.js'),scriptEngineLib=require('script-engine-lib'),W=require('p2');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var L__namespace=/*#__PURE__*/_interopNamespace(L);var W__default=/*#__PURE__*/_interopDefault(W);var nr=Object.defineProperty;var h=(o,t)=>nr(o,"name",{value:t,configurable:true});function K(){return class{static{h(this,"GatewayBase");}}}h(K,"Gateway");function bi(o,t){let e=o.prototype,i=Object.getPrototypeOf(t);for(let r of Reflect.ownKeys(i)){if(typeof r!="string"||r==="constructor")continue;let s=t[r];if(typeof s=="function"){if(Object.prototype.hasOwnProperty.call(e,r))throw new Error(`Gateway "${o.name}": method "${r}" is already registered by another controller.`);e[r]=s.bind(t);}}}h(bi,"bindControllerToGateway");var _=class{static{h(this,"BardLegendsHardReset");}static{this.ƀeu=new actionsLib.Action;}static{this.onHardReset=this.ƀeu.notifier;}static hardReset(){actionsLib.ActionLib.hardReset(),this.ƀeu.trigger();}};function d(){return function(o){let t=T.ƀed(o);o.$meta={paramtypes:t,type:"service"};}}h(d,"ServiceDecorator");var T=class{static{h(this,"Service");}static{this.ƀiw=new Map;}static get(t){let e=this.ƀiw.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀij(t.$meta.paramtypes);e=new t(...i),this.ƀiw.set(t,e);}return e}static ƀed(t){let e=Reflect.getMetadata("design:paramtypes",t)||[];return e.some(i=>!i)&&console.error(`Circular dependency: ${t.name}`),e.some(i=>i.name==="Object")&&console.error(`Some injected parameters are failed to resolve. Check if it is imported as value, if not remove the "type" keyword. Class: "${t.name}"`),e}static ƀij(t){return t.map(i=>{if(i&&i.$meta?.type==="service")return this.get(i);throw new Error(`Injected parameter has to be decorated with @ServiceDecorator(), class: "${i.name}"`)})}};_.onHardReset.subscribe(()=>{T.ƀiw=new Map;}).attachToRoot();function Z(o){return function(t){let e=T.ƀed(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=T.ƀij(e);i.some(s=>s===void 0)&&console.error(i,e,t.name);let r=new t(...i);bi(o,r);}t.$meta={type:"controller"};}}h(Z,"ControllerDecorator");var y=class o{static{h(this,"UpdateCycle");}static{this.ƀab=new actionsLib.Action;}static{this.beforeSceneUpdateAction=this.ƀab.notifier;}static{this.ƀio=new actionsLib.Action;}static{this.sceneUpdateAction=this.ƀio.notifier;}static{this.ƀf=new actionsLib.Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀkb=0;}static{this.ƀkj=void 0;}static wait(t){let e=this.ƀkb+t;return actionsLib.SingleEvent.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀkj)this.ƀkj=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀkj=void 0;}static triggerUpdateTick(t){this.ƀkj&&(t=this.ƀkj(this.ƀkb,t)),this.ƀkb+=t,this.ƀfv=t,t>0&&(o.ƀab.trigger({time:this.ƀkb,delta:t}),o.ƀio.trigger({time:this.ƀkb,delta:t}),o.ƀf.trigger({time:this.ƀkb,delta:t}));}static get lastDelta(){return this.ƀfv}static{this.ƀfv=0;}};_.onHardReset.subscribe(()=>{y.ƀab.clear(),y.ƀio.clear(),y.ƀf.clear(),y.ƀkj=void 0,y.ƀkb=0;}).attachToRoot();var A=class o{static{h(this,"EntityStoreHelper");}static{this.ƀau=new Map;}static registerEntityClass(t){this.ƀau.set(t.id,new Map);}static registerEntity(t){let e=this.ƀau.get(t.classID);if(!e)throw new Error(`EntityStoreHelper: No entity class is found. Be sure that entity is decorated with EntityDecorator! Name: "${t.constructor.name}"`);e.set(t.id,t);}static unregisterEntity(t,e){let i=t.id;this.ƀau.get(i)?.delete(e);}static getEntity(t,e){return this.ƀau.get(t.id)?.get(e)}static getSingleton(t){let e=o.getEntities(t);if(e.length>1)throw new Error(`EntityStoreHelper: selectSingleton is called with an entity that has multiple instances! Name: "${this.name}"`);return e[0]}static getSingletonOrFail(t){let e=this.getSingleton(t);if(!e)throw new Error(`EntityStoreHelper: selectSingleton is called with an entity that has no instance! Name: "${this.name}"`);return e}static getEntities(t){let e=this.ƀau.get(t.id);return Array.from(e.values())}};_.onHardReset.subscribe(()=>{A.ƀau.clear();}).attachToRoot();function ke(o){return function(t){t.$meta={paramtypes:T.ƀed(t),viewInstances:new Map,entity:o.entity,type:"view"},et.registerView(t,o.entity);}}h(ke,"ViewDecorator");var dt=class extends actionsLib.IDAttachable{static{h(this,"View");}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}constructor(){super(),this.attachToRoot(),this.ƀcx=et.entityID,this.ƀek().set(this.ƀcx,this);}destroy(){this.destroyed||(super.destroy(),this.ƀek().delete(this.ƀcx));}update(t,e){}ƀek(){return this.constructor.$meta.viewInstances}};var et=class o{static{h(this,"EntityViewsHelper");}static{this.ƀks=new Map;}static registerView(t,e){o.ƀks.has(e)||o.ƀks.set(e,[]);let i=o.ƀks.get(e);i&&i.push(t),A.getEntities(e).forEach(s=>{this.ƀcf(s,t);});}static ƀcf(t,e){try{let i=T.ƀij(e.$meta.paramtypes.slice(1));o.entityID=t.id;let r=new e(t,...i);t.destroyed?r.destroy():t.ƀkr.ƀkt.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀcw=t,this.ƀkt=[];}createViews(){if(!this.ƀcw.destroyed){let t=o.ƀks.get(this.ƀcw.constructor);t&&t.forEach(e=>{o.ƀcf(this.ƀcw,e);});}}updateViews(t,e){for(let i=0;i<this.ƀkt.length;i++){let r=this.ƀkt[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀkt.forEach(t=>{t.destroy();});}};_.onHardReset.subscribe(()=>{et.ƀks=new Map;}).attachToRoot();function ft(){return function(o){o.$meta={type:"entity"},A.registerEntityClass(o);}}h(ft,"EntityDecorator");var U=class extends actionsLib.IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return A.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=A.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return A.getEntities(this)}constructor(){super(),this.ƀkr=new et(this),A.registerEntity(this),y.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀkr.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀkr.destroyViews(),A.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀkr.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀkr.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀkr.createViews(),this}update(t,e){}};var ut=class o extends U{static{h(this,"SingletonEntity");}static{this.ƀcg=new WeakMap;}static ƀdp(t){let e=o.ƀcg.get(t);return e||(e=new actionsLib.SingleAction,o.ƀcg.set(t,e)),e}static ƀkg(t){o.ƀcg.delete(t);}static getInstanceAsync(){let t=A.getSingleton(this);return t&&!t.destroyed?actionsLib.SingleEvent.instant(t):o.ƀdp(this).toSingleEvent()}static continuesSubscription(){let t=h((e,i)=>{this.getInstanceAsync().tap(s=>{e({type:"open",value:s}),s.onDestroy().tap(()=>{e({type:"close",value:s}),t(e,i);}).attach(i);}).attach(i);},"subscribe");return actionsLib.Sequence.create((e,i)=>t(e,i.attachable))}static getInstance(){return A.getSingleton(this)}static getInstanceOrFail(){return A.getSingletonOrFail(this)}constructor(){if(super(),this.constructor.getEntities().length>1)throw this.attachToRoot(),new Error(`SingletonEntity: entity is decorated as singleton but multiple instances are created! "${this}"`);this.onDestroy().tap(()=>o.ƀkg(this.constructor)).attachToRoot(),o.ƀdp(this.constructor).resolve(this);}};function wr(){return function(o){return o.$meta={paramtypes:T.ƀed(o),type:"scene"},o}}h(wr,"SceneDecorator");var ae=class o extends actionsLib.IDAttachable{static{h(this,"Scene");}static{this.ƀfo=new actionsLib.Variable(false);}static{this.isTransitioning=this.ƀfo.notifier;}static{this.ƀb=new actionsLib.Variable(void 0);}static{this.activeScene=this.ƀb.notifier;}static getActiveSceneOrFail(){if(!o.ƀb.value)throw new Error("Scene: getActiveSceneOrFail is called when there is no active scene!");return o.ƀb.value}static cancelActiveScene(){return o.ƀb.value?o.ƀb.value.animateAndClose():actionsLib.SingleEvent.instant()}static isActive(){return o.ƀb.value instanceof this}static getInstance(){return o.ƀb.value instanceof this?o.ƀb.value:void 0}static getInstanceOrFail(){if(!o.ƀb.value)throw new Error("Scene: getInstance is called when there is no active scene!");if(!(o.ƀb.value instanceof this))throw new Error(`Scene: getInstance is called while "${this.name}" was not the active scene. Current scene is: "${o.ƀb.value}"!`);return o.ƀb.value}static open(...t){if(o.ƀfo.value)throw new Error("Scene: you cannot open a scene while a scene is transitioning!");if(o.ƀb.value)throw new Error("Scene: you cannot open a scene while there is already another active scene!");let e=t[0];o.ƀfo.value=true;let i=T.ƀij(this.$meta.paramtypes),r=new this(...i).attachToRoot();return o.ƀb.set(r),r.init(e).map(()=>(o.ƀfo.value=false,r)).chainToRoot()}constructor(){super(),this.ƀgs=new actionsLib.SingleAction,this.onClose=this.ƀgs.notifier,y.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(o.ƀb.value!==this)throw new Error("Internal Error: Scene instance is accessed while it is not the active scene!");if(o.ƀfo.value)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");o.ƀfo.value=true;let e=t[0];return this.animateAndClose().map(()=>(this.ƀgs.resolve(e),e)).chainToRoot()}animateAndClose(){return this.prepareToClose().tap(()=>{super.destroy(),o.ƀb.set(void 0),o.ƀfo.value=false;}).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};_.onHardReset.subscribe(()=>{ae.ƀb.set(void 0);}).attachToRoot();exports.ContainerEventType=void 0;(function(o){o.Click="click",o.MouseOver="mouseover",o.MouseOut="mouseout",o.PointerDown="pointerdown",o.PointerUp="pointerup",o.PointerUpOutside="pointerupoutside",o.PointerMove="pointermove",o.PointerCancel="pointercancel",o.PointerOver="pointerover",o.PointerOut="pointerout",o.PointerEnter="pointerenter",o.PointerLeave="pointerleave",o.Added="added",o.Removed="removed",o.Update="update",o.Change="change",o.Wheel="wheel";})(exports.ContainerEventType||(exports.ContainerEventType={}));exports.Cursor=void 0;(function(o){o.Default="default",o.Pointer="pointer";})(exports.Cursor||(exports.Cursor={}));var le=class extends actionsLib.IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀgm=false,this.ƀdc=false,this.ƀim=1,this.ƀv=1,this.ƀhu=new L__namespace.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new helpersLib.Vector(this.ƀhu.width,this.ƀhu.height)}setSize(t){return this.ƀhu.width=t.x,this.ƀhu.height=t.y,this}setPosition(t,e){if(e?.holdFrom){let i=this.ƀhu.getLocalBounds(),r=new helpersLib.Vector(this.ƀhu.scale.x,this.ƀhu.scale.y),s=new helpersLib.Vector(i.x,i.y).multiply(r),n=new helpersLib.Vector(i.width,i.height).multiply(r),a=s.add(n.multiply(e.holdFrom));t=t.subtract(a);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new helpersLib.Vector(this.ƀhu.x,this.ƀhu.y)}set position(t){this.ƀhu.position=t;}get x(){return this.ƀhu.x}set x(t){this.ƀhu.x=t;}get y(){return this.ƀhu.y}set y(t){this.ƀhu.y=t;}on(t){return actionsLib.Sequence.create(e=>{let i=h(r=>{if(t===exports.ContainerEventType.Wheel){let n=r.deltaY;e({deltaY:n});}else e(void 0);},"handle");return this.ƀhu.on(t,i),()=>this.ƀhu.off(t,i)}).notIdle()}setRotation(t){return this.rotation=t,this}get rotation(){return new helpersLib.Radian(this.ƀhu.rotation)}set rotation(t){this.ƀhu.rotation=t.value;}get rotationValue(){return this.rotation.value}set rotationValue(t){this.rotation=new helpersLib.Radian(t);}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.ƀhu.zIndex}set zIndex(t){this.ƀhu.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new helpersLib.Radian(this.ƀhu.skew.x)}set skewX(t){this.ƀhu.skew.x=t.value;}setSkewY(t){return this.skewY=t,this}get skewY(){return new helpersLib.Radian(this.ƀhu.skew.y)}set skewY(t){this.ƀhu.skew.y=t.value;}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.ƀhu.sortableChildren}set sortableChildren(t){this.ƀhu.sortableChildren=t;}setAlpha(t){return this.ƀhu.alpha=t,this}get alpha(){return this.ƀhu.alpha}set alpha(t){this.ƀhu.alpha=t;}setInteractive(t){return this.interactive=t,this}get interactive(){return this.ƀhu.interactive}set interactive(t){t?this.ƀhu.eventMode="dynamic":this.ƀhu.eventMode="none";}setCursor(t){return this.cursor=t,this}get cursor(){return this.ƀhu.cursor}set cursor(t){this.ƀhu.cursor=t;}getMask(){throw new Error("ContainerAttributes: mask is not available!")}setMask(t){return t?(this.ƀhu.addChild(t.ƀhu),this.ƀhu.mask=t.getMask(),this.ƀgf=t):(this.ƀgf&&this.ƀhu.removeChild(this.ƀgf.ƀhu),this.ƀhu.mask=null),this}hitTest(t){if(this.ƀhu.parent)if(this.ƀhu.hitArea){let e=this.ƀhu.toLocal(t);return this.ƀhu.hitArea.contains(e.x,e.y)}else return this.ƀhu.getBounds().contains(t.x,t.y);else return false}get boundingBox(){let t=this.ƀhu.getLocalBounds();return new helpersLib.Rectangle(new helpersLib.Vector(t.x,t.y),new helpersLib.Vector(t.x+t.width,t.y+t.height))}ignoreBounds(t=true){return t?(this.ƀhe||(this.ƀhe=this.ƀhu.calculateBounds),this.ƀhu.calculateBounds=()=>this.ƀhu._bounds.clear()):this.ƀhe&&(this.ƀhu.calculateBounds=this.ƀhe),this}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgm}set mirror(t){this.ƀgm=t,this.ƀkk();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdc}set flip(t){this.ƀdc=t,this.ƀkk();}setScale(t){return this.scale=t,this}get scale(){return this.ƀim}set scale(t){this.ƀim=t,this.ƀkk();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀv}set aspectRatio(t){this.ƀv=t,this.ƀkk();}ƀkk(){this.ƀhu.scale.set(this.ƀim,this.ƀim),this.ƀv<1?this.ƀhu.scale.x*=this.ƀv:this.ƀv>1&&(this.ƀhu.scale.y/=this.ƀv),this.ƀgm&&(this.ƀhu.scale.x*=-1),this.ƀdc&&(this.ƀhu.scale.y*=-1);}};var O=2;exports.BlendMode=void 0;(function(o){o[o.Normal=0]="Normal",o[o.Add=1]="Add",o[o.Screen=3]="Screen",o[o.Luminosity=16]="Luminosity",o[o.ColorDodge=7]="ColorDodge";})(exports.BlendMode||(exports.BlendMode={}));var ce=class{static{h(this,"GaussianValuesHelper");}static ƀdh(t,e){let i=e*e,r=1/(helpersLib.PI_360*i),s=-(t*t)/(2*i);return r*Math.exp(s)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),r=.005*i,s=helpersLib.NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<r)i-=l*2;else return true}),n=1/i,a=s.map(l=>l*n);return this.ƀbp(a)}static getValuesForLinearSamplingGauss(t){if(t===0)return [{offset:0,multiplier:1}];if(t===1)return [{offset:0,multiplier:.5},{offset:1,multiplier:.25}];{let e=helpersLib.ArrayHelper.createIntegerArray(Math.ceil(t*.75)).map(r=>this.ƀdh(r,t*.4)),i=e.reduce((r,s)=>r+s,0);return i=i*2-e[0],e=e.map(r=>r/i),this.ƀbp(e)}}static ƀbp(t){let e=[{offset:0,multiplier:t[0]}];for(let i=1;i<t.length-1;i+=2){let r=t[i]+t[i+1],s=i+t[i+1]/r;e.push({offset:s,multiplier:r});}if(t.length%2===0){let i=t[t.length-1],r=t.length-1;e.push({offset:r,multiplier:i});}return e}};var Ti=class Je extends L__namespace.Filter{static{h(this,"BlurFilterPass");}static ƀej(){return `
1
+ 'use strict';var actionsLib=require('actions-lib');require('reflect-metadata');var helpersLib=require('helpers-lib'),j=require('pixi.js'),scriptEngineLib=require('script-engine-lib'),$=require('p2');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var j__namespace=/*#__PURE__*/_interopNamespace(j);var $__default=/*#__PURE__*/_interopDefault($);var ur=Object.defineProperty;var h=(o,t)=>ur(o,"name",{value:t,configurable:true});function Q(){return class{static{h(this,"GatewayBase");}}}h(Q,"Gateway");function Ei(o,t){let e=o.prototype,i=Object.getPrototypeOf(t);for(let r of Reflect.ownKeys(i)){if(typeof r!="string"||r==="constructor")continue;let s=t[r];if(typeof s=="function"){if(Object.prototype.hasOwnProperty.call(e,r))throw new Error(`Gateway "${o.name}": method "${r}" is already registered by another controller.`);e[r]=s.bind(t);}}}h(Ei,"bindControllerToGateway");var I=class{static{h(this,"BardLegendsHardReset");}static{this.ƀfa=new actionsLib.Action;}static{this.onHardReset=this.ƀfa.notifier;}static hardReset(){actionsLib.ActionLib.hardReset(),this.ƀfa.trigger();}};function d(){return function(o){let t=E.ƀej(o);o.$meta={paramtypes:t,type:"service"};}}h(d,"ServiceDecorator");var E=class{static{h(this,"Service");}static{this.ƀjk=new Map;}static get(t){let e=this.ƀjk.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀiy(t.$meta.paramtypes);e=new t(...i),this.ƀjk.set(t,e);}return e}static ƀej(t){let e=Reflect.getMetadata("design:paramtypes",t)||[];return e.some(i=>!i)&&console.error(`Circular dependency: ${t.name}`),e.some(i=>i.name==="Object")&&console.error(`Some injected parameters are failed to resolve. Check if it is imported as value, if not remove the "type" keyword. Class: "${t.name}"`),e}static ƀiy(t){return t.map(i=>{if(i&&i.$meta?.type==="service")return this.get(i);throw new Error(`Injected parameter has to be decorated with @ServiceDecorator(), class: "${i.name}"`)})}};I.onHardReset.subscribe(()=>{E.ƀjk=new Map;}).attachToRoot();function q(o){return function(t){let e=E.ƀej(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=E.ƀiy(e);i.some(s=>s===void 0)&&console.error(i,e,t.name);let r=new t(...i);Ei(o,r);}t.$meta={type:"controller"};}}h(q,"ControllerDecorator");var g=class o{static{h(this,"UpdateCycle");}static{this.ƀad=new actionsLib.Action;}static{this.beforeSceneUpdateAction=this.ƀad.notifier;}static{this.ƀjd=new actionsLib.Action;}static{this.sceneUpdateAction=this.ƀjd.notifier;}static{this.ƀf=new actionsLib.Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀkv=0;}static{this.ƀld=void 0;}static wait(t){let e=this.ƀkv+t;return actionsLib.SingleEvent.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀld)this.ƀld=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀld=void 0;}static triggerUpdateTick(t){this.ƀld&&(t=this.ƀld(this.ƀkv,t)),this.ƀkv+=t,this.ƀgb=t,t>0&&(o.ƀad.trigger({time:this.ƀkv,delta:t}),o.ƀjd.trigger({time:this.ƀkv,delta:t}),o.ƀf.trigger({time:this.ƀkv,delta:t}));}static get lastDelta(){return this.ƀgb}static{this.ƀgb=0;}};I.onHardReset.subscribe(()=>{g.ƀad.clear(),g.ƀjd.clear(),g.ƀf.clear(),g.ƀld=void 0,g.ƀkv=0;}).attachToRoot();var B=class o{static{h(this,"EntityStoreHelper");}static{this.ƀax=new Map;}static registerEntityClass(t){this.ƀax.set(t.id,new Map);}static registerEntity(t){let e=this.ƀax.get(t.classID);if(!e)throw new Error(`EntityStoreHelper: No entity class is found. Be sure that entity is decorated with EntityDecorator! Name: "${t.constructor.name}"`);e.set(t.id,t);}static unregisterEntity(t,e){let i=t.id;this.ƀax.get(i)?.delete(e);}static getEntity(t,e){return this.ƀax.get(t.id)?.get(e)}static getSingleton(t){let e=o.getEntities(t);if(e.length>1)throw new Error(`EntityStoreHelper: selectSingleton is called with an entity that has multiple instances! Name: "${this.name}"`);return e[0]}static getSingletonOrFail(t){let e=this.getSingleton(t);if(!e)throw new Error(`EntityStoreHelper: selectSingleton is called with an entity that has no instance! Name: "${this.name}"`);return e}static getEntities(t){let e=this.ƀax.get(t.id);return Array.from(e.values())}};I.onHardReset.subscribe(()=>{B.ƀax.clear();}).attachToRoot();function Je(o){return function(t){t.$meta={paramtypes:E.ƀej(t),viewInstances:new Map,entity:o.entity,type:"view"},st.registerView(t,o.entity);}}h(Je,"ViewDecorator");var mt=class extends actionsLib.IDAttachable{static{h(this,"View");}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}constructor(){super(),this.attachToRoot(),this.ƀdb=st.entityID,this.ƀeq().set(this.ƀdb,this);}destroy(){this.destroyed||(super.destroy(),this.ƀeq().delete(this.ƀdb));}update(t,e){}ƀeq(){return this.constructor.$meta.viewInstances}};var st=class o{static{h(this,"EntityViewsHelper");}static{this.ƀlm=new Map;}static registerView(t,e){o.ƀlm.has(e)||o.ƀlm.set(e,[]);let i=o.ƀlm.get(e);i&&i.push(t),B.getEntities(e).forEach(s=>{this.ƀcj(s,t);});}static ƀcj(t,e){try{let i=E.ƀiy(e.$meta.paramtypes.slice(1));o.entityID=t.id;let r=new e(t,...i);t.destroyed?r.destroy():t.ƀll.ƀln.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀda=t,this.ƀln=[];}createViews(){if(!this.ƀda.destroyed){let t=o.ƀlm.get(this.ƀda.constructor);t&&t.forEach(e=>{o.ƀcj(this.ƀda,e);});}}updateViews(t,e){for(let i=0;i<this.ƀln.length;i++){let r=this.ƀln[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀln.forEach(t=>{t.destroy();});}};I.onHardReset.subscribe(()=>{st.ƀlm=new Map;}).attachToRoot();function gt(){return function(o){o.$meta={type:"entity"},B.registerEntityClass(o);}}h(gt,"EntityDecorator");var z=class extends actionsLib.IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return B.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=B.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return B.getEntities(this)}constructor(){super(),this.ƀll=new st(this),B.registerEntity(this),g.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀll.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀll.destroyViews(),B.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀll.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀll.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀll.createViews(),this}update(t,e){}};var yt=class o extends z{static{h(this,"SingletonEntity");}static{this.ƀck=new WeakMap;}static ƀdv(t){let e=o.ƀck.get(t);return e||(e=new actionsLib.SingleAction,o.ƀck.set(t,e)),e}static ƀla(t){o.ƀck.delete(t);}static getInstanceAsync(){let t=B.getSingleton(this);return t&&!t.destroyed?actionsLib.SingleEvent.instant(t):o.ƀdv(this).toSingleEvent()}static continuesSubscription(){let t=h((e,i)=>{this.getInstanceAsync().tap(s=>{e({type:"open",value:s}),s.onDestroy().tap(()=>{e({type:"close",value:s}),t(e,i);}).attach(i);}).attach(i);},"subscribe");return actionsLib.Sequence.create((e,i)=>t(e,i.attachable))}static getInstance(){return B.getSingleton(this)}static getInstanceOrFail(){return B.getSingletonOrFail(this)}constructor(){if(super(),this.constructor.getEntities().length>1)throw this.attachToRoot(),new Error(`SingletonEntity: entity is decorated as singleton but multiple instances are created! "${this}"`);this.onDestroy().tap(()=>o.ƀla(this.constructor)).attachToRoot(),o.ƀdv(this.constructor).resolve(this);}};function Er(){return function(o){return o.$meta={paramtypes:E.ƀej(o),type:"scene"},o}}h(Er,"SceneDecorator");var ce=class o extends actionsLib.IDAttachable{static{h(this,"Scene");}static{this.ƀfu=new actionsLib.Variable(false);}static{this.isTransitioning=this.ƀfu.notifier;}static{this.ƀb=new actionsLib.Variable(void 0);}static{this.activeScene=this.ƀb.notifier;}static getActiveSceneOrFail(){if(!o.ƀb.value)throw new Error("Scene: getActiveSceneOrFail is called when there is no active scene!");return o.ƀb.value}static cancelActiveScene(){return o.ƀb.value?o.ƀb.value.ƀj():actionsLib.SingleEvent.instant()}static isActive(){return o.ƀb.value instanceof this}static getInstance(){return o.ƀb.value instanceof this?o.ƀb.value:void 0}static getInstanceOrFail(){if(!o.ƀb.value)throw new Error("Scene: getInstance is called when there is no active scene!");if(!(o.ƀb.value instanceof this))throw new Error(`Scene: getInstance is called while "${this.name}" was not the active scene. Current scene is: "${o.ƀb.value}"!`);return o.ƀb.value}static open(...t){if(o.ƀfu.value)throw new Error("Scene: you cannot open a scene while a scene is transitioning!");if(o.ƀb.value)throw new Error("Scene: you cannot open a scene while there is already another active scene!");let e=t[0];o.ƀfu.value=true;let i=E.ƀiy(this.$meta.paramtypes),r=new this(...i).attachToRoot();return o.ƀb.set(r),r.init(e).map(()=>(o.ƀfu.value=false,r)).chainToRoot()}constructor(){super(),this.ƀhg=new actionsLib.SingleAction,this.onClose=this.ƀhg.notifier,g.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(o.ƀb.value!==this)throw new Error("Internal Error: Scene instance is accessed while it is not the active scene!");if(o.ƀfu.value)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");o.ƀfu.value=true;let e=t[0];return this.ƀj().map(()=>(this.ƀhg.resolve(e),e)).chainToRoot()}ƀj(){return this.prepareToClose().tap(()=>{super.destroy(),o.ƀb.set(void 0),o.ƀfu.value=false;}).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};I.onHardReset.subscribe(()=>{ce.ƀb.set(void 0);}).attachToRoot();var H=class{static{h(this,"AnimationInterpolationFunctions");}static boomerangTime(t){return 1-Math.abs(t-.5)*2}static lineer(t){return t}static easeIn(t){return Math.pow(t,2)}static easeOut(t){return 1-Math.pow(1-t,2)}static easeInCubic(t){return Math.pow(t,3)}static easeOutCubic(t){return 1-Math.pow(1-t,3)}static easeInOut(t){return t<.5?2*t*t:(t-=1,1-2*t*t)}static easeInOutCubic(t){let e=2*t-2;return t<.5?4*Math.pow(t,3):(t-1)*Math.pow(e,2)+1}static blink(t){return t>.5?1:0}},Rr=class{static{h(this,"AnimationLineer");}start(){}multiplierFunction(t){return H.lineer(t)}},Cr=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return H.easeIn(t)}},Ar=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return H.easeOut(t)}},Ir=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return H.easeInOut(t)}},Or=class{static{h(this,"AnimationEaseInCubic");}start(){}multiplierFunction(t){return H.easeInCubic(t)}},Dr=class{static{h(this,"AnimationEaseOutCubic");}start(){}multiplierFunction(t){return H.easeOutCubic(t)}},Mr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return H.easeInOutCubic(t)}},Br=class{static{h(this,"AnimationBlink");}start(){}multiplierFunction(t){return H.blink(t)}},Ci=class{static{h(this,"AnimationFlicker");}start(){this.ƀkw=new Array(10).fill(0),helpersLib.Random.integerBetween(0,9),this.ƀkw[helpersLib.Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(helpersLib.Random.integerBetween(0,9),this.ƀkw[helpersLib.Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(helpersLib.Random.integerBetween(0,9),this.ƀkw[helpersLib.Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀkw[e]}},w=class{static{h(this,"Animations");}static{this.lineer=new Rr;}static{this.easeIn=new Cr;}static{this.easeOut=new Ar;}static{this.easeInOut=new Ir;}static{this.easeInCubic=new Or;}static{this.easeOutCubic=new Dr;}static{this.easeInOutCubic=new Mr;}static{this.blink=new Br;}};exports.ReAnimateHandlingType=void 0;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious";})(exports.ReAnimateHandlingType||(exports.ReAnimateHandlingType={}));exports.AnimationsCompletionHandlingType=void 0;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop";})(exports.AnimationsCompletionHandlingType||(exports.AnimationsCompletionHandlingType={}));var C=class o{static{h(this,"Animator");}static{this.ƀl=new WeakMap;}static ƀdo(t){let e=o.ƀl.get(t);return e||(e=new helpersLib.MapToWeakRefs,o.ƀl.set(t,e)),e}get animating(){return this.ƀhp!==void 0}get target(){return this.ƀkn}get value(){return this.ƀlf||(this.ƀlf=new actionsLib.Variable(this.ƀkn)),this.ƀlf.notifier}constructor(t,e,i){this.ƀfv=false,this.ƀjv=false,this.ƀkn=t,this.ƀhr={duration:200,animation:w.lineer,reAnimateHandling:exports.ReAnimateHandlingType.ThrowError,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState,...i},this.ƀm=helpersLib.Comparator.isArray(e)?e:[e],this.ƀgi(t,this.ƀm);}animate(t,e){let i={...this.ƀhr,...e},r=this.ƀhp;if(this.ƀhp)switch(i.reAnimateHandling){case exports.ReAnimateHandlingType.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case exports.ReAnimateHandlingType.IgnoreNewAnimation:return actionsLib.SingleEvent.instant().notIdle();case exports.ReAnimateHandlingType.CompletePrevious:this.ƀjm(i.completionHandling,this.ƀhp.ƀio,true);break;default:{throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return actionsLib.SingleEvent.create(n=>{this.ƀfv&&(this.ƀjv=true);let a=this.ƀm.reduce((c,p)=>(c[p]={ƀkh:this.ƀkn[p],ƀkp:t[p]},c),{}),l={ƀcv:i.duration,ƀcw:0,ƀio:a,ƀbi:i.completionHandling,ƀn:i.animation,ƀbh:n};if(l.ƀbi!==exports.AnimationsCompletionHandlingType.Loop&&this.ƀfr(l)){this.ƀhp=void 0,n(),r?.ƀbh(),this.ƀhp||(this.ƀlc?.destroy(),this.ƀlc=void 0);return}else l.ƀn.start();return this.ƀhp=l,this.ƀcz(),r?.ƀbh(),()=>{this.ƀhp===l&&(this.ƀkn instanceof actionsLib.Attachable&&this.ƀkn.destroyed||this.ƀjm(l.ƀbi,l.ƀio,true),this.ƀhp=void 0,this.ƀlc?.destroy(),this.ƀlc=void 0);}}).notIdle()}set(t){let e=false;for(let i=0;i<this.ƀm.length;i++){let r=this.ƀm[i];this.ƀkn[r]!==t[r]&&(e=true,this.ƀkn[r]=t[r]);}e&&this.ƀlf?.set(this.ƀkn),this.ƀhp?.ƀbh();}completeAnimation(t){if(this.ƀhp){t=t??this.ƀhp.ƀbi,this.ƀjm(t,this.ƀhp.ƀio,true);let e=this.ƀhp.ƀbh;this.ƀhp=void 0,e();}}ƀcz(){this.ƀlc||(this.ƀlc=g.beforeSceneUpdateAction.subscribe(t=>{this.ƀfv=true;try{let e=this.ƀhp;if(!e)return;e.ƀcw+=t.delta;let i=e.ƀcw>=e.ƀcv;if(i)if(e.ƀbi===exports.AnimationsCompletionHandlingType.Loop)e.ƀcw%=e.ƀcv,e.ƀn.start(),i=!1;else {this.ƀjm(e.ƀbi,e.ƀio,!1),this.ƀhp=void 0,e.ƀbh(),this.ƀhp||(this.ƀlc?.destroy(),this.ƀlc=void 0);return}if(!i){let r=e.ƀn.multiplierFunction(e.ƀcw/e.ƀcv),s=!1;for(let n=0;n<this.ƀm.length;n++){let a=this.ƀm[n],l=e.ƀio[a],p=(l.ƀkp-l.ƀkh)*r+l.ƀkh;p!==this.ƀkn[a]&&(s=!0,this.ƀkn[a]=p);}s&&this.ƀlf?.set(this.ƀkn);}}finally{this.ƀfv=false,this.ƀjv&&(this.ƀjv=false,this.ƀlc?.destroy(),this.ƀlc=void 0,this.ƀcz());}}).attachToRoot());}ƀfr(t){for(let e=0;e<this.ƀm.length;e++){let i=this.ƀm[e];if(this.ƀkn[i]!==t.ƀio[i].ƀkp)return false}return true}ƀjm(t,e,i){switch(t){case exports.AnimationsCompletionHandlingType.ReturnToOriginal:this.ƀja(e);break;case exports.AnimationsCompletionHandlingType.StayInCurrentState:i||this.ƀfy(e);break;case exports.AnimationsCompletionHandlingType.JumpToEnd:this.ƀfy(e);break;case exports.AnimationsCompletionHandlingType.Loop:this.ƀja(e);break;default:{throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀja(t){let e=false;for(let i=0;i<this.ƀm.length;i++){let r=this.ƀm[i];this.ƀkn[r]!==t[r].ƀkh&&(e=true,this.ƀkn[r]=t[r].ƀkh);}e&&this.ƀlf?.set(this.ƀkn);}ƀfy(t){let e=false;for(let i=0;i<this.ƀm.length;i++){let r=this.ƀm[i];this.ƀkn[r]!==t[r].ƀkp&&(e=true,this.ƀkn[r]=t[r].ƀkp);}e&&this.ƀlf?.set(this.ƀkn);}ƀgi(t,e){let i=o.ƀdo(t);for(let r of e){if(i.has(r))throw new Error(`Animator: target property is already animated! Target: "${JSON.stringify(t,void 0,2)}", Property: "${r}"`);i.set(r,this);}}};exports.ContainerEventType=void 0;(function(o){o.Click="click",o.MouseOver="mouseover",o.MouseOut="mouseout",o.PointerDown="pointerdown",o.PointerUp="pointerup",o.PointerUpOutside="pointerupoutside",o.PointerMove="pointermove",o.PointerCancel="pointercancel",o.PointerOver="pointerover",o.PointerOut="pointerout",o.PointerEnter="pointerenter",o.PointerLeave="pointerleave",o.Added="added",o.Removed="removed",o.Update="update",o.Change="change",o.Wheel="wheel";})(exports.ContainerEventType||(exports.ContainerEventType={}));exports.Cursor=void 0;(function(o){o.Default="default",o.Pointer="pointer";})(exports.Cursor||(exports.Cursor={}));var de=class extends actionsLib.IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀgv=false,this.ƀdg=false,this.ƀjb=1,this.ƀw=1,this.ƀii=new j__namespace.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new helpersLib.Vector(this.ƀii.width,this.ƀii.height)}setSize(t){return this.ƀii.width=t.x,this.ƀii.height=t.y,this}setPosition(t,e){if(e?.holdFrom){let i=this.ƀii.getLocalBounds(),r=new helpersLib.Vector(this.ƀii.scale.x,this.ƀii.scale.y),s=new helpersLib.Vector(i.x,i.y).multiply(r),n=new helpersLib.Vector(i.width,i.height).multiply(r),a=s.add(n.multiply(e.holdFrom));t=t.subtract(a);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new helpersLib.Vector(this.ƀii.x,this.ƀii.y)}set position(t){this.ƀii.position=t;}get x(){return this.ƀii.x}set x(t){this.ƀii.x=t;}get y(){return this.ƀii.y}set y(t){this.ƀii.y=t;}on(t){return actionsLib.Sequence.create(e=>{let i=h(r=>{if(t===exports.ContainerEventType.Wheel){let n=r.deltaY;e({deltaY:n});}else e(void 0);},"handle");return this.ƀii.on(t,i),()=>this.ƀii.off(t,i)}).notIdle()}setRotation(t){return this.rotation=t,this}get rotation(){return new helpersLib.Radian(this.ƀii.rotation)}set rotation(t){this.ƀii.rotation=t.value;}get rotationValue(){return this.rotation.value}set rotationValue(t){this.rotation=new helpersLib.Radian(t);}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.ƀii.zIndex}set zIndex(t){this.ƀii.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new helpersLib.Radian(this.ƀii.skew.x)}set skewX(t){this.ƀii.skew.x=t.value;}setSkewY(t){return this.skewY=t,this}get skewY(){return new helpersLib.Radian(this.ƀii.skew.y)}set skewY(t){this.ƀii.skew.y=t.value;}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.ƀii.sortableChildren}set sortableChildren(t){this.ƀii.sortableChildren=t;}setAlpha(t){return this.ƀii.alpha=t,this}get alpha(){return this.ƀii.alpha}set alpha(t){this.ƀii.alpha=t;}setInteractive(t){return this.interactive=t,this}get interactive(){return this.ƀii.interactive}set interactive(t){t?this.ƀii.eventMode="dynamic":this.ƀii.eventMode="none";}setCursor(t){return this.cursor=t,this}get cursor(){return this.ƀii.cursor}set cursor(t){this.ƀii.cursor=t;}getMask(){throw new Error("ContainerAttributes: mask is not available!")}setMask(t){return t?(this.ƀii.addChild(t.ƀii),this.ƀii.mask=t.getMask(),this.ƀgl=t):(this.ƀgl&&this.ƀii.removeChild(this.ƀgl.ƀii),this.ƀii.mask=null),this}hitTest(t){if(this.ƀii.parent)if(this.ƀii.hitArea){let e=this.ƀii.toLocal(t);return this.ƀii.hitArea.contains(e.x,e.y)}else return this.ƀii.getBounds().contains(t.x,t.y);else return false}get boundingBox(){let t=this.ƀii.getLocalBounds();return new helpersLib.Rectangle(new helpersLib.Vector(t.x,t.y),new helpersLib.Vector(t.x+t.width,t.y+t.height))}ignoreBounds(t=true){return t?(this.ƀhs||(this.ƀhs=this.ƀii.calculateBounds),this.ƀii.calculateBounds=()=>this.ƀii._bounds.clear()):this.ƀhs&&(this.ƀii.calculateBounds=this.ƀhs),this}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgv}set mirror(t){this.ƀgv=t,this.ƀle();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdg}set flip(t){this.ƀdg=t,this.ƀle();}setScale(t){return this.scale=t,this}get scale(){return this.ƀjb}set scale(t){this.ƀjb=t,this.ƀle();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀw}set aspectRatio(t){this.ƀw=t,this.ƀle();}ƀle(){this.ƀii.scale.set(this.ƀjb,this.ƀjb),this.ƀw<1?this.ƀii.scale.x*=this.ƀw:this.ƀw>1&&(this.ƀii.scale.y/=this.ƀw),this.ƀgv&&(this.ƀii.scale.x*=-1),this.ƀdg&&(this.ƀii.scale.y*=-1);}};var G=2;exports.BlendMode=void 0;(function(o){o[o.Normal=0]="Normal",o[o.Add=1]="Add",o[o.Screen=3]="Screen",o[o.Luminosity=16]="Luminosity",o[o.ColorDodge=7]="ColorDodge";})(exports.BlendMode||(exports.BlendMode={}));var ue=class{static{h(this,"GaussianValuesHelper");}static ƀdm(t,e){let i=e*e,r=1/(helpersLib.PI_360*i),s=-(t*t)/(2*i);return r*Math.exp(s)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),r=.005*i,s=helpersLib.NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<r)i-=l*2;else return true}),n=1/i,a=s.map(l=>l*n);return this.ƀbt(a)}static getValuesForLinearSamplingGauss(t){if(t===0)return [{offset:0,multiplier:1}];if(t===1)return [{offset:0,multiplier:.5},{offset:1,multiplier:.25}];{let e=helpersLib.ArrayHelper.createIntegerArray(Math.ceil(t*.75)).map(r=>this.ƀdm(r,t*.4)),i=e.reduce((r,s)=>r+s,0);return i=i*2-e[0],e=e.map(r=>r/i),this.ƀbt(e)}}static ƀbt(t){let e=[{offset:0,multiplier:t[0]}];for(let i=1;i<t.length-1;i+=2){let r=t[i]+t[i+1],s=i+t[i+1]/r;e.push({offset:s,multiplier:r});}if(t.length%2===0){let i=t[t.length-1],r=t.length-1;e.push({offset:r,multiplier:i});}return e}};var Oi=class Xe extends j__namespace.Filter{static{h(this,"BlurFilterPass");}static ƀep(){return `
2
2
  attribute vec2 aVertexPosition;
3
3
  attribute vec2 aTextureCoord;
4
4
 
@@ -10,7 +10,7 @@
10
10
  gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
11
11
  vTextureCoord = aTextureCoord;
12
12
  }
13
- `}static ƀdr(t,e){let i=`
13
+ `}static ƀdx(t,e){let i=`
14
14
  uniform sampler2D uSampler;
15
15
 
16
16
  varying vec2 vTextureCoord;
@@ -29,7 +29,7 @@
29
29
  iterate(${s}, ${helpersLib.NumberHelper.toFloatString(t[r].multiplier)}, gl_FragColor);
30
30
  iterate(${s} * -1.0, ${helpersLib.NumberHelper.toFloatString(t[r].multiplier)}, gl_FragColor);`;}return i+=`
31
31
  }
32
- `,i}constructor(t,e){super(Je.ƀej(),Je.ƀdr(ce.getValuesForLinearSamplingGauss(t),e)),this.ƀex=e,this.resolution=O;}apply(t,e,i,r){this.uniforms.pixelSize=this.ƀex?1/(e.width*O):1/(e.height*O),t.applyFilter(this,e,i,r);}},Et=class extends L__namespace.Filter{static{h(this,"BlurFilter");}constructor(t=new helpersLib.Vector(2,2)){if(super(),this.ƀjr=t,this.resolution=O,this.ƀjr=t.multiplyNumber(O).floor(),this.ƀjr.x<0||this.ƀjr.y<0)throw new Error("BlurFilterLinearSampling: Strength * Resolution must be greater than 0");if(this.ƀjr.x>100||this.ƀjr.y>100)throw new Error("BlurFilterLinearSampling: Strength * Resolution cannot be higher than 100");this.ƀez=new Ti(this.ƀjr.x,true),this.ƀkp=new Ti(this.ƀjr.y,false),this.padding=Math.max(this.ƀjr.x,this.ƀjr.y);}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀkp.apply(t,e,s,L__namespace.CLEAR_MODES.CLEAR),this.ƀez.apply(t,s,i,r),t.returnFilterTexture(s);}get blendMode(){return this.ƀez.blendMode}set blendMode(t){this.ƀez.blendMode=t,this.ƀkp.blendMode=t;}};var de=class{static{h(this,"Filters");}get red(){return this.ƀid}set red(t){this.ƀid=t,this.ƀie();}get green(){return this.ƀen}set green(t){this.ƀen=t,this.ƀie();}get blue(){return this.ƀae}set blue(t){this.ƀae=t,this.ƀie();}get brightness(){return this.ƀaj}set brightness(t){this.ƀaj=t,this.ƀie();}get contrast(){return this.ƀbk}set contrast(t){this.ƀbk=t,this.ƀie();}get blur(){return this.ƀaf}set blur(t){let e=helpersLib.Comparator.isNumber(t)?new helpersLib.Vector(t,t):t;(this.ƀaf&&e&&!this.ƀaf.isEqual(e)||this.ƀaf&&!e||!this.ƀaf&&e)&&(this.ƀaf=e,this.ƀag&&(this.ƀag.destroy(),this.ƀag=void 0),e&&(this.ƀag=new Et(e),this.ƀgw()));}constructor(t){this.ƀbg=t,this.ƀid=1,this.ƀen=1,this.ƀae=1,this.ƀaj=1,this.ƀbk=1,this.ƀgw();}removeColorFilter(){this.ƀaz?.destroy(),this.ƀaz=void 0,this.ƀgw();}ƀie(){this.ƀid===1&&this.ƀen===1&&this.ƀae===1&&this.ƀaj===1&&this.ƀbk===1?this.ƀaz&&(this.ƀaz.destroy(),this.ƀaz=void 0,this.ƀgw()):(this.ƀaz||(this.ƀaz=new L__namespace.ColorMatrixFilter,this.ƀaz.resolution=O,this.ƀgw()),this.ƀaz.matrix=[this.ƀid*this.ƀbk,0,0,0,this.ƀaj-1,0,this.ƀen*this.ƀbk,0,0,this.ƀaj-1,0,0,this.ƀae*this.ƀbk,0,this.ƀaj-1,0,0,0,1,0]);}ƀgw(){let t=[];this.ƀag&&t.push(this.ƀag),this.ƀaz&&t.push(this.ƀaz),this.ƀbg.filters=t;}};var f=class o extends le{static{h(this,"Container");}static{this.allContainers=new Map;}constructor(){super(),this.addChildTo=this,this.defaultChildOptions={addUnder:false,cropOverflowingParts:false},o.allContainers.set(this.id,this),this.filters=new de(this.ƀhu);}destroy(){this.destroyed||(super.destroy(),o.allContainers.delete(this.id),!this.ƀhu.destroyed&&this.ƀhu.destroy());}getBoundingMask(){if(this.addChildTo!==this)return this.addChildTo.getBoundingMask();throw new Error(`Container: bounding mask cannot be used without bounding shapes. Display Object: "${this.id}"!`)}displayParent(t,e){let i;if(helpersLib.Comparator.isNumber(t)){if(i=o.allContainers.get(t),!i)throw new Error(`Container: parent not found! id: ${t}`)}else i=t;let r={addUnder:i.defaultChildOptions.addUnder,cropOverflowingParts:i.defaultChildOptions.cropOverflowingParts,...e};if(r.addUnder?i.addChildTo.ƀhu.addChildAt(this.ƀhu,0):i.addChildTo.ƀhu.addChild(this.ƀhu),r.cropOverflowingParts)if(i)this.ƀhu.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}};var D=class{static{h(this,"GameAssets");}static{this.ƀik=new Map;}static{this.ƀp=0;}static getAsset(t){let e=this.ƀik.get(t);if(e)return e;throw new Error(`Game Assets: Resource not found! Key: "${t}"`)}static insertAsset(t,e){return e||(e=`a-${this.ƀp++}`),this.ƀik.set(e,t),e}static destroyAsset(t){let e=this.ƀik.get(t);e&&(e.destroy(true),this.ƀik.delete(t));}static async loadGameAssets(t){let e=new Map,i=[];t.forEach(s=>{if(!helpersLib.Comparator.isString(s.url))throw new Error(`GameAssets: source url should be a string: ${s.url}`);let n=e.get(s.url);n?n.push(s.id):(e.set(s.url,[s.id]),i.push({url:s.url,callback:h(a=>{if(a instanceof L__namespace.Texture&&(a.id=s.id),n=e.get(s.url),n)n.forEach(l=>{this.ƀik.set(l,a);});else throw new Error(`GameAssets: unexpected error, nameGroup is not found! "./"! ${s}`)},"callback")}));});let r=performance.now();return Promise.all(i.map(s=>L__namespace.Assets.load(s.url))).then(s=>{let n=performance.now();console.info("Asset load completed in: ",Math.round(n-r)/1e3," seconds"),s.forEach((a,l)=>{i[l].callback(a);});}).catch(s=>{throw new Error(`GameAssets: during asset loading, an error occured: ${s}`)})}};var Ht=class{static{h(this,"PositionConversionHelper");}static includeScaleInScreenPosition(t,e,i){if(e!==1){let r=helpersLib.Vector.fromTo(i,t).multiplyNumber(1/e);return i.add(r)}else return t}static normalizePolygonByAnchor(t,e,i){let r=new helpersLib.Vector(e.x*i.x,e.y*i.y);return t.map(s=>s.map(n=>r.to(helpersLib.Vector.fromVec2(n))))}},ue=class{static{h(this,"CompositeHitArea");}constructor(t,e,i){this.ƀje=t.map(r=>new L__namespace.Polygon(r.map(s=>new L__namespace.Point(s.x,s.y))));}contains(t,e){return this.ƀje.some(i=>i.contains(t,e))}};var Or=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s};exports.CameraGateway=class it extends K(){static{h(this,"CameraGateway");}};exports.CameraGateway=Or([d()],exports.CameraGateway);var Dr=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},gt=class extends K(){static{h(this,"CameraViewGateway");}};gt=Dr([d()],gt);var Ri;(function(o){o.BackgroundScreen="backgroundScreen",o.Background="background",o.Main="main",o.Foreground="foreground",o.ForegroundScreen="foregroundScreen";})(Ri||(Ri={}));exports.FocusingAnimation=void 0;(function(o){o[o.Instant=1]="Instant",o[o.EaseInOut=2]="EaseInOut",o[o.EaseOut=3]="EaseOut";})(exports.FocusingAnimation||(exports.FocusingAnimation={}));var $=class{static{h(this,"AnimationInterpolationFunctions");}static boomerangTime(t){return 1-Math.abs(t-.5)*2}static lineer(t){return t}static easeIn(t){return Math.pow(t,2)}static easeOut(t){return 1-Math.pow(1-t,2)}static easeInOut(t){return t<.5?2*t*t:(t-=1,1-2*t*t)}static easeInOutCubic(t){let e=2*t-2;return t<.5?4*Math.pow(t,3):(t-1)*Math.pow(e,2)+1}static blink(t){return t>.5?1:0}},Mr=class{static{h(this,"AnimationLineer");}start(){}multiplierFunction(t){return $.lineer(t)}},Br=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return $.easeIn(t)}},Gr=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return $.easeOut(t)}},_r=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return $.easeInOut(t)}},Fr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return $.easeInOutCubic(t)}},Vr=class{static{h(this,"AnimationBlink");}start(){}multiplierFunction(t){return $.blink(t)}},Ci=class{static{h(this,"AnimationFlicker");}start(){this.ƀkc=new Array(10).fill(0),helpersLib.Random.integerBetween(0,9),this.ƀkc[helpersLib.Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(helpersLib.Random.integerBetween(0,9),this.ƀkc[helpersLib.Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(helpersLib.Random.integerBetween(0,9),this.ƀkc[helpersLib.Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀkc[e]}},S=class{static{h(this,"Animations");}static{this.lineer=new Mr;}static{this.easeIn=new Br;}static{this.easeOut=new Gr;}static{this.easeInOut=new _r;}static{this.easeInOutCubic=new Fr;}static{this.blink=new Vr;}};exports.ReAnimateHandlingType=void 0;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious";})(exports.ReAnimateHandlingType||(exports.ReAnimateHandlingType={}));exports.AnimationsCompletionHandlingType=void 0;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop";})(exports.AnimationsCompletionHandlingType||(exports.AnimationsCompletionHandlingType={}));var M=class o{static{h(this,"Animator");}static{this.ƀk=new WeakMap;}static ƀdj(t){let e=o.ƀk.get(t);return e||(e=new helpersLib.MapToWeakRefs,o.ƀk.set(t,e)),e}get animating(){return this.ƀhb!==void 0}get target(){return this.ƀjt}get value(){return this.ƀkl||(this.ƀkl=new actionsLib.Variable(this.ƀjt)),this.ƀkl.notifier}constructor(t,e,i){this.ƀfp=false,this.ƀjf=false,this.ƀjt=t,this.ƀhd={duration:200,animation:S.lineer,reAnimateHandling:exports.ReAnimateHandlingType.ThrowError,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState,...i},this.ƀl=helpersLib.Comparator.isArray(e)?e:[e],this.ƀgc(t,this.ƀl);}animate(t,e){let i={...this.ƀhd,...e},r=this.ƀhb;if(this.ƀhb)switch(i.reAnimateHandling){case exports.ReAnimateHandlingType.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case exports.ReAnimateHandlingType.IgnoreNewAnimation:return actionsLib.SingleEvent.instant().notIdle();case exports.ReAnimateHandlingType.CompletePrevious:this.ƀiy(i.completionHandling,this.ƀhb.ƀhz,true);break;default:{throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return actionsLib.SingleEvent.create(n=>{this.ƀfp&&(this.ƀjf=true);let a=this.ƀl.reduce((c,p)=>(c[p]={ƀjn:this.ƀjt[p],ƀjv:t[p]},c),{}),l={ƀcr:i.duration,ƀcs:0,ƀhz:a,ƀbe:i.completionHandling,ƀm:i.animation,ƀbd:n};if(l.ƀbe!==exports.AnimationsCompletionHandlingType.Loop&&this.ƀfl(l)){this.ƀhb=void 0,n(),r?.ƀbd(),this.ƀhb||(this.ƀki?.destroy(),this.ƀki=void 0);return}else l.ƀm.start();return this.ƀhb=l,this.ƀcv(),r?.ƀbd(),()=>{this.ƀhb===l&&(this.ƀjt instanceof actionsLib.Attachable&&this.ƀjt.destroyed||this.ƀiy(l.ƀbe,l.ƀhz,true),this.ƀhb=void 0,this.ƀki?.destroy(),this.ƀki=void 0);}}).notIdle()}set(t){let e=false;for(let i=0;i<this.ƀl.length;i++){let r=this.ƀl[i];this.ƀjt[r]!==t[r]&&(e=true,this.ƀjt[r]=t[r]);}e&&this.ƀkl?.set(this.ƀjt),this.ƀhb?.ƀbd();}completeAnimation(t){if(this.ƀhb){t=t??this.ƀhb.ƀbe,this.ƀiy(t,this.ƀhb.ƀhz,true);let e=this.ƀhb.ƀbd;this.ƀhb=void 0,e();}}ƀcv(){this.ƀki||(this.ƀki=y.beforeSceneUpdateAction.subscribe(t=>{this.ƀfp=true;try{let e=this.ƀhb;if(!e)return;e.ƀcs+=t.delta;let i=e.ƀcs>=e.ƀcr;if(i)if(e.ƀbe===exports.AnimationsCompletionHandlingType.Loop)e.ƀcs%=e.ƀcr,e.ƀm.start(),i=!1;else {this.ƀiy(e.ƀbe,e.ƀhz,!1),this.ƀhb=void 0,e.ƀbd(),this.ƀhb||(this.ƀki?.destroy(),this.ƀki=void 0);return}if(!i){let r=e.ƀm.multiplierFunction(e.ƀcs/e.ƀcr),s=!1;for(let n=0;n<this.ƀl.length;n++){let a=this.ƀl[n],l=e.ƀhz[a],p=(l.ƀjv-l.ƀjn)*r+l.ƀjn;p!==this.ƀjt[a]&&(s=!0,this.ƀjt[a]=p);}s&&this.ƀkl?.set(this.ƀjt);}}finally{this.ƀfp=false,this.ƀjf&&(this.ƀjf=false,this.ƀki?.destroy(),this.ƀki=void 0,this.ƀcv());}}).attachToRoot());}ƀfl(t){for(let e=0;e<this.ƀl.length;e++){let i=this.ƀl[e];if(this.ƀjt[i]!==t.ƀhz[i].ƀjv)return false}return true}ƀiy(t,e,i){switch(t){case exports.AnimationsCompletionHandlingType.ReturnToOriginal:this.ƀil(e);break;case exports.AnimationsCompletionHandlingType.StayInCurrentState:i||this.ƀfs(e);break;case exports.AnimationsCompletionHandlingType.JumpToEnd:this.ƀfs(e);break;case exports.AnimationsCompletionHandlingType.Loop:this.ƀil(e);break;default:{throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀil(t){let e=false;for(let i=0;i<this.ƀl.length;i++){let r=this.ƀl[i];this.ƀjt[r]!==t[r].ƀjn&&(e=true,this.ƀjt[r]=t[r].ƀjn);}e&&this.ƀkl?.set(this.ƀjt);}ƀfs(t){let e=false;for(let i=0;i<this.ƀl.length;i++){let r=this.ƀl[i];this.ƀjt[r]!==t[r].ƀjv&&(e=true,this.ƀjt[r]=t[r].ƀjv);}e&&this.ƀkl?.set(this.ƀjt);}ƀgc(t,e){let i=o.ƀdj(t);for(let r of e){if(i.has(r))throw new Error(`Animator: target property is already animated! Target: "${JSON.stringify(t,void 0,2)}", Property: "${r}"`);i.set(r,this);}}};var I;(function(o){o[o.Idle=1]="Idle",o[o.Transitioning=2]="Transitioning",o[o.Reverting=3]="Reverting";})(I||(I={}));var ge=class extends actionsLib.Attachable{static{h(this,"StateAnimation");}get currentState(){return {value:this.ƀj.value,state:this.ƀjo,nextState:this.ƀgq,queuedState:this.ƀia,animationState:this.ƀn}}constructor(t){super(),this.ƀj={value:0},this.ƀn=I.Idle,this.ƀgy=new actionsLib.Action,this.ƀha=new actionsLib.Action,this.ƀhd={duration:500,animation:S.lineer,...t},this.ƀo=new M(this.ƀj,"value",{duration:this.ƀhd.duration,animation:this.ƀhd.animation,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),this.ƀo.value.subscribe(()=>{this.ƀj.value!==1&&this.ƀj.value!==0&&this.ƀha.trigger(this.ƀj.value);}).attach(this);}setState(t,e){if(this.ƀjo===void 0)this.ƀjo=t,this.ƀgy.trigger({state:this.ƀjo,nextState:this.ƀgq}),this.ƀha.trigger(this.ƀj.value);else if(e?.instant)this.ƀo.completeAnimation(),this.ƀn=I.Idle,this.ƀjo=t,this.ƀgq=void 0,this.ƀj.value=0,this.ƀgy.trigger({state:this.ƀjo,nextState:this.ƀgq}),this.ƀha.trigger(this.ƀj.value);else switch(this.ƀn){case I.Idle:t!==this.ƀjo&&(this.ƀn=I.Transitioning,this.ƀgq=t,this.ƀj.value=0,this.ƀgy.trigger({state:this.ƀjo,nextState:this.ƀgq}),this.ƀha.trigger(this.ƀj.value),this.ƀo.animate({value:1}).tap(()=>this.ƀgu()).attach(this));break;case I.Transitioning:t!==this.ƀgq&&(t===this.ƀjo?(this.ƀn=I.Reverting,this.ƀo.animate({value:0},{duration:this.ƀj.value*this.ƀhd.duration}).tap(()=>this.ƀgu()).attach(this)):this.ƀia=t);break;case I.Reverting:t!==this.ƀjo&&(t===this.ƀgq?(this.ƀn=I.Transitioning,this.ƀo.animate({value:1},{duration:(1-this.ƀj.value)*this.ƀhd.duration}).tap(()=>this.ƀgu()).attach(this)):this.ƀia=t);break;default:{this.ƀn;throw new Error(`Unexpected case! "${this.ƀn}"`)}}}ƀgu(){switch(this.ƀn){case I.Transitioning:this.ƀj.value===1&&(this.ƀj.value=0,this.ƀia!==void 0?(this.ƀn=I.Transitioning,this.ƀjo=this.ƀgq,this.ƀgq=this.ƀia,this.ƀia=void 0,this.ƀgy.trigger({state:this.ƀjo,nextState:this.ƀgq}),this.ƀo.animate({value:1}).tap(()=>this.ƀgu()).attach(this)):(this.ƀn=I.Idle,this.ƀjo=this.ƀgq,this.ƀgq=void 0,this.ƀgy.trigger({state:this.ƀjo,nextState:this.ƀgq})),this.ƀha.trigger(this.ƀj.value));break;case I.Reverting:if(this.ƀjo===void 0)throw new Error("StateAnimation: state must be defined when reverting!");this.ƀj.value===0&&(this.ƀia!==void 0?(this.ƀn=I.Transitioning,this.ƀgq=this.ƀia,this.ƀia=void 0,this.ƀj.value=0,this.ƀgy.trigger({state:this.ƀjo,nextState:this.ƀgq}),this.ƀo.animate({value:1}).tap(()=>this.ƀgu()).attach(this)):(this.ƀn=I.Idle,this.ƀgq=void 0,this.ƀj.value=0,this.ƀgy.trigger({state:this.ƀjo,nextState:this.ƀgq})),this.ƀha.trigger(this.ƀj.value));break;case I.Idle:break;default:{this.ƀn;throw new Error(`Unexpected case! "${this.ƀn}"`)}}}onStateChange(t){return this.ƀgy.subscribe(e=>t(e.state,e.nextState)).attach(this),this}onValueChange(t){return this.ƀha.subscribe(e=>t(e)).attach(this),this}};var x;(function(o){o[o.Hidden=1]="Hidden",o[o.Visible=2]="Visible",o[o.Appearing=3]="Appearing",o[o.Disappearing=4]="Disappearing",o[o.DisappearToChange=5]="DisappearToChange";})(x||(x={}));var ye=class extends actionsLib.Attachable{static{h(this,"FadeInStateAnimation");}get currentState(){return {value:this.ƀj.value,state:this.ƀjo,queuedState:this.ƀia,animationState:this.ƀn}}constructor(t){super(),this.ƀj={value:0},this.ƀn=x.Hidden,this.ƀgy=new actionsLib.Action,this.ƀha=new actionsLib.Action,this.ƀhd={duration:500,animation:S.lineer,...t},this.ƀj.value=0,this.ƀo=new M(this.ƀj,"value",{duration:this.ƀhd.duration,animation:this.ƀhd.animation,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),this.ƀo.value.subscribe(()=>{this.ƀj.value!==1&&this.ƀj.value!==0&&this.ƀha.trigger(this.ƀj.value);}).attach(this);}setState(t,e){if(e?.instant){this.ƀo.completeAnimation(),this.ƀn=t!==void 0?x.Visible:x.Hidden,this.ƀia=void 0;let i=t!==void 0?1:0,r=this.ƀjo!==t;r&&(this.ƀjo=t,this.ƀgy.trigger(this.ƀjo)),(r||this.ƀj.value!==i)&&(this.ƀj.value=i,this.ƀha.trigger(this.ƀj.value));}else switch(this.ƀn){case x.Hidden:t!==void 0&&(this.ƀn=x.Appearing,this.ƀia=void 0,this.ƀjo=t,this.ƀgy.trigger(this.ƀjo),this.ƀo.animate({value:1}).tap(()=>this.ƀgu()).attach(this));break;case x.Visible:t===void 0?(this.ƀn=x.Disappearing,this.ƀia=void 0,this.ƀo.animate({value:0}).tap(()=>this.ƀgu()).attach(this)):t!==this.ƀjo&&(this.ƀn=x.DisappearToChange,this.ƀia=t,this.ƀo.animate({value:0}).tap(()=>this.ƀgu()).attach(this));break;case x.Appearing:t===void 0?(this.ƀn=x.Disappearing,this.ƀia=void 0,this.ƀo.animate({value:0},{duration:this.ƀj.value*this.ƀhd.duration}).tap(()=>this.ƀgu()).attach(this)):t!==this.ƀjo&&(this.ƀj.value>0?(this.ƀn=x.DisappearToChange,this.ƀia=t,this.ƀo.animate({value:0},{duration:this.ƀj.value*this.ƀhd.duration}).tap(()=>this.ƀgu()).attach(this)):(this.ƀia=void 0,this.ƀjo=t,this.ƀgy.trigger(this.ƀjo)));break;case x.Disappearing:t===this.ƀjo?(this.ƀn=x.Appearing,this.ƀo.animate({value:1},{duration:(1-this.ƀj.value)*this.ƀhd.duration}).tap(()=>this.ƀgu()).attach(this)):t!==void 0&&(this.ƀn=x.DisappearToChange,this.ƀia=t);break;case x.DisappearToChange:t===void 0?(this.ƀn=x.Disappearing,this.ƀia=void 0):t===this.ƀjo?(this.ƀn=x.Appearing,this.ƀia=void 0,this.ƀo.animate({value:1},{duration:(1-this.ƀj.value)*this.ƀhd.duration}).tap(()=>this.ƀgu()).attach(this)):t!==this.ƀia&&(this.ƀia=t);break;default:{this.ƀn;throw new Error(`Unexpected case! "${this.ƀn}"`)}}}ƀgu(){switch(this.ƀn){case x.Appearing:this.ƀj.value===1&&(this.ƀn=x.Visible,this.ƀha.trigger(this.ƀj.value));break;case x.Disappearing:if(this.ƀia!==void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearing should not have a queued value");this.ƀj.value===0&&(this.ƀn=x.Hidden,this.ƀjo=void 0,this.ƀgy.trigger(this.ƀjo),this.ƀha.trigger(this.ƀj.value));break;case x.DisappearToChange:if(this.ƀia===void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearToChange should always have a queued value");this.ƀj.value===0&&(this.ƀn=x.Appearing,this.ƀjo=this.ƀia,this.ƀia=void 0,this.ƀgy.trigger(this.ƀjo),this.ƀha.trigger(this.ƀj.value),this.ƀo.animate({value:1}).tap(()=>this.ƀgu()).attach(this));break;case x.Hidden:case x.Visible:return;default:{this.ƀn;throw new Error(`Unexpected case! "${this.ƀn}"`)}}}onStateChange(t){return this.ƀgy.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀha.subscribe(e=>t(e)).attach(this),this}};var Di=class extends f{static{h(this,"FadeInContent");}constructor(t,e){super(),this.ƀbt=t;let i={duration:200,animation:S.easeInOut,...e};this.alpha=0,this.ƀjp=new ye(i).onStateChange(r=>{this.ƀbh?.destroy(),this.ƀbh=void 0,r!==void 0&&(this.ƀbh=new f().displayParent(this).attach(this),this.ƀbt({state:r,container:this.ƀbh}));}).onValueChange(r=>{this.alpha=r;}).attach(this);}setState(t,e){return this.ƀjp.setState(t,e),this}};var xe=class o extends L__namespace.Filter{static{h(this,"ExpandWithColorFilter");}static ƀej(){return `
32
+ `,i}constructor(t,e){super(Xe.ƀep(),Xe.ƀdx(ue.getValuesForLinearSamplingGauss(t),e)),this.ƀfd=e,this.resolution=G;}apply(t,e,i,r){this.uniforms.pixelSize=this.ƀfd?1/(e.width*G):1/(e.height*G),t.applyFilter(this,e,i,r);}},Ot=class extends j__namespace.Filter{static{h(this,"BlurFilter");}constructor(t=new helpersLib.Vector(2,2)){if(super(),this.ƀkl=t,this.resolution=G,this.ƀkl=t.multiplyNumber(G).floor(),this.ƀkl.x<0||this.ƀkl.y<0)throw new Error("BlurFilterLinearSampling: Strength * Resolution must be greater than 0");if(this.ƀkl.x>100||this.ƀkl.y>100)throw new Error("BlurFilterLinearSampling: Strength * Resolution cannot be higher than 100");this.ƀff=new Oi(this.ƀkl.x,true),this.ƀlj=new Oi(this.ƀkl.y,false),this.padding=Math.max(this.ƀkl.x,this.ƀkl.y);}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀlj.apply(t,e,s,j__namespace.CLEAR_MODES.CLEAR),this.ƀff.apply(t,s,i,r),t.returnFilterTexture(s);}get blendMode(){return this.ƀff.blendMode}set blendMode(t){this.ƀff.blendMode=t,this.ƀlj.blendMode=t;}};var me=class{static{h(this,"Filters");}get red(){return this.ƀis}set red(t){this.ƀis=t,this.ƀit();}get green(){return this.ƀet}set green(t){this.ƀet=t,this.ƀit();}get blue(){return this.ƀag}set blue(t){this.ƀag=t,this.ƀit();}get brightness(){return this.ƀal}set brightness(t){this.ƀal=t,this.ƀit();}get contrast(){return this.ƀbo}set contrast(t){this.ƀbo=t,this.ƀit();}get blur(){return this.ƀah}set blur(t){let e=helpersLib.Comparator.isNumber(t)?new helpersLib.Vector(t,t):t;(this.ƀah&&e&&!this.ƀah.isEqual(e)||this.ƀah&&!e||!this.ƀah&&e)&&(this.ƀah=e,this.ƀai&&(this.ƀai.destroy(),this.ƀai=void 0),e&&(this.ƀai=new Ot(e),this.ƀhk()));}constructor(t){this.ƀbk=t,this.ƀis=1,this.ƀet=1,this.ƀag=1,this.ƀal=1,this.ƀbo=1,this.ƀhk();}removeColorFilter(){this.ƀbd?.destroy(),this.ƀbd=void 0,this.ƀhk();}ƀit(){this.ƀis===1&&this.ƀet===1&&this.ƀag===1&&this.ƀal===1&&this.ƀbo===1?this.ƀbd&&(this.ƀbd.destroy(),this.ƀbd=void 0,this.ƀhk()):(this.ƀbd||(this.ƀbd=new j__namespace.ColorMatrixFilter,this.ƀbd.resolution=G,this.ƀhk()),this.ƀbd.matrix=[this.ƀis*this.ƀbo,0,0,0,this.ƀal-1,0,this.ƀet*this.ƀbo,0,0,this.ƀal-1,0,0,this.ƀag*this.ƀbo,0,this.ƀal-1,0,0,0,1,0]);}ƀhk(){let t=[];this.ƀai&&t.push(this.ƀai),this.ƀbd&&t.push(this.ƀbd),this.ƀbk.filters=t;}};var u=class o extends de{static{h(this,"Container");}static{this.allContainers=new Map;}constructor(){super(),this.addChildTo=this,this.defaultChildOptions={addUnder:false,cropOverflowingParts:false},o.allContainers.set(this.id,this),this.filters=new me(this.ƀii);}destroy(){this.destroyed||(super.destroy(),o.allContainers.delete(this.id),!this.ƀii.destroyed&&this.ƀii.destroy());}getBoundingMask(){if(this.addChildTo!==this)return this.addChildTo.getBoundingMask();throw new Error(`Container: bounding mask cannot be used without bounding shapes. Display Object: "${this.id}"!`)}displayParent(t,e){let i;if(helpersLib.Comparator.isNumber(t)){if(i=o.allContainers.get(t),!i)throw new Error(`Container: parent not found! id: ${t}`)}else i=t;let r={addUnder:i.defaultChildOptions.addUnder,cropOverflowingParts:i.defaultChildOptions.cropOverflowingParts,...e};if(r.addUnder?i.addChildTo.ƀii.addChildAt(this.ƀii,0):i.addChildTo.ƀii.addChild(this.ƀii),r.cropOverflowingParts)if(i)this.ƀii.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}};var M;(function(o){o[o.Idle=1]="Idle",o[o.Transitioning=2]="Transitioning",o[o.Reverting=3]="Reverting";})(M||(M={}));var ge=class extends actionsLib.Attachable{static{h(this,"StateAnimation");}get currentState(){return {value:this.ƀk.value,state:this.ƀki,nextState:this.ƀhe,queuedState:this.ƀip,animationState:this.ƀo}}constructor(t){super(),this.ƀk={value:0},this.ƀo=M.Idle,this.ƀhm=new actionsLib.Action,this.ƀho=new actionsLib.Action,this.ƀhr={duration:500,animation:w.lineer,...t},this.ƀp=new C(this.ƀk,"value",{duration:this.ƀhr.duration,animation:this.ƀhr.animation,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),this.ƀp.value.subscribe(()=>{this.ƀk.value!==1&&this.ƀk.value!==0&&this.ƀho.trigger(this.ƀk.value);}).attach(this);}setState(t,e){if(this.ƀki===void 0)this.ƀki=t,this.ƀhm.trigger({state:this.ƀki,nextState:this.ƀhe}),this.ƀho.trigger(this.ƀk.value);else if(e?.instant)this.ƀp.completeAnimation(),this.ƀo=M.Idle,this.ƀki=t,this.ƀhe=void 0,this.ƀk.value=0,this.ƀhm.trigger({state:this.ƀki,nextState:this.ƀhe}),this.ƀho.trigger(this.ƀk.value);else switch(this.ƀo){case M.Idle:t!==this.ƀki&&(this.ƀo=M.Transitioning,this.ƀhe=t,this.ƀk.value=0,this.ƀhm.trigger({state:this.ƀki,nextState:this.ƀhe}),this.ƀho.trigger(this.ƀk.value),this.ƀp.animate({value:1}).tap(()=>this.ƀhi()).attach(this));break;case M.Transitioning:t!==this.ƀhe&&(t===this.ƀki?(this.ƀo=M.Reverting,this.ƀp.animate({value:0},{duration:this.ƀk.value*this.ƀhr.duration}).tap(()=>this.ƀhi()).attach(this)):this.ƀip=t);break;case M.Reverting:t!==this.ƀki&&(t===this.ƀhe?(this.ƀo=M.Transitioning,this.ƀp.animate({value:1},{duration:(1-this.ƀk.value)*this.ƀhr.duration}).tap(()=>this.ƀhi()).attach(this)):this.ƀip=t);break;default:{this.ƀo;throw new Error(`Unexpected case! "${this.ƀo}"`)}}}ƀhi(){switch(this.ƀo){case M.Transitioning:this.ƀk.value===1&&(this.ƀk.value=0,this.ƀip!==void 0?(this.ƀo=M.Transitioning,this.ƀki=this.ƀhe,this.ƀhe=this.ƀip,this.ƀip=void 0,this.ƀhm.trigger({state:this.ƀki,nextState:this.ƀhe}),this.ƀp.animate({value:1}).tap(()=>this.ƀhi()).attach(this)):(this.ƀo=M.Idle,this.ƀki=this.ƀhe,this.ƀhe=void 0,this.ƀhm.trigger({state:this.ƀki,nextState:this.ƀhe})),this.ƀho.trigger(this.ƀk.value));break;case M.Reverting:if(this.ƀki===void 0)throw new Error("StateAnimation: state must be defined when reverting!");this.ƀk.value===0&&(this.ƀip!==void 0?(this.ƀo=M.Transitioning,this.ƀhe=this.ƀip,this.ƀip=void 0,this.ƀk.value=0,this.ƀhm.trigger({state:this.ƀki,nextState:this.ƀhe}),this.ƀp.animate({value:1}).tap(()=>this.ƀhi()).attach(this)):(this.ƀo=M.Idle,this.ƀhe=void 0,this.ƀk.value=0,this.ƀhm.trigger({state:this.ƀki,nextState:this.ƀhe})),this.ƀho.trigger(this.ƀk.value));break;case M.Idle:break;default:{this.ƀo;throw new Error(`Unexpected case! "${this.ƀo}"`)}}}onStateChange(t){return this.ƀhm.subscribe(e=>t(e.state,e.nextState)).attach(this),this}onValueChange(t){return this.ƀho.subscribe(e=>t(e)).attach(this),this}};var v;(function(o){o[o.Hidden=1]="Hidden",o[o.Visible=2]="Visible",o[o.Appearing=3]="Appearing",o[o.Disappearing=4]="Disappearing",o[o.DisappearToChange=5]="DisappearToChange";})(v||(v={}));var ye=class extends actionsLib.Attachable{static{h(this,"FadeInStateAnimation");}get currentState(){return {value:this.ƀk.value,state:this.ƀki,queuedState:this.ƀip,animationState:this.ƀo}}constructor(t){super(),this.ƀk={value:0},this.ƀo=v.Hidden,this.ƀhm=new actionsLib.Action,this.ƀho=new actionsLib.Action,this.ƀhr={duration:500,animation:w.lineer,...t},this.ƀk.value=0,this.ƀp=new C(this.ƀk,"value",{duration:this.ƀhr.duration,animation:this.ƀhr.animation,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),this.ƀp.value.subscribe(()=>{this.ƀk.value!==1&&this.ƀk.value!==0&&this.ƀho.trigger(this.ƀk.value);}).attach(this);}setState(t,e){if(e?.instant){this.ƀp.completeAnimation(),this.ƀo=t!==void 0?v.Visible:v.Hidden,this.ƀip=void 0;let i=t!==void 0?1:0,r=this.ƀki!==t;r&&(this.ƀki=t,this.ƀhm.trigger(this.ƀki)),(r||this.ƀk.value!==i)&&(this.ƀk.value=i,this.ƀho.trigger(this.ƀk.value));}else switch(this.ƀo){case v.Hidden:t!==void 0&&(this.ƀo=v.Appearing,this.ƀip=void 0,this.ƀki=t,this.ƀhm.trigger(this.ƀki),this.ƀp.animate({value:1}).tap(()=>this.ƀhi()).attach(this));break;case v.Visible:t===void 0?(this.ƀo=v.Disappearing,this.ƀip=void 0,this.ƀp.animate({value:0}).tap(()=>this.ƀhi()).attach(this)):t!==this.ƀki&&(this.ƀo=v.DisappearToChange,this.ƀip=t,this.ƀp.animate({value:0}).tap(()=>this.ƀhi()).attach(this));break;case v.Appearing:t===void 0?(this.ƀo=v.Disappearing,this.ƀip=void 0,this.ƀp.animate({value:0},{duration:this.ƀk.value*this.ƀhr.duration}).tap(()=>this.ƀhi()).attach(this)):t!==this.ƀki&&(this.ƀk.value>0?(this.ƀo=v.DisappearToChange,this.ƀip=t,this.ƀp.animate({value:0},{duration:this.ƀk.value*this.ƀhr.duration}).tap(()=>this.ƀhi()).attach(this)):(this.ƀip=void 0,this.ƀki=t,this.ƀhm.trigger(this.ƀki)));break;case v.Disappearing:t===this.ƀki?(this.ƀo=v.Appearing,this.ƀp.animate({value:1},{duration:(1-this.ƀk.value)*this.ƀhr.duration}).tap(()=>this.ƀhi()).attach(this)):t!==void 0&&(this.ƀo=v.DisappearToChange,this.ƀip=t);break;case v.DisappearToChange:t===void 0?(this.ƀo=v.Disappearing,this.ƀip=void 0):t===this.ƀki?(this.ƀo=v.Appearing,this.ƀip=void 0,this.ƀp.animate({value:1},{duration:(1-this.ƀk.value)*this.ƀhr.duration}).tap(()=>this.ƀhi()).attach(this)):t!==this.ƀip&&(this.ƀip=t);break;default:{this.ƀo;throw new Error(`Unexpected case! "${this.ƀo}"`)}}}ƀhi(){switch(this.ƀo){case v.Appearing:this.ƀk.value===1&&(this.ƀo=v.Visible,this.ƀho.trigger(this.ƀk.value));break;case v.Disappearing:if(this.ƀip!==void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearing should not have a queued value");this.ƀk.value===0&&(this.ƀo=v.Hidden,this.ƀki=void 0,this.ƀhm.trigger(this.ƀki),this.ƀho.trigger(this.ƀk.value));break;case v.DisappearToChange:if(this.ƀip===void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearToChange should always have a queued value");this.ƀk.value===0&&(this.ƀo=v.Appearing,this.ƀki=this.ƀip,this.ƀip=void 0,this.ƀhm.trigger(this.ƀki),this.ƀho.trigger(this.ƀk.value),this.ƀp.animate({value:1}).tap(()=>this.ƀhi()).attach(this));break;case v.Hidden:case v.Visible:return;default:{this.ƀo;throw new Error(`Unexpected case! "${this.ƀo}"`)}}}onStateChange(t){return this.ƀhm.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀho.subscribe(e=>t(e)).attach(this),this}};var Gi=class extends u{static{h(this,"FadeInContent");}constructor(t,e){super(),this.ƀbx=t;let i={duration:200,animation:w.easeInOut,...e};this.alpha=0,this.ƀkj=new ye(i).onStateChange(r=>{this.ƀbl?.destroy(),this.ƀbl=void 0,r!==void 0&&(this.ƀbl=new u().displayParent(this).attach(this),this.ƀbx({state:r,container:this.ƀbl}));}).onValueChange(r=>{this.alpha=r;}).attach(this);}setState(t,e){return this.ƀkj.setState(t,e),this}};var F=class{static{h(this,"GameAssets");}static{this.ƀiz=new Map;}static{this.ƀq=0;}static getAsset(t){let e=this.ƀiz.get(t);if(e)return e;throw new Error(`Game Assets: Resource not found! Key: "${t}"`)}static insertAsset(t,e){let i=e||`a-${this.ƀq++}`;return this.ƀiz.set(i,t),i}static destroyAsset(t){let e=this.ƀiz.get(t);e&&(e.destroy(true),this.ƀiz.delete(t));}static async loadGameAssets(t){let e=new Map,i=[];t.forEach(s=>{if(!helpersLib.Comparator.isString(s.url))throw new Error(`GameAssets: source url should be a string: ${s.url}`);let n=e.get(s.url),a=s.id;n?n.push(a):(e.set(s.url,[a]),i.push({url:s.url,callback:h(l=>{if(l instanceof j__namespace.Texture&&(l.id=a),n=e.get(s.url),n)n.forEach(c=>{this.ƀiz.set(c,l);});else throw new Error(`GameAssets: unexpected error, nameGroup is not found! "./"! ${s}`)},"callback")}));});let r=performance.now();return Promise.all(i.map(s=>j__namespace.Assets.load(s.url))).then(s=>{let n=performance.now();console.info("Asset load completed in: ",Math.round(n-r)/1e3," seconds"),s.forEach((a,l)=>{i[l].callback(a);});}).catch(s=>{throw new Error(`GameAssets: during asset loading, an error occured: ${s}`)})}};var ve=class o extends j__namespace.Filter{static{h(this,"ExpandWithColorFilter");}static ƀep(){return `
33
33
  attribute vec2 aVertexPosition;
34
34
  attribute vec2 aTextureCoord;
35
35
 
@@ -41,7 +41,7 @@
41
41
  gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
42
42
  vTextureCoord = aTextureCoord;
43
43
  }
44
- `}static ƀdr(t){let e=`
44
+ `}static ƀdx(t){let e=`
45
45
  uniform sampler2D uSampler;
46
46
  uniform vec2 pixelSize;
47
47
  uniform float expandSquared;
@@ -64,4 +64,4 @@
64
64
  highestAlpha = centerColor.a;`,e+=`
65
65
 
66
66
  gl_FragColor = vec4(color, 1.0) * highestAlpha;
67
- }`,e}constructor(t,e){if(super(o.ƀej(),o.ƀdr(t*O)),this.ƀcy=t,this.resolution=O,this.ƀcy=t*O,this.ƀcy<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀcy>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");helpersLib.Comparator.isInteger(this.ƀcy)||(this.ƀcy=Math.floor(this.ƀcy));let i=helpersLib.ColorHelper.normalize(e);this.uniforms.color=new Float32Array([i.red,i.green,i.blue]),this.uniforms.expandSquared=this.ƀcy*this.ƀcy,this.padding=this.ƀcy;}apply(t,e,i,r){this.uniforms.pixelSize=new Float32Array([1/(e.width*O),1/(e.height*O)]),t.applyFilter(this,e,i,r);}};var ve=class extends L__namespace.Filter{static{h(this,"GlowFilter");}constructor(t){super(),this.resolution=O;let e={blurRadius:1,expand:0,color:helpersLib.ColorHelper.white,blendMode:exports.BlendMode.Screen,...t};this.ƀcz=new xe(e.expand,e.color);let i=helpersLib.Comparator.isNumber(e.blurRadius)?new helpersLib.Vector(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀag=new Et(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀag.blendMode=L__namespace.BLEND_MODES.SCREEN;}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀcz.apply(t,e,s,L__namespace.CLEAR_MODES.CLEAR),this.ƀag.apply(t,s,i,r),t.returnFilterTexture(s);}};var Ut=class o{static{h(this,"GlowSpriteGenerator");}static{this.ƀem=new Map;}static createGlowSpriteFromSprite(t,e,i){let r=this.ƀbc(e),s=helpersLib.Comparator.isNumber(r.blurRadius)?new helpersLib.Vector(r.blurRadius,r.blurRadius):r.blurRadius,n=this.ƀdt(t.texture,s,r.expand,r.color,i),a=new L__namespace.Sprite(n);return this.ƀiz(a,helpersLib.Vector.fromVec2(t.anchor),Math.max(s.x,s.y)+r.expand),a.alpha=r.glowAlpha,a.blendMode=r.blendMode,a}static ƀdt(t,e,i,r,s){if(!t.id)throw new Error("GlowSpriteGenerator: baseTexture should have an id");if(s){let n=`${t.id}-${i}-${e.x}-${e.y}-${r.r}-${r.g}-${r.b}`;if(o.ƀem.has(n))return o.ƀem.get(n);{let a=this.ƀdu(t,e,i,r);return o.ƀem.set(n,a),a}}else return this.ƀdu(t,e,i,r)}static ƀdu(t,e,i,r){let s=new L__namespace.Sprite(t);this.ƀdb(s,Math.max(e.x,e.y)+i),s.filters=[new ve({blurRadius:e,expand:i,color:r})];let n=w.instance.renderer.generateTexture(s);return n.id=D.insertAsset(n),s.destroy(),n}static ƀiz(t,e,i){let r=(i+(t.width-i*2)*e.x)/t.width,s=(i+(t.height-i*2)*e.y)/t.height;t.anchor.set(r,s);}static ƀdb(t,e){if(t.isSprite){let s=new L__namespace.Graphics;t.addChild(s);}let i=t.width,r=t.height;t.calculateBounds=function(){this._bounds.clear(),this._bounds.addFrame(this.transform,-e,-e,i+e,r+e);};}static ƀbc(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:helpersLib.ColorHelper.white,blendMode:exports.BlendMode.Add};return t&&(e={...e,...t}),e}};_.onHardReset.subscribe(()=>{Ut.ƀem.clear();}).attachToRoot();var z=class o extends f{static{h(this,"Sprite");}static createByName(t){let e=w.setupOptions.spriteDefinitions[t];if(!e)throw new Error(`Sprite: Could not find sprite definition with name ${t}.`);return new o(e)}static createSnapshotSprite(t){let e=t.ƀhu,i=e.parent;i&&i.removeChild(e);let r=w.instance.renderer.generateTexture(e,{resolution:2,scaleMode:L__namespace.SCALE_MODES.LINEAR,multisample:L__namespace.MSAA_QUALITY.HIGH});i&&i.addChild(e);let n={id:D.insertAsset(r),scale:t.scale,size:t.size,anchor:helpersLib.Vector.zero,destroyAssetOnDestroy:true};return new o(n,{ignoreAnchor:true})}constructor(t,e={}){if(super(),this.ƀka=1,!t)throw new Error("Sprite: spriteDefinition cannot be nullish!");this.ƀjj=t,this.pixiSprite=new L__namespace.Sprite(D.getAsset(t.id)),this.ƀhu.addChild(this.pixiSprite),this.setTextureScale(t.scale),e.textureSize&&(this.pixiSprite.width=e.textureSize.x,this.pixiSprite.height=e.textureSize.y),e.texturePosition&&this.pixiSprite.position.set(e.texturePosition.x,e.texturePosition.y),e.ignoreAnchor||this.pixiSprite.anchor.set(t.anchor.x,t.anchor.y);}destroy(){this.destroyed||(super.destroy(),this.ƀgg?.destroy(),this.ƀai?.destroy(),this.ƀjj.destroyAssetOnDestroy&&(D.destroyAsset(this.ƀjj.id),this.ƀhv&&D.destroyAsset(this.ƀhv.texture.id)),this.ƀhv&&!this.ƀhv.destroyed&&this.ƀhv.destroy());}setTextureScale(t){return this.textureScale=t,this}get textureScale(){return this.ƀka}set textureScale(t){this.ƀka=t,this.pixiSprite.scale.set(t);}get size(){return new helpersLib.Vector(this.pixiSprite.width,this.pixiSprite.height)}getMask(){return this.pixiSprite}set interactive(t){super.interactive=t,t&&this.ƀjj.boundingShapes&&!this.ƀhu.hitArea&&(this.ƀhu.hitArea=new ue(this.ƀjj.boundingShapes,this.size,helpersLib.Vector.fromVec2(this.ƀjj.anchor)));}setMipmap(t){return this.mipmap=t,this}get mipmap(){return this.pixiSprite.texture.baseTexture.mipmap===L__namespace.MIPMAP_MODES.ON}set mipmap(t){t?this.pixiSprite.texture.baseTexture.mipmap=L__namespace.MIPMAP_MODES.ON:this.pixiSprite.texture.baseTexture.mipmap=L__namespace.MIPMAP_MODES.OFF;}setBlendMode(t){return this.blendMode=t,this}get blendMode(){return this.pixiSprite.blendMode}set blendMode(t){this.pixiSprite.blendMode=t;}setTint(t){return this.tint=t,this}get tint(){return new L__namespace.Color(this.pixiSprite.tint).toRgb()}set tint(t){this.pixiSprite.tint=t;}setShapeAlpha(t){return this.pixiSprite.alpha=t,this}get shapeAlpha(){return this.pixiSprite.alpha}set shapeAlpha(t){this.pixiSprite.alpha=t;}setGlowAlpha(t){return this.glowAlpha=t,this}get glowAlpha(){if(this.ƀhv)return this.ƀhv.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀhv)this.ƀhv.alpha=t;else throw new Error("Sprite: setGlowFilterAlpha cannot be called before glow filter is added.")}getAlignmentVector(t){let e=helpersLib.Vector.fromVec2(this.ƀjj.anchor).to(t);return new helpersLib.Vector(this.size.x*e.x,this.size.y*e.y)}setGlowEffect(t){return this.ƀhv&&(this.ƀhv.destroy(),this.ƀhv=void 0),t&&(this.ƀhv=Ut.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀjj.destroyAssetOnDestroy),this.ƀhv.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀhv.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.ƀhu.addChild(this.ƀhv)),this}showBoundingShape(t){return t?this.ƀai||(this.ƀai=this.ƀbr().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀai&&(this.ƀai.destroy(),this.ƀai=void 0),this}getBoundingMask(){if(!this.ƀgg){if(!this.ƀjj.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀgg=this.ƀbr(),this.ƀgg.pixiSprite._maskRefCount=Number.POSITIVE_INFINITY,this.ƀgg.pixiSprite.renderable=false,this.ƀgg.displayParent(this);}return this.ƀgg}ƀbr(){if(!this.ƀjj.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return E.createPolygon(this.ƀjj.boundingShapes,helpersLib.ColorHelper.white).toSprite().attach(this)}download(){let t=w.instance.renderer.extract.canvas(this.ƀhu);if(!t.toBlob)throw new Error("Sprite: canvas.toBlob is undefined!");return t.toBlob(e=>{if(!e)throw new Error("Sprite: blob is undefined!");let i=document.createElement("a");document.body.append(i),i.download="sprite.png",i.href=URL.createObjectURL(e),i.click(),i.remove();},"image/png"),this}};var Ke=class{static{h(this,"AnimationEaseInOutFlatter");}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},yt=class o extends f{static{h(this,"ScrollMaskUI");}static{this.ƀcq=new Map;}constructor(t,e,i,r=exports.ScrollDirection.Vertical){if(super(),i<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(e.y<i*2)throw new Error(`The height of the scroll mask cannot be lower than '${i*2}'`);let s=new f;r===exports.ScrollDirection.Horizontal?this.ƀbx(e,i,s):this.ƀce(e,i,s),this.ƀgg=z.createSnapshotSprite(s).attach(this),s.destroy(),t.setMask(this.ƀgg);}ƀce(t,e,i){e>0&&this.ƀbu(new helpersLib.Vector(t.x,e)).displayParent(i).attach(i),E.createRectangle(new helpersLib.Vector(t.x,t.y-e*2),helpersLib.ColorHelper.white).toSprite().setPosition(new helpersLib.Vector(0,e),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbu(new helpersLib.Vector(t.x,e)).setPosition(new helpersLib.Vector(t.x,t.y),{round:false}).setRotation(helpersLib.Radian.get180).displayParent(i).attach(i);}ƀbx(t,e,i){e>0&&this.ƀbu(new helpersLib.Vector(t.y,e)).setPosition(new helpersLib.Vector(0,t.y),{round:false}).setRotation(helpersLib.Radian.get270).displayParent(i).attach(i),E.createRectangle(new helpersLib.Vector(t.x-e*2,t.y),helpersLib.ColorHelper.white).toSprite().setPosition(new helpersLib.Vector(e,0),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbu(new helpersLib.Vector(t.y,e)).setPosition(new helpersLib.Vector(t.x,0),{round:false}).setRotation(helpersLib.Radian.get90).displayParent(i).attach(i);}ƀbu(t){let i={id:this.ƀbv(t.y),scale:1,size:t,anchor:{x:0,y:0}};return new z(i,{textureSize:t,ignoreAnchor:true})}ƀbv(t){let e=JSON.stringify({type:"gradient",length:t}),i=o.ƀcq.get(e);if(!i){let r=document.createElement("canvas");r.width=1,r.height=t;let s=r.getContext("2d");if(s){let n=new Ke;helpersLib.ArrayHelper.createIntegerArray(t).forEach(l=>{let c=`rgba(255, 255, 255, ${n.multiplierFunction(l/t)})`;s.fillStyle=c,s.fillRect(0,l,1,1);});let a=L__namespace.Texture.from(r);i=D.insertAsset(a),o.ƀcq.set(e,i);}else throw new Error("Canvas context is null")}return i}};exports.SlideStateAnimationState=void 0;(function(o){o[o.Appear=1]="Appear",o[o.Disappear=2]="Disappear";})(exports.SlideStateAnimationState||(exports.SlideStateAnimationState={}));var P;(function(o){o[o.Idle=1]="Idle",o[o.TransitionForward=2]="TransitionForward",o[o.TransitionBackward=3]="TransitionBackward",o[o.Reverting=4]="Reverting";})(P||(P={}));var be=class extends actionsLib.Attachable{static{h(this,"SlideStateAnimation");}constructor(t){super(),this.ƀn=P.Idle,this.ƀgy=new actionsLib.Action,this.ƀha=new actionsLib.Action,this.ƀhd={duration:500,animation:S.easeInOutCubic,...t},this.ƀjp=new ge({duration:this.ƀhd.duration,animation:this.ƀhd.animation}).onStateChange((e,i)=>this.ƀes(e,i)).onValueChange(e=>this.ƀet(e)).attach(this);}setIndex(t,e){if(!helpersLib.Comparator.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfh===void 0?(this.ƀfh=t,this.ƀgy.trigger({state:exports.SlideStateAnimationState.Appear,index:t}),this.ƀjp.setState(t,e)):this.ƀfh!==t?this.ƀgp!==t?this.ƀn===P.Idle?(this.ƀn=t>this.ƀfh?P.TransitionForward:P.TransitionBackward,this.ƀgp=t,this.ƀgy.trigger({state:exports.SlideStateAnimationState.Appear,index:this.ƀgp}),this.ƀjp.setState(t,e)):this.ƀjp.setState(t,e):this.ƀn===P.Reverting&&this.ƀgp===t&&(this.ƀn=t>this.ƀfh?P.TransitionForward:P.TransitionBackward,this.ƀjp.setState(t,e)):(this.ƀn===P.TransitionForward||this.ƀn===P.TransitionBackward)&&(this.ƀn=P.Reverting,this.ƀjp.setState(t,e));}ƀes(t,e){switch(this.ƀfh!==void 0&&this.ƀfh!==t&&this.ƀfh!==e&&this.ƀgy.trigger({state:exports.SlideStateAnimationState.Disappear,index:this.ƀfh}),this.ƀgp!==void 0&&this.ƀgp!==t&&this.ƀgp!==e&&this.ƀgy.trigger({state:exports.SlideStateAnimationState.Disappear,index:this.ƀgp}),e!==void 0&&e!==this.ƀfh&&e!==this.ƀgp&&this.ƀgy.trigger({state:exports.SlideStateAnimationState.Appear,index:e}),this.ƀn){case P.Idle:break;case P.TransitionForward:case P.TransitionBackward:e===void 0?(this.ƀn=P.Idle,this.ƀfh=this.ƀgp,this.ƀgp=void 0):this.ƀfh!==t&&this.ƀep(t,e);break;case P.Reverting:e===void 0?(this.ƀn=P.Idle,this.ƀgp=void 0):this.ƀfh!==e&&this.ƀep(t,e);break;default:{this.ƀn;throw new Error(`Unexpected case! "${this.ƀn}"`)}}}ƀet(t){let e=1;(this.ƀn===P.TransitionBackward||this.ƀn===P.Reverting&&this.ƀfh!==void 0&&this.ƀgp!==void 0&&this.ƀfh>this.ƀgp)&&(e=-1),(this.ƀn===P.Idle||t!==0)&&this.ƀha.trigger({value:helpersLib.NumberHelper.ensurePositiveZero(-e*t),index:this.ƀfh}),this.ƀgp!==void 0&&this.ƀha.trigger({value:helpersLib.NumberHelper.ensurePositiveZero(e*(1-t)),index:this.ƀgp});}ƀep(t,e){this.ƀfh=t,this.ƀgp=e,this.ƀha.trigger({value:0,index:this.ƀfh}),this.ƀn=this.ƀfh<this.ƀgp?P.TransitionForward:P.TransitionBackward;}onStateChange(t){return this.ƀgy.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀha.subscribe(e=>t(e.value,e.index)).attach(this),this}};exports.ScrollDirection=void 0;(function(o){o[o.Horizontal=1]="Horizontal",o[o.Vertical=2]="Vertical";})(exports.ScrollDirection||(exports.ScrollDirection={}));var Ze=class extends f{static{h(this,"SlideInContentByIndex");}constructor(t,e){super(),this.ƀbt=t,this.ƀcl="x",this.ƀbj=new Map,this.ƀhd={duration:300,animation:S.easeInOutCubic,size:new helpersLib.Vector(500,500),margin:20,direction:exports.ScrollDirection.Horizontal,...e};let i=this.ƀhd.direction===exports.ScrollDirection.Horizontal?new helpersLib.Vector(this.ƀhd.size.x+this.ƀhd.margin*2,this.ƀhd.size.y):new helpersLib.Vector(this.ƀhd.size.x,this.ƀhd.size.y+this.ƀhd.margin*2),r=new f().setPosition(this.ƀhd.direction===exports.ScrollDirection.Horizontal?new helpersLib.Vector(-this.ƀhd.margin,0):new helpersLib.Vector(0,-this.ƀhd.margin),{round:false}).displayParent(this).attach(this);this.ƀby(i,this.ƀhd.margin,this.ƀhd.direction,r),this.ƀcl=this.ƀhd.direction===exports.ScrollDirection.Horizontal?"x":"y",this.ƀjp=new be({duration:this.ƀhd.duration,animation:this.ƀhd.animation}).onStateChange((s,n)=>{if(s===exports.SlideStateAnimationState.Appear){let a=new f().displayParent(this).attach(this);this.ƀbj.set(n,a),this.ƀbt({index:n,container:a});}else {let a=this.ƀbj.get(n);a&&(a.destroy(),this.ƀbj.delete(n));}}).onValueChange((s,n)=>{let a=this.ƀbj.get(n);if(a){let l={x:0,y:0};l[this.ƀcl]=i[this.ƀcl]*s+this.ƀhd.margin,a.setPosition(helpersLib.Vector.fromVec2(l),{round:false});}}).attach(this),this.addChildTo=r;}setIndex(t,e){return this.ƀjp.setIndex(t,e),this}ƀby(t,e,i,r){new yt(r,new helpersLib.Vector(t.x,t.y),e,i).attach(this);}},Li=class extends Ze{static{h(this,"SlideInContent");}constructor(t,e,i){super(r=>{let s=this.indexToItem.get(r.index);if(s)e({index:r.index,item:s,container:r.container});else throw new Error(`SlideInContent: The item with index '${r.index}' is not part of the items list`)},i),this.itemToIndex=new Map,this.indexToItem=new Map,t.forEach((r,s)=>{this.itemToIndex.set(r,s),this.indexToItem.set(s,r);});}setItem(t,e){let i=this.itemToIndex.get(t);if(i!==void 0)this.setIndex(i,e);else throw new Error(`SlideInContent: The item '${t}' is not part of the items list`);return this}};var xt=class{static{h(this,"VectorSet");}constructor(){this.ƀkm=new Map;}add(t){let e=this.ƀkm.get(t.x);e||(e=new Set,this.ƀkm.set(t.x,e)),e.add(t.y);}has(t){let e=this.ƀkm.get(t.x);return e?e.has(t.y):false}delete(t){let e=this.ƀkm.get(t.x);return e?e.delete(t.y):false}};var Qe=class{static{h(this,"DeltaTime");}static adjustMultiplier(t,e){return Math.pow(t,e)}};var B=class{static{h(this,"PositionToGridPositionConverter");}static areaToGridArea(t,e){return new helpersLib.Rectangle(this.positionToGridPosition(t.topLeft,e),this.positionToGridPosition(t.bottomRight,e))}static positionToGridPosition(t,e){return t.divideNumber(e).floor()}static gridPositionToPosition(t,e){return t.add(new helpersLib.Vector(.5,.5)).multiplyNumber(e)}};var kt=class{static{h(this,"ClosestAvailableSpaceHelper");}static findByConvertingGridSpace(t,e,i){let r=new helpersLib.Vector(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),s=B.areaToGridArea(e,i);if(this.ƀar(t,s))return helpersLib.Vector.zero;let n=t.movePositionInsideGrid(s.topLeft),a=helpersLib.Vector.fromTo(s.topLeft,n),l=this.find(t,n,r);if(l){let c=l.add(a),p=helpersLib.Vector.fromTo(s.topLeft.multiplyNumber(i),e.topLeft);return new helpersLib.Vector(c.x*i+((r.x+1)*i-e.size.x)/2-p.x,c.y*i+((r.y+1)*i-e.size.y)/2-p.y)}}static find(t,e,i){let r=new xt,s=new helpersLib.Queue(e);for(;s.notEmpty;){let n=s.pop();r.add(n);let a=new helpersLib.Rectangle(n,n.add(i));if(this.ƀar(t,a))return helpersLib.Vector.fromTo(e,n);t.getNeighborPositions(n,helpersLib.GridNeighborType.Ortogonal).forEach(l=>{r.has(l)||s.add(l);});}}static ƀar(t,e){if(!t.isAreaWithinBounds(e))return false;for(let i=e.topLeft.y;i<=e.bottomRight.y;i++)for(let r=e.topLeft.x;r<=e.bottomRight.x;r++)if(!t.get(new helpersLib.Vector(r,i)))return false;return true}};var Ni=class{static{h(this,"PathfinderNode");}constructor(t,e,i,r=void 0){this.position=t,this.distanceFromStart=e,this.distanceToEnd=i,this.parent=r,this.closed=false;}get pathLength(){return this.distanceFromStart+this.distanceToEnd}isEqual(t){return helpersLib.Vector.isEqual(this.position,t)}createSolutionPath(t){let e=[this.position],i=this.parent;for(;i!==void 0;)e.push(i.position),i=i.parent;return e.reverse(),{directPathAvailable:t,path:e}}getDistance(t){return this.position.getDistance(t)}},ls=class{static{h(this,"PathfinderGrid");}constructor(t,e){this.ƀeo=t,this.ƀjm=e,this.ƀhc=new helpersLib.BinaryHeap("min"),this.ƀav=[],this.ƀgr=new helpersLib.Grid({size:t.size,defaultValue:void 0});let i=new Ni(this.ƀjm,0,Number.MAX_SAFE_INTEGER);this.ƀhc.add(i.pathLength,i);}get hasOpenNodes(){return this.ƀhc.size>0}getNeighbors(t,e){return this.ƀeo.getNeighborPositions(t.position,e).filter(i=>this.ƀeo.get(i)).map(i=>this.ƀgr.get(i)||this.ƀbz(i))}popLowestPathCostNode(){let t=this.ƀhc.pop();return this.ƀhc.delete(t),t.closed=true,this.ƀav.push(t),t}changeNodeCost(t,e,i,r){this.ƀhc.delete(t),t.distanceFromStart=e,t.distanceToEnd=t.getDistance(i),t.parent=r,this.ƀhc.add(t.pathLength,t);}getBestClosedNode(){return this.ƀav.reduce((t,e)=>t.distanceToEnd<e.distanceToEnd?t:e)}ƀbz(t){let e=new Ni(t,Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);return this.ƀgr.set(t,e),this.ƀhc.add(e.pathLength,e),e}},zt=class{static{h(this,"PathFinder");}static findPath(t,e,i,r){let s=new ls(t,e);for(;s.hasOpenNodes;){let n=s.popLowestPathCostNode();if(n.isEqual(i))return n.createSolutionPath(true);let a=s.getNeighbors(n,r);for(let l of a)if(!l.closed){let c=n.distanceFromStart+n.getDistance(l.position);c<l.distanceFromStart&&s.changeNodeCost(l,c,i,n);}}return s.getBestClosedNode().createSolutionPath(false)}};var Jt=class{static{h(this,"VectorFieldPathFinder");}constructor(t,e){this.ƀju=t,this.ƀw=e,this.ƀev=this.ƀdw(this.ƀw.size),this.ƀku=new helpersLib.Grid({size:this.ƀw.size,defaultValue:this.ƀev}),this.ƀcm=new helpersLib.Grid({size:this.ƀw.size,defaultValue:void 0});let i=new xt,r=new helpersLib.Queue;for(this.ƀdk(this.ƀw.cropAreaOutsideOfTheGrid(t)).forEach(n=>{this.ƀku.set(n,0),r.add(n);});r.notEmpty;){let n=r.pop();if(!i.has(n)){i.add(n);let a=this.ƀku.getOrFail(n);this.ƀeb(n,this.ƀw).forEach(l=>{if(!i.has(l.position)){let c=this.ƀku.getOrFail(l.position),p=a+l.distance;this.ƀw.getOrFail(l.position)&&p<c&&(this.ƀku.set(l.position,p),r.add(l.position));}});}}}getDirectionToTarget(t){if(!t.isInsideRectangle(this.ƀju)){if(t=this.ƀku.movePositionInsideGrid(t),this.ƀcm.has(t))return this.ƀcm.get(t);{let e=this.ƀeb(t,this.ƀw),i;return this.ƀku.getOrFail(t)>=this.ƀev?e.some(s=>this.ƀw.get(s.position))&&(e.some(n=>!this.ƀw.get(n.position))?i=this.ƀdq(e):i=this.ƀdl(t,e)):i=this.ƀdl(t,e),this.ƀcm.set(t,i),i}}}ƀdq(t){let e=t.filter(i=>this.ƀw.get(i.position)).map(i=>i.direction.radian);return helpersLib.Radian.getAverage(...e)}ƀdl(t,e){let i=e.filter(r=>this.ƀku.getOrFail(r.position)<this.ƀev).reduce((r,s)=>{let n=this.ƀku.getOrFail(s.position)+s.distance;return n<r.bestWeight?(r.bestDirections=[s.direction],r.bestWeight=n):n===r.bestWeight&&r.bestDirections.push(s.direction),r},{bestDirections:[],bestWeight:this.ƀev}).bestDirections;return this.ƀeh(i,t)}ƀeh(t,e){if(t.length>0){let i=t.reduce((r,s)=>r.add(s),helpersLib.Vector.zero);if(i.isZero()||!this.ƀfn(e,i))return helpersLib.Random.pickRandomElement(t).radian;if(t.length>=1)return i.radian}}ƀfn(t,e){let i=t.add(this.ƀkn(e));return this.ƀw.isPointWithinBounds(i)&&this.ƀw.getOrFail(i)}ƀeb(t,e){return this.ƀku.getNeighborDirections(t,helpersLib.GridNeighborType.All).map(i=>({position:t.add(i),direction:i,distance:i.x!==0&&i.y!==0?14:10}))}ƀdk(t){let e=[];for(let i=t.topLeft.y;i<=t.bottomRight.y;i++)for(let r=t.topLeft.x;r<=t.bottomRight.x;r++)e.push(new helpersLib.Vector(r,i));return e}ƀkn(t){let e=t.normalize().round();return new helpersLib.Vector(e.x,e.y)}ƀdw(t){return (t.x+t.y)*20}};var us=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},V=class extends ut{static{h(this,"CameraEntity");}constructor(){super(...arguments),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.offset=new actionsLib.Variable(helpersLib.Vector.zero),this.targetPosition=new actionsLib.Variable(void 0),this.focusingNewTargetInfo=new actionsLib.Variable(void 0);}};V=us([ft()],V);var ms=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},gs=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},It=class extends dt{static{h(this,"CameraView");}constructor(t){super(),this.ƀcw=t,this.ƀin=new f().setAlpha(0).displayParent(w.instance.stage).attach(this),this.ƀac=E.createRectangle(new helpersLib.Vector(1,1),helpersLib.ColorHelper.black).toSprite({cache:true}).setAlpha(0).displayParent(w.instance.stage).attach(this),this.ƀaa=new f().displayParent(this.ƀin).attach(this),this.ƀao=new f().displayParent(this.ƀin).attach(this),this.ƀdg=new f().setSortableChildren(true).displayParent(this.ƀin).attach(this),this.ƀan=new f().setSortableChildren(true).displayParent(this.ƀao).attach(this),this.ƀdf=new f().setSortableChildren(true).setZIndex(20).displayParent(this.ƀan).attach(this),this.ƀge=new f().setSortableChildren(true).setZIndex(10).displayParent(this.ƀan).attach(this),this.ƀz=new f().setZIndex(0).displayParent(this.ƀan).attach(this),this.ƀh=new M(this.ƀin,"alpha",{duration:500,animation:S.easeInOutCubic,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),this.ƀad=new M(this.ƀac,"alpha",{duration:500,animation:S.easeInOutCubic,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),w.instance.screenSize.subscribe(e=>{this.ƀac.aspectRatio=e.x/e.y,this.ƀac.scale=Math.max(e.x,e.y),this.ƀac.setPosition(helpersLib.Vector.zero,{holdFrom:helpersLib.Vector.zero});}).attach(this),w.instance.setScreenPositionToStagePositionFunction(e=>new helpersLib.Vector(e.x-this.ƀan.position.x-this.ƀao.position.x,e.y-this.ƀan.position.y-this.ƀao.position.y)),this.ƀcw.position.subscribe(e=>{this.ƀan.position=this.ƀbo(e);}).attach(this),this.ƀcw.offset.subscribe(e=>{this.ƀao.position=e;}).attach(this),this.appear(true,"alpha");}destroy(){this.destroyed||(super.destroy(),w.instance.resetScreenPositionToStagePositionFunction());}getLayers(){return {backgroundScreen:this.ƀaa.id,background:this.ƀz.id,main:this.ƀge.id,foreground:this.ƀdf.id,foregroundScreen:this.ƀdg.id}}appear(t,e){switch(e){case "alpha":return this.ƀad.set({alpha:0}),this.ƀh.set({alpha:t?0:1}),this.ƀh.animate({alpha:t?1:0}).chain(this);case "pureBlack":return this.ƀh.set({alpha:1}),this.ƀad.set({alpha:t?1:0}),this.ƀad.animate({alpha:t?0:1}).chain(this);case "instant":return this.ƀh.set({alpha:t?1:0}),this.ƀad.set({alpha:t?0:1}),actionsLib.SingleEvent.instant();default:{throw new Error('Switch ended with value "never".')}}}ƀbo(t){return helpersLib.Vector.fromTo(t,w.instance.screenSizeCenter.value)}};It=ms([ke({entity:V}),gs("design:paramtypes",[V])],It);var xs=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},vs=1500,Pe=class{static{h(this,"CameraService");}createCamera(){return new V().attachToRoot()}getCameraPosition(){let t=V.getInstanceOrFail();return helpersLib.Vector.fromTo(t.offset.value,t.position.value)}setPosition(t){let e=V.getInstanceOrFail();e.targetPosition.value=t;}setTransition(t){let e=V.getInstanceOrFail();e.focusingNewTargetInfo.value={time:w.time,duration:t?.duration??vs,position:e.position.value,roundPosition:t?.roundPosition??false,roundPositionThreshold:t?.roundPositionThreshold??0,focusingAnimation:t?.animation??exports.FocusingAnimation.Instant};}update(t,e){let i=V.getInstanceOrFail(),r=i.targetPosition.value;r&&(i.focusingNewTargetInfo.value?this.ƀfq(i,r,t):i.position.value=r);}ƀfq(t,e,i){let r=t.focusingNewTargetInfo.value;if(r.focusingAnimation===exports.FocusingAnimation.Instant)this.ƀbb(t,e);else {let s=(i-r.time)/r.duration;if(s>=1)this.ƀbb(t,e);else {let n;r.focusingAnimation===exports.FocusingAnimation.EaseInOut?n=$.easeInOut(s):r.focusingAnimation===exports.FocusingAnimation.EaseOut?n=$.easeOut(s):n=1;let a=r.position.lerp(e,n);r.roundPosition&&(Math.abs(a.x-r.position.x)>=r.roundPositionThreshold&&(a=new helpersLib.Vector(Math.round(a.x),a.y)),Math.abs(a.y-r.position.y)>=r.roundPositionThreshold&&(a=new helpersLib.Vector(a.x,Math.round(a.y)))),t.position.value=a;}}}ƀbb(t,e){t.position.value=e,t.focusingNewTargetInfo.value=void 0;}};Pe=xs([d()],Pe);var bs=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ss=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},ei=class{static{h(this,"CameraController");}constructor(t){this.ƀap=t;}createCamera(){return this.ƀap.createCamera().id}update(t,e){this.ƀap.update(t,e);}setPosition(t){this.ƀap.setPosition(t);}setTransition(t){this.ƀap.setTransition(t);}getCameraPosition(){return this.ƀap.getCameraPosition()}};ei=bs([Z(exports.CameraGateway),Ss("design:paramtypes",[Pe])],ei);var Ps=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ii=class{static{h(this,"CameraViewController");}getLayers(){let t=V.getInstanceOrFail().id;return It.getInstanceOrFail(t).getLayers()}appear(t,e){let i=V.getInstanceOrFail().id;return It.getInstanceOrFail(i).appear(t,e)}};ii=Ps([Z(gt)],ii);var Xt=class{static{h(this,"Camera");}get position(){return this.ƀam.getCameraPosition()}constructor(){this.ƀam=T.get(exports.CameraGateway),this.ƀaq=T.get(gt),this.ƀam.createCamera(),this.layers=this.ƀaq.getLayers();}setPosition(t){this.ƀam.setPosition(t);}setTransition(t){this.ƀam.setTransition(t);}appear(t,e="alpha"){return this.ƀaq.appear(t,e)}};var w=class o{static{h(this,"Game");}static get instance(){return this.ƀfk}static{this.pause=actionsLib.Reducer.createOr();}static get camera(){return this.ƀal}static get time(){return y.ƀkb}static get setupOptions(){return this.ƀjc}constructor(t){if(this.ƀir=new actionsLib.Variable(helpersLib.Vector.zero),this.screenSize=this.ƀir.notifier,this.ƀis=new actionsLib.Variable(helpersLib.Vector.zero),this.screenSizeCenter=this.ƀis.notifier,this.devMode=false,this.resetScreenPositionToStagePositionFunction(),o.ƀfk)throw new Error("There can be only one Game instance!");{this.ƀbf={screenResolution:void 0,maxScreenResolution:void 0,devMode:false,backgroundColor:helpersLib.ColorHelper.black,antialias:false,resolution:1,...t},this.devMode=this.ƀbf.devMode||false;let e=helpersLib.JsonHelper.removeUndefinedProperties({backgroundColor:this.ƀbf.backgroundColor,autoStart:false,antialias:this.ƀbf.antialias,resolution:this.ƀbf.resolution,width:this.ƀbf.screenResolution?.width,height:this.ƀbf.screenResolution?.height});this.ƀht=new L__namespace.Application(e);}}async setup(t){o.ƀjc=t;let e=document.body.appendChild(this.ƀht.view);this.ƀjb(e),await Promise.all([D.loadGameAssets(t.assetDefinitions)]),o.ƀfk=this,this.stage=new f().attachToRoot(),this.stage.ƀhu=this.ƀht.stage,this.renderer=this.ƀht.renderer,this.stage.sortableChildren=true,globalThis.ƀa=this.ƀht,this.ƀeq(),o.ƀal=new Xt,this.ƀht.start(),this.ƀht.ticker.add(()=>{y.triggerUpdateTick(this.ƀht.ticker.deltaMS);});}setResolution(t){if(this.ƀht.renderer.resolution!==t){this.ƀht.renderer.resolution=t;let e=this.ƀef();this.ƀht.renderer.resize(e.x,e.y);}}screenPositonToStagePosition(t){let e=Ht.includeScaleInScreenPosition(t,o.instance.stage.scale,o.instance.screenSizeCenter.value);return this.ƀiq(e)}setScreenPositionToStagePositionFunction(t){this.ƀiq=t;}resetScreenPositionToStagePositionFunction(){this.ƀiq=t=>t;}destroyAsset(t){D.destroyAsset(t);}ƀeq(){this.ƀcu(),this.ƀja(),window.addEventListener("resize",t=>{this.ƀcu(),this.ƀja();});}ƀcu(){let t=this.ƀef();(t.x!==this.ƀht.screen.width||t.y!==this.ƀht.screen.height)&&this.ƀht.renderer.resize(t.x,t.y);}ƀja(){let t=new helpersLib.Vector(this.ƀht.screen.width,this.ƀht.screen.height);this.ƀir.value=t,this.ƀis.value=t.multiplyNumber(.5).round();}ƀef(){let t=this.ƀbf.screenResolution?.width??window.innerWidth,e=this.ƀbf.screenResolution?.height??window.innerHeight;return this.ƀbf.maxScreenResolution&&(t=Math.min(t,this.ƀbf.maxScreenResolution.width),e=Math.min(e,this.ƀbf.maxScreenResolution.height)),new helpersLib.Vector(t,e)}ƀjb(t){this.ƀbf.maxScreenResolution&&(t.style.maxWidth=`${this.ƀbf.maxScreenResolution?.width}px`,t.style.maxHeight=`${this.ƀbf.maxScreenResolution?.height}px`),t.style.width="100%",t.style.height="100%";}};var Ee=class{static{h(this,"DashedLineHelper");}static getLines(t,e,i){let r=helpersLib.Vector.fromTo(t,e),s=r.normalize(),n=r.length-i.lineStartGap-i.lineEndGap,a=[];if(n<=0)return a;let l=t.add(s.normalize(i.lineStartGap));if(n<=i.dashGap+i.dashLength*.5)return a.push({from:l,to:l.add(s.normalize(n))}),a;let c=n-i.dashGap,p=i.dashLength+i.dashGap,m=Math.floor(c/p),g=c-p*m;m>=1&&g<i.dashLength&&(g+=p,m--);let R=s.normalize(g/2),bt=s.normalize(i.dashGap);if(a.push({from:l,to:l.add(R)}),l=l.add(R),m>0){let re=s.normalize(i.dashLength);helpersLib.ArrayHelper.createEmptyArray(m).forEach(()=>{l=l.add(bt),a.push({from:l,to:l.add(re)}),l=l.add(re);});}return l=l.add(bt),a.push({from:l,to:l.add(R)}),a}};var E=class o extends f{static{h(this,"Graphics");}static{this.ƀcq=new Map;}static createArrow(t,e){let i=new L__namespace.Graphics,r=[[{x:0,y:-t/2},{x:t*3/8,y:-t/8},{x:t/4,y:0},{x:0,y:-t/4},{x:-t/4,y:0},{x:-t*3/8,y:-t/8}],[{x:0,y:-t/4},{x:t/8-t/30,y:-t/8-t/30},{x:t/8-t/30,y:t*7/16},{x:-t/8+t/30,y:t*7/16},{x:-t/8+t/30,y:-t/8-t/30}]];return i.beginFill(e),r.forEach(s=>{i.drawPolygon(s.map(n=>new L__namespace.Point(n.x,n.y)));}),i.endFill(),new o(i,JSON.stringify({type:"arrow",size:t,color:e}))}static createDashedLine(t,e,i){let r={width:2,dashLength:10,dashGap:4,lineStartGap:0,lineEndGap:0,color:helpersLib.ColorHelper.white,...i},s=new L__namespace.Graphics;return s.lineStyle(r.width,r.color),Ee.getLines(t,e,r).forEach(a=>{s.moveTo(a.from.x,a.from.y).lineTo(a.to.x,a.to.y);}),new o(s,JSON.stringify({type:"dashedLine",from:t,to:e,options:r}))}static createVector(t,e,i){let r=new L__namespace.Graphics;return r.lineStyle(2,i),r.moveTo(t.x,t.y),r.lineTo(e.x,e.y),r.lineStyle(1,i),r.beginFill(helpersLib.ColorHelper.white),r.drawCircle(t.x,t.y,3),r.endFill(),new o(r,JSON.stringify({type:"line",start:t,end:e,color:i}))}static createRectangleBorders(t,e,i){let r=new L__namespace.Graphics;return r.beginFill(i),r.drawRect(0,0,t.x,e),r.drawRect(0,e,e,t.y-e*2),r.drawRect(t.x-e,e,e,t.y-e*2),r.drawRect(0,t.y-e,t.x,e),r.endFill(),new o(r,JSON.stringify({type:"rectangle-borders",size:t,borderSize:e,color:i}))}static createRectangle(t,e=helpersLib.ColorHelper.white){let i=new L__namespace.Graphics;return i.beginFill(e),i.drawRect(0,0,t.x,t.y),i.endFill(),new o(i,JSON.stringify({type:"rectangle",size:t,color:e}))}static createCircle(t,e){let i=new L__namespace.Graphics;return i.beginFill(e),i.drawCircle(0,0,t),i.endFill(),new o(i,JSON.stringify({type:"circle",radius:t,color:e}))}static createElipse(t,e){let i=new L__namespace.Graphics;return i.beginFill(e),i.drawEllipse(0,0,t.x,t.y),i.endFill(),new o(i,JSON.stringify({type:"elipse",size:t,color:e}))}static createPolygon(t,e){let i=new L__namespace.Graphics,r=JSON.stringify({type:"polygon",polygon:t,color:e});return i.beginFill(e),t.forEach(s=>{i.drawPolygon(s.map(n=>new L__namespace.Point(n.x,n.y)));}),i.endFill(),new o(i,r)}static createRegularPolygon(t,e,i){let r=new L__namespace.Graphics,s=new helpersLib.Radian(helpersLib.PI_360/t);r.beginFill(i),r.moveTo(e,0);for(let n=1;n<=t;n++){let l=s.multiply(n).vector.normalize(e),c=e+l.x,p=e+l.y;r.lineTo(c,p);}return r.endFill(),new o(r,JSON.stringify({type:"regular-polygon",sides:t,radius:e,color:i}))}constructor(t,e){super(),this.ƀhu.addChild(t),this.pixiGraphics=t,this.ƀak=e;}destroy(){this.destroyed||(super.destroy(),!this.pixiGraphics.destroyed&&this.pixiGraphics.destroy());}toSprite(t){let e={cacheName:this.ƀak,cache:false,...t},i=this.ƀeg(e.cacheName,e.cache),r={id:i.assetID,scale:1,size:i.bounds,anchor:{x:0,y:0},destroyAssetOnDestroy:!e.cache},s=new z(r,{texturePosition:i.bounds,ignoreAnchor:true});return this.attachToRoot(),this.destroy(),s}ƀeg(t,e){if(e){let i=o.ƀcq.get(t);return i||(i=this.ƀcd(),o.ƀcq.set(t,i)),i}else return this.ƀcd()}ƀcd(){let t=w.instance.renderer.generateTexture(this.pixiGraphics);t.id=D.insertAsset(t);let e=this.pixiGraphics.getBounds();return {assetID:t.id,bounds:new helpersLib.Vector(e.x,e.y)}}};var si=class extends f{static{h(this,"Placeholder");}constructor(t){super(),this.ƀhw=new L__namespace.Graphics,this.ƀhw.beginFill(0,1e-9),this.ƀhw.drawRect(0,0,t.x,t.y),this.ƀhw.endFill(),this.ƀhu.addChild(this.ƀhw);}destroy(){this.destroyed||(super.destroy(),this.ƀhw.destroy());}};var At=class{static{h(this,"TextStyleConverter");}static getPixiTextStyle(t){let e={color:helpersLib.ColorHelper.white,align:"center",fontFamily:"Arial",fontStyle:"normal",fontSize:18,lineHeight:void 0,wordWrapWidth:void 0,lineThrough:false,...t},i=t?.dropShadow===true?{}:t?.dropShadow,r={};if(i){let s={blur:4,angle:helpersLib.Radian.get60,distance:10,color:helpersLib.ColorHelper.black,alpha:.5,...i};r={dropShadow:true,dropShadowBlur:s.blur,dropShadowAngle:s.angle.value,dropShadowDistance:s.distance,dropShadowColor:helpersLib.ColorHelper.rgbToHex(s.color),dropShadowAlpha:s.alpha};}return helpersLib.JsonHelper.removeUndefinedProperties({fontFamily:e.fontFamily,fill:helpersLib.ColorHelper.rgbToHex(e.color),align:e.align,fontSize:e.fontSize,fontStyle:e.fontStyle,lineHeight:e.lineHeight,wordWrapWidth:e.wordWrapWidth,wordWrap:e.wordWrapWidth!==void 0,lineThrough:e.lineThrough,...r})}};var Ce=class{static{h(this,"RichTextDataInConverter");}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),r=scriptEngineLib.RichTextSeparator.process(t,i),s=this.ƀfg(r,e),n=this.ƀr(s);return this.ƀjh(n)}static ƀfg(t,e){let i=new Map,r=new Map,s=h((a,l)=>{if(r.has(l))return r.get(l);let c=At.getPixiTextStyle(a);return r.set(l,c),c},"GetPixiStyle");return t.map(a=>{let{style:l,cacheKey:c}=this.ƀdo(a.tags,e,i),p=s(l,c),m=L__namespace.TextMetrics.measureText(" ",new L__namespace.TextStyle(p),false);return {text:a.text,cacheKey:c,style:l,pixiStyle:p,spaceWidth:m.width}})}static ƀdo(t,e,i){let r=t.join("+");if(i.has(r))return {style:i.get(r),cacheKey:r};let s=this.ƀba(t,e);return i.set(r,s),{style:s,cacheKey:r}}static ƀba(t,e){let i={...e.default};for(let l of t)e.styles&&e.styles[l]&&(i={...i,...e.styles[l]});let{wordWrapWidth:r,align:s,dropShadow:n,...a}=i;return a}static ƀr(t){let e=[],i=[];return t.forEach((r,s)=>{r.text.split(/\r?\n/).forEach((a,l)=>{l>0&&(e.push(i),i=[]),i.push({text:a,cacheKey:r.cacheKey,style:r.style,pixiStyle:r.pixiStyle,spaceWidth:r.spaceWidth});});}),e.push(i),e}static ƀjh(t){let e=[];return t.forEach(i=>{if(i.length===0)throw new Error("Internal Error: Line is unexpectedly empty");let r=i.flatMap(s=>this.ƀji(s.text).map(a=>{let l=new L__namespace.TextStyle(s.pixiStyle),c=L__namespace.TextMetrics.measureText(a,l,false);return {text:a,whitespace:a.trim()==="",style:{cacheKey:s.cacheKey,style:s.style,pixiStyle:l,height:c.height,ascent:c.fontProperties.ascent,descent:c.fontProperties.descent,width:c.width,spaceWidth:s.spaceWidth}}}));e.push(r);}),e}static ƀji(t){if(t==="")return [""];let e=[],i="",r=t[0]===" ";for(let s=0;s<t.length;s++){let n=t[s],a=n===" ";a===r?i+=n:(e.push(i),i=n,r=a);}return i&&e.push(i),e}};var Ie=class{static{h(this,"RichTextTypewriter");}get lineIsEmpty(){return this.ƀch.length===0}get remainingWidth(){return this.ƀkv-this.ƀcj}constructor(t,e){this.ƀkv=t,this.ƀfy=[],this.ƀch=[],this.ƀcj=0,this.ƀfx=new helpersLib.Vector(0,0),this.ƀci=0;let i={rectangleCutOption:void 0,horizontalAlignment:"left",verticalAlignment:"bottom",...e};if(this.ƀey=i.horizontalAlignment,this.ƀko=i.verticalAlignment,i.rectangleCutOption){if(i.rectangleCutOption.position.x<0||i.rectangleCutOption.position.x>=this.ƀkv||i.rectangleCutOption.position.y<0)throw new Error("Rectangle cut position is out of bounds");this.ƀck={direction:i.rectangleCutOption.direction,rectangle:this.ƀbn(i.rectangleCutOption)};}}isSpaceAvailable(t){let e=Math.max(this.ƀci,t.y),i=this.ƀdx(this.ƀfx.y,this.ƀfx.y+e);return this.ƀcj+t.x<=i}insertWord(t){let e=Math.max(this.ƀci,t.style.height);if(this.ƀch.length===0){let i=this.ƀdy(this.ƀfx.y,this.ƀfx.y+e);this.ƀfx=new helpersLib.Vector(i,this.ƀfx.y),this.ƀcj=this.ƀfx.x;}this.ƀch.push({chunk:t,position:new helpersLib.Vector(this.ƀcj,this.ƀfx.y)}),this.ƀci=e,this.ƀcj+=t.style.width;}newLine(){let t=this.ƀfx.y+this.ƀci,e=this.ƀdy(t,t);this.ƀdd(),this.ƀfx=new helpersLib.Vector(e,t),this.ƀcj=this.ƀfx.x,this.ƀci=0;}print(){return this.ƀdd(),this.ƀfy}ƀdd(){this.ƀch.length>0&&(this.ƀfy.push(this.ƀg(this.ƀch)),this.ƀch=[]);}ƀg(t){return t=this.ƀkq(t),t=this.ƀfa(t),t}ƀfa(t){if(this.ƀey==="left")return t;let e=this.ƀfx.y+this.ƀci,i=this.ƀdy(this.ƀfx.y,e),s=this.ƀdx(this.ƀfx.y,e)-i,n=Math.min(s,t.reduce((l,c)=>l+c.chunk.style.width,0)),a;return this.ƀey==="center"?a=(s-n)/2:a=s-n,t.map(l=>(l={chunk:l.chunk,position:new helpersLib.Vector(l.position.x+a,l.position.y)},l))}ƀkq(t){let e=Math.max(...t.map(r=>r.chunk.style.ascent)),i=Math.max(...t.map(r=>r.chunk.style.descent));return t.map(r=>{let s;switch(this.ƀko){case "top":s=i-r.chunk.style.descent;break;case "center":s=(i-r.chunk.style.descent+e-r.chunk.style.ascent)*.5;break;case "bottom":s=e-r.chunk.style.ascent;break;default:{this.ƀko;throw new Error(`Unexpected case! "${this.ƀko}"`)}}return r={chunk:r.chunk,position:new helpersLib.Vector(r.position.x,r.position.y+s)},r})}ƀdy(t,e){return this.ƀck&&(this.ƀck.direction==="topLeft"||this.ƀck.direction==="bottomLeft")&&(this.ƀck.rectangle.isPointInside(new helpersLib.Vector(0,t),{includeEdges:false})||this.ƀck.rectangle.isPointInside(new helpersLib.Vector(0,e),{includeEdges:false}))?this.ƀck.rectangle.bottomRight.x:0}ƀdx(t,e){return this.ƀck&&(this.ƀck.direction==="topRight"||this.ƀck.direction==="bottomRight")&&(this.ƀck.rectangle.isPointInside(new helpersLib.Vector(this.ƀkv,t),{includeEdges:false})||this.ƀck.rectangle.isPointInside(new helpersLib.Vector(this.ƀkv,e),{includeEdges:false}))?this.ƀck.rectangle.topLeft.x:this.ƀkv}ƀbn(t){let e,i;switch(t.direction){case "topRight":e=new helpersLib.Vector(t.position.x,-1/0),i=new helpersLib.Vector(1/0,t.position.y);break;case "topLeft":e=new helpersLib.Vector(-1/0,-1/0),i=t.position;break;case "bottomRight":e=t.position,i=new helpersLib.Vector(1/0,1/0);break;case "bottomLeft":e=new helpersLib.Vector(-1/0,t.position.y),i=new helpersLib.Vector(t.position.x,1/0);break;default:{t.direction;throw new Error(`Unexpected case! "${t.direction}"`)}}return new helpersLib.Rectangle(e,i)}};var Ae=class{static{h(this,"ConsistentSpaceTextWrapper");}static wrapText(t,e){return t.forEach(i=>{i.forEach((r,s)=>{if(e.isSpaceAvailable(new helpersLib.Vector(r.style.width,r.style.height)))if(r.whitespace&&s===i.length-2){let n=i[i.length-1];e.isSpaceAvailable(new helpersLib.Vector(n.style.width+r.style.width,n.style.height))?e.insertWord(r):this.ƀkw(r,e);}else e.insertWord(r);else e.lineIsEmpty?e.insertWord(r):r.whitespace?this.ƀkw(r,e):(e.newLine(),e.insertWord(r));}),e.newLine();}),e.print()}static ƀkw(t,e){let i=Math.max(0,Math.floor(e.remainingWidth/t.style.spaceWidth)),r=Math.max(0,Math.min(i,t.text.length-1));if(r>0){let n={text:" ".repeat(r),whitespace:true,style:{...t.style,width:r*t.style.spaceWidth}};e.insertWord(n);}e.newLine();let s=t.text.length-r-1;if(s>0){let n={text:" ".repeat(s),whitespace:true,style:{...t.style,width:s*t.style.spaceWidth}};e.insertWord(n);}}};var Oe=class{static{h(this,"RichTextDataOutConverter");}static process(t){return t=this.ƀgl(t),t=this.ƀkf(t),this.ƀat(t)}static ƀgl(t){return t.map(e=>{let i=[],r,s=true;return e.forEach(n=>{if(!r||r.chunk.style.cacheKey!==n.chunk.style.cacheKey)r&&i.push(r),r=n,s=n.chunk.whitespace;else {let a=r.chunk.text+n.chunk.text;s=n.chunk.whitespace&&s,r={chunk:{text:a,whitespace:s,style:{...r.chunk.style,width:r.chunk.style.width+n.chunk.style.width}},position:r.position};}}),r&&i.push(r),i})}static ƀkf(t){return t.map(e=>{if(e.length===0)return [];let i=e.pop();if(!i.chunk.whitespace||i.chunk.text===""){let r=i.chunk.text.length,s=i.chunk.text.trimEnd();r!==s.length?e.push({chunk:{text:s,whitespace:false,style:{...i.chunk.style,width:i.chunk.style.width-(r-s.length)*i.chunk.style.spaceWidth}},position:i.position}):e.push(i);}return e})}static ƀat(t){return t.flatMap(e=>e.map(i=>({text:i.chunk.text,style:i.chunk.style.style,position:i.position}))).filter(e=>e.text.trim()!=="")}};var Kt=class{static{h(this,"RichTextToPlaneText");}static process(t,e){if(e.default.wordWrapWidth===void 0){if(e.default.align==="right"||e.default.align==="center")throw new Error("wordWrapWidth is required for right or center alignment");if(e.rectangleCut&&(e.rectangleCut.direction==="topRight"||e.rectangleCut.direction==="bottomRight"))throw new Error("wordWrapWidth is required for topRight or bottomRight rectangle cut")}let i=Ce.process(t,e),r=helpersLib.JsonHelper.removeUndefinedProperties({rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),s=new Ie(e.default.wordWrapWidth??1/0,r),n=Ae.wrapText(i,s);return Oe.process(n)}};var Ns=1,zi=1/Ns,Zt=class extends f{static{h(this,"Text");}get ƀjy(){if(!this.ƀjz){let t=new L__namespace.TextStyle(this.ƀhy);this.ƀjz=L__namespace.TextMetrics.measureText(this.ƀjx,t);}return this.ƀjz}get ascent(){return this.ƀjy.fontProperties.ascent}constructor(t,e){super(),this.ƀhy=At.getPixiTextStyle(e),this.setText(t);}destroy(){this.destroyed||(super.destroy(),!this.ƀhx.destroyed&&this.ƀhx.destroy());}setAnchor(t){return this.anchor=t,this}get anchor(){return new helpersLib.Vector(this.ƀhx.anchor.x,this.ƀhx.anchor.y)}set anchor(t){this.ƀi=t,this.ƀhx.anchor.set(t.x,t.y);}setText(t){return this.ƀjx!==t&&(this.ƀjx=t,this.ƀif()),this}setColor(t){let e=helpersLib.ColorHelper.rgbToHex(t);return this.ƀhy.fill!==e&&(this.ƀhy.fill=e,this.ƀif()),this}ƀif(){this.ƀhx?.destroy(),this.ƀjs?.destroy(),this.ƀjs=void 0,this.ƀjz=void 0;let t=new L__namespace.TextStyle(this.ƀhy);this.ƀhx=new L__namespace.Text(this.ƀjx,t),this.ƀii(),this.ƀi&&this.ƀhx.anchor.set(this.ƀi.x,this.ƀi.y),this.ƀhx.scale.set(zi,zi),this.ƀhu.addChild(this.ƀhx),this.ƀhy.lineThrough&&(this.ƀjs=this.ƀe(this.ƀhx,this.ƀhy.fill),this.ƀhu.addChild(this.ƀjs));}ƀii(){let t=L__namespace.TextMetrics.measureText(this.ƀjx,new L__namespace.TextStyle({...this.ƀhy,dropShadow:false,dropShadowAlpha:0,dropShadowBlur:0,dropShadowDistance:0}));this.ƀhx.calculateBounds=function(){this.updateText(true),this._bounds.clear();let e=-this.anchor.x*t.width,i=-this.anchor.y*t.height;this._bounds.addFrame(this.transform,e,i,e+t.width,i+t.height);};}ƀe(t,e){let i=L__namespace.TextMetrics.measureText(t.text,t.style),r=Math.max(1,Math.round(i.lineHeight*.07)),s=r%2*.5,n=new L__namespace.Graphics;n.lineStyle(r,e);let a=0;return i.lines.forEach((l,c)=>{let p=L__namespace.TextMetrics.measureText(l,t.style),m=Math.round(a+(p.fontProperties.ascent-p.fontProperties.descent)*.6+p.fontProperties.descent)+s,g=0;t.style.align==="center"?g=0+(t.width-p.width)*.5:t.style.align==="right"&&(g=0+t.width-p.width),g=Math.floor(g),n.moveTo(Math.floor(g),m),n.lineTo(Math.floor(g+p.width),m),a+=p.lineHeight;}),n.endFill(),n}};var oi=class extends f{static{h(this,"RichText");}constructor(t,e){super(),Kt.process(t,e).forEach(r=>new Zt(r.text,r.style).setPosition(r.position).displayParent(this).attach(this));}};var ni=class extends f{static{h(this,"UpdatableContainer");}},ai=class extends f{static{h(this,"DisplayObjectArray");}constructor(t,e){super(),this.ƀbt=t,this.ƀcn=new Map,this.ƀhd={trackBy:h((i,r)=>r,"trackBy"),positioning:{direction:"vertical",spacing:0},...e};}set(t){let e=new Set(this.ƀcn.keys()),i=0;t.forEach((r,s)=>{let n=this.ƀhd.trackBy(r,s),a;this.ƀcn.has(n)?(a=this.ƀcn.get(n),e.delete(n),a.update(r)):(a=this.ƀbt(r).displayParent(this).attach(this),this.ƀcn.set(n,a)),this.ƀhd.positioning.direction==="horizontal"?(a.x=i,i+=a.size.x+this.ƀhd.positioning.spacing):(a.y=i,i+=a.size.y+this.ƀhd.positioning.spacing);}),e.forEach(r=>{this.ƀcn.get(r).destroy(),this.ƀcn.delete(r);});}};var Qt=class o extends f{static{h(this,"MenuUI");}static{this.ƀfm=actionsLib.Reducer.createExistenceChecker();}static{this.isAnyMenuTransitioning=this.ƀfm.notifier;}constructor(t,e){super(),this.ƀgv=new actionsLib.SingleAction,this.onCreate=this.ƀgv.notifier,this.ƀgx=new actionsLib.SingleAction,this.onOpen=this.ƀgx.notifier,this.ƀgs=new actionsLib.SingleAction,this.onClose=this.ƀgs.notifier,this.ƀaw=false;let i={closeOnBackgroundClick:true,appearAnimationDuration:150,backgroundDarkeningRatio:.3,...e};this.setAlpha(0),this.ƀo=new M(this,"alpha",{animation:S.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState});let r=E.createRectangle(new helpersLib.Vector(1,1),helpersLib.ColorHelper.black).toSprite({cache:true}).setAlpha(i.backgroundDarkeningRatio).setInteractive(true).displayParent(this).attach(this);this.ƀgj=z.createByName(t).setPosition(new helpersLib.Vector(0,0)).setInteractive(true).displayParent(this).attach(this),w.instance.screenSize.subscribe(n=>{r.aspectRatio=n.x/n.y,r.scale=Math.max(n.x,n.y),r.setPosition(helpersLib.Vector.zero,{holdFrom:helpersLib.Vector.half}),this.setPosition(n.multiplyNumber(.5));}).attach(this),this.ƀgv.resolve();let s=o.ƀfm.effect().attach(this);this.ƀo.animate({alpha:1}).chain(this).tap(()=>{this.ƀgx.resolve(),s.destroy(),i.closeOnBackgroundClick&&r.on(exports.ContainerEventType.Click).take(1).tap(()=>this.close()).attach(this);}).attachToRoot();}getBoundingMask(){return this.ƀgj.getBoundingMask()}close(){if(!this.ƀaw){this.ƀaw=true;let t=o.ƀfm.effect().attach(this);this.ƀo.animate({alpha:0}).chain(this).map(()=>{this.ƀgs.resolve(),t.destroy(),this.destroy();}).chainToRoot();}return this.onClose.toSingleEvent()}};var li=class extends ut{static{h(this,"MenuEntity");}static subscribeIsOpen(){return actionsLib.ActionLib.merge(this.continuesSubscription().map(t=>t.type==="open"),actionsLib.SingleEvent.instant(this.getInstance()!==void 0))}constructor(t){super(),this.ƀhd=t,queueMicrotask(()=>{if(!this.ƀgk)throw new Error("MenuEntity: MenuEntity has to have a MenuView.")});}ƀih(t){this.ƀgk=t,this.ƀgk.onClose.subscribe(()=>this.destroy()).attach(this);}onCreate(){return this.ƀgk.onCreate.toSingleEvent()}onOpen(){return this.ƀgk.onOpen.toSingleEvent()}onClose(){return this.ƀgk.onClose.toSingleEvent()}close(){return this.ƀgk.close()}};var ci=class extends dt{static{h(this,"MenuView");}constructor(t,e,i){super();let r=helpersLib.JsonHelper.removeUndefinedProperties({appearAnimationDuration:i.appearAnimationDuration,backgroundDarkeningRatio:i.backgroundDarkeningRatio,closeOnBackgroundClick:t.ƀhd.closeOnBackgroundClick}),s=new Qt(e,r).displayParent(w.camera.layers.foregroundScreen).attach(this);t.ƀih(s);let n=new actionsLib.SingleAction;s.onCreate.subscribe(()=>n.resolve(s)).attach(this),this.onCreate=n.notifier,this.onOpen=s.onOpen.notifier,this.onClose=s.onClose.notifier;}};var Js=.65,Ys=.01,Me=class{static{h(this,"SmoothScroller");}get scrollHeight(){return this.ƀit}get contentSize(){return this.ƀbh.size.ceil()}constructor(t,e,i,r){this.ƀbh=t,this.ƀu=e,this.ƀhg=i,this.ƀjg=r,this.ƀfj=false,this.ƀit=e-i*2,this.ƀbh.y=i,this.ƀjt=i;}onWheel(t){this.setTarget(this.ƀjt-t*Js);}scrollToTop(){this.setTarget(1/0);}scrollToBottom(){this.setTarget(-1/0);}setTarget(t){this.ƀjt=helpersLib.NumberHelper.clamp(t,this.ƀu-this.ƀhg-this.contentSize.y,this.ƀhg);}jumpToTarget(){this.ƀbh.y=this.ƀjt;}update(t){let e=this.contentSize;if(e.y<=this.ƀit){switch(this.ƀjg){case "start":this.ƀjt=this.ƀhg;break;case "center":this.ƀjt=(this.ƀu-e.y)*.5;break;case "end":this.ƀjt=this.ƀu-e.y-this.ƀhg;break;default:{this.ƀjg;throw new Error(`Unexpected case! "${this.ƀjg}"`)}}this.ƀfj||(this.ƀbh.y=this.ƀjt);}this.ƀfj=true;let i=this.ƀjt-this.ƀbh.y;this.ƀbh.y=this.ƀbh.y+i*Ys*t;}};var Ks=15,pi=class extends f{static{h(this,"ScrollAreaUI");}get contentAreaSize(){return this.ƀbi}get contentSize(){return this.ƀiu.contentSize}constructor(t,e={}){super();let i={padding:Ks,smallContentAlign:"start",...e};if(i.padding<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(i.padding>t.y*.5)throw new Error("The padding of the scroll mask cannot be higher than half of the size of the area");let r=new f().displayParent(this).attach(this);new yt(r,t,i.padding).attach(this);let s=new L__namespace.Graphics;s.beginFill(0,1e-9),s.drawRect(0,0,t.x,t.y),s.endFill(),r.ƀhu.addChild(s);let n=new f().displayParent(r).attach(this);this.ƀiu=new Me(n,t.y,i.padding,i.smallContentAlign),this.ƀbi=new helpersLib.Vector(t.x,this.ƀiu.scrollHeight),s.eventMode="dynamic",s.addEventListener("wheel",a=>{this.ƀiu.onWheel(a.deltaY);}),n.setInteractive(true),n.ƀhu.addEventListener("wheel",a=>{this.ƀiu.onWheel(a.deltaY);}),y.afterSceneUpdateAction.subscribe(a=>this.ƀiu.update(a.delta)).attach(this),this.addChildTo=n;}scrollToTop(t){this.ƀiu.scrollToTop(),t?.instant&&this.ƀiu.jumpToTarget();}scrollToBottom(t){this.ƀiu.scrollToBottom(),t?.instant&&this.ƀiu.jumpToTarget();}};var Zs=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Qs=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)};exports.KeyboardService=class di{static{h(this,"KeyboardService");}constructor(){this.ƀft=new actionsLib.Action,this.keyPressed=this.ƀft.notifier,this.ƀfu=new actionsLib.Action,this.keyReleased=this.ƀfu.notifier,this.ƀga=new Set,this.ƀfz=new Set,window.addEventListener("keydown",t=>{this.ƀga.add(t.code),this.ƀfz.add(t.code),!t.repeat&&this.ƀft.trigger({key:t.key,code:t.code});}),window.addEventListener("keyup",t=>{this.ƀga.delete(t.code),this.ƀfu.trigger({key:t.key,code:t.code});}),window.addEventListener("blur",()=>{this.ƀga.clear();}),y.afterSceneUpdateAction.subscribe(()=>this.ƀfz.clear()).attachToRoot();}isKeyDown(t,e){return (e?.onlyPressedThisFrame?this.ƀfz:this.ƀga).has(t)}};exports.KeyboardService=Zs([d(),Qs("design:paramtypes",[])],exports.KeyboardService);var qs=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},to=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)};exports.MouseService=class te{static{h(this,"MouseService");}constructor(){this.ƀfi=new actionsLib.Variable(false),this.initialMouseMovementHappened=this.ƀfi.notifier,this.ƀjk=new actionsLib.Variable(helpersLib.Vector.zero,{notifyOnChange:true}),this.stagePosition=this.ƀjk.notifier,this.ƀip=new actionsLib.Variable(helpersLib.Vector.zero,{notifyOnChange:true}),this.screenPosition=this.ƀip.notifier,this.ƀgd=new actionsLib.Variable(false),this.mainButtonState=this.ƀgd.notifier,this.ƀiv=new actionsLib.Variable(false),this.secondaryButtonState=this.ƀiv.notifier,this.ƀjl(),window.addEventListener("pointerdown",t=>{t.button===0?this.ƀgd.value=true:t.button===2&&(this.ƀiv.value=true);},{capture:true}),window.addEventListener("pointerup",t=>{t.button===0?this.ƀgd.value=false:t.button===2&&(this.ƀiv.value=false);},{capture:true}),window.addEventListener("blur",()=>{this.ƀgd.value=false,this.ƀiv.value=false;},{capture:true});}ƀjl(){let t=helpersLib.Vector.zero;window.addEventListener("pointermove",e=>{t=new helpersLib.Vector(e.clientX,e.clientY),this.ƀfi.value=true;},{capture:true}),y.beforeSceneUpdateAction.subscribe(()=>{this.ƀip.value=this.clientPositionToScreenPosition(t);}).attachToRoot(),y.afterSceneUpdateAction.subscribe(()=>{let e=w.instance.screenPositonToStagePosition(this.ƀip.value);e.isEqual(this.ƀjk.value)?w.instance.renderer.events.onPointerMove(new PointerEvent("pointermove",{clientX:t.x,clientY:t.y,pointerType:"mouse"})):this.ƀjk.value=e;}).attachToRoot();}clientPositionToScreenPosition(t){let i=w.instance.renderer.view.getBoundingClientRect(),r=i.width,s=i.height;if(r<=0||s<=0)return helpersLib.Vector.zero;let n=w.instance.renderer,a=(t.x-i.left)/r*n.screen.width,l=(t.y-i.top)/s*n.screen.height;return a=helpersLib.NumberHelper.clamp(a,0,n.screen.width),l=helpersLib.NumberHelper.clamp(l,0,n.screen.height),new helpersLib.Vector(a,l)}};exports.MouseService=qs([d(),to("design:paramtypes",[])],exports.MouseService);var eo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},io=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)};exports.MouseTargetFocusService=class fi{static{h(this,"MouseTargetFocusService");}get focusedInLastFrame(){return this.ƀde}get lastFocusedPosition(){return this.ƀfw}constructor(t){this.ƀgn=t,this.ƀgz=new actionsLib.Action,this.onTargetFocus=this.ƀgz.notifier,this.ƀkd=0,this.ƀke=false,this.ƀde=false,this.ƀfw=void 0,y.beforeSceneUpdateAction.subscribe(e=>this.ƀkh(e.delta)).attachToRoot();}ƀkh(t){if(this.ƀgo){let e=this.ƀee(this.ƀgn.stagePosition.value,this.ƀgo);this.ƀhi===void 0?this.ƀhi=e:this.ƀas(e,t);}this.ƀgo=this.ƀgn.stagePosition.value;}ƀas(t,e){this.ƀhi-t>10?(this.ƀkd=Math.max(250,this.ƀkd),this.ƀke=true):this.ƀkd>1e3&&(this.ƀke=true);let i=this.ƀkd>=300&&this.ƀke;this.ƀfr(i,t,e);}ƀfr(t,e,i){(t||e>this.ƀhi)&&(this.ƀhi=e),t?(this.ƀke=false,this.ƀkd=0,this.ƀde=true,this.ƀfw=this.ƀgn.stagePosition.value,this.ƀgz.trigger(this.ƀfw)):(this.ƀkd+=i,this.ƀde=false);}ƀee(t,e){let i=helpersLib.Vector.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};exports.MouseTargetFocusService=eo([d(),io("design:paramtypes",[exports.MouseService])],exports.MouseTargetFocusService);var ui=10.8,mi=10.01;exports.PhysicsShapeType=void 0;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle";})(exports.PhysicsShapeType||(exports.PhysicsShapeType={}));var u=class o{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return helpersLib.Rectangle.fromRect({topLeft:{x:t.lowerBound[0],y:t.lowerBound[1]},bottomRight:{x:t.upperBound[0],y:t.upperBound[1]}})}static arrayToVector(t){return new helpersLib.Vector(t[0],t[1])}static vectorToArray(t){return [t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return (t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>o.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new W__default.default.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};var ho=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},st=class extends K(){static{h(this,"PhysicsInternalGateway");}};st=ho([d()],st);var b=class o extends U{static{h(this,"PhysicsEntity");}static{this.ƀhf=new Map;}static{this.ƀhm=new Map;}static getFromP2BodyID(t){return o.ƀhf.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀhf.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀhm.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀhm.values())}get area(){return this.ƀt}get mass(){return this.ƀgh}get collisions(){return this.ƀax}constructor(t,e,i){super(),this.ƀgt=new actionsLib.Action,this.onCollision=this.ƀgt.notifier,this.type="dynamic",this.ƀt=0,this.ƀgh=0,this.ƀax=[],this.physicsWorldID=t,this.ƀho=T.get(st);let r=this.ƀho.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀho.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀhn=this.ƀho.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀhp=this.ƀho.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀho.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀt=this.p2Body.getArea(),this.ƀgh=this.p2Body.mass,this.p2Body.position=u.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀho.addBody(this.physicsWorldID,this.p2Body,e.addInEmptySpace,e.shapeDefinition.group,e.includeOnPathfinding))throw new Error("PhysicsEntity was not able to be added to the world!");o.ƀhf.set(this.p2Body.id,this),o.ƀhm.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀho.removeBody(this.physicsWorldID,this.p2Body),o.ƀhf.delete(this.p2Body.id),o.ƀhm.delete(this.id));}canCollideWith(t){return u.arePhysicsGroupsCollidable(this.ƀhn,this.ƀhp,t.ƀhn,t.ƀhp)}ƀix(t){this.ƀax=t,t.length>0&&this.ƀgt.trigger(t);}};var ee=class extends b{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=u.arrayToVector(this.p2Body.position),this.rotation=new helpersLib.Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:helpersLib.Vector.zero,rotationalSpeed:0}}};var gi=class extends U{static{h(this,"MovableEntity");}constructor(){super(),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),y.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀjq(t,e);}).attach(this);}ƀjq(t,e){this.position.value=this.position.value.add(this.velocity.value.multiplyNumber(e)),this.rotation.value=new helpersLib.Radian(this.rotation.value.value+this.rotationalSpeed.value*e);}};var yi=class extends b{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),this.ƀfb=false,this.ƀfc=false,this.ƀfe=false,this.ƀfd=false,this.ƀhj(),this.ƀgb(),T.get(st).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀjq(i,r)).attach(this);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position.value,rotation:this.rotation.value,velocity:this.velocity.value,rotationalSpeed:this.rotationalSpeed.value}}ƀjq(t,e){this.ƀfb=true,this.ƀfc=true,this.ƀfe=true,this.ƀfd=true,this.ƀhj();}ƀhj(){this.position.value=u.arrayToVector(this.p2Body.position),this.rotation.value=new helpersLib.Radian(this.p2Body.angle),this.velocity.value=u.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀgb(){this.position.subscribe(t=>{this.ƀfb?this.ƀfb=false:this.p2Body.position=[t.x,t.y];}).attach(this),this.rotation.subscribe(t=>{this.ƀfc?this.ƀfc=false:this.p2Body.angle=t.value;}).attach(this),this.velocity.subscribe(t=>{this.ƀfe?this.ƀfe=false:this.p2Body.velocity=[t.x,t.y];}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀfd?this.ƀfd=false:this.p2Body.angularVelocity=t;}).attach(this);}};var ot="border";var fo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s};exports.PhysicsGateway=class ie extends K(){static{h(this,"PhysicsGateway");}};exports.PhysicsGateway=fo([d()],exports.PhysicsGateway);var uo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},mo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},v=class extends U{static{h(this,"PhysicsWorldEntity");}constructor(t,e,i,r,s,n,a){super(),this.materialDefinitions=new Map,this.physicsBodyGroupToP2Group=new Map,this.physicsBodyGroupToP2Mask=new Map,this.availabilityGridCache=new Map,this.vectorFieldCache=new Map,this.bodiesInContactWith=new Map,this.collisionReports=new Map,this.paused=new actionsLib.Variable(false),this.lastP2Time=new actionsLib.Variable(0),this.onPhysicsStep=new actionsLib.Action,this.mapSize=t,this.mapSizeCenter=this.mapSize.multiplyNumber(.5),this.modifyUpdateCycle=e,this.p2World=i,this.materials=r,this.materialDefinitions=s,this.physicsBodyGroupToP2Group=n,this.physicsBodyGroupToP2Mask=a;}};v=uo([ft(),mo("design:paramtypes",[helpersLib.Vector,Boolean,W__default.default.World,Map,Map,Map,Map])],v);var xo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},J=class{static{h(this,"PhysicsBodyGroupService");}createBodyGroupsAndMasks(t,e){let i=new Map,r=new Map;return t.map((s,n)=>{if(n>31)return console.error("Cannot have more than 32 physics body groups"),{};i.set(s,1<<n),r.set(s,0);}),e.map(([s,n])=>{if(!i.has(s))throw new Error(`Physics body group "${s}" not found`);if(!i.has(n))throw new Error(`Physics body group "${n}" not found`);let a=r.get(s),l=r.get(n),c=i.get(s),p=i.get(n);r.set(s,a|p),r.set(n,l|c);}),{physicsBodyGroupToP2Group:i,physicsBodyGroupToP2Mask:r}}getGroupConstant(t,e){return v.getInstanceByIDOrFail(t).physicsBodyGroupToP2Group.get(e)}getMaskConstant(t,e){return v.getInstanceByIDOrFail(t).physicsBodyGroupToP2Mask.get(e)}canCollide(t,e,i){let r=t.physicsBodyGroupToP2Group.get(e),s=t.physicsBodyGroupToP2Mask.get(e),n=t.physicsBodyGroupToP2Group.get(i),a=t.physicsBodyGroupToP2Mask.get(i);return (s&n)!==0&&(a&r)!==0}};J=xo([d()],J);var vo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},bo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},_e=class{static{h(this,"AvailabilityGridCacheService");}constructor(t){this.ƀhl=t;}getCollidableGrids(t,e){let i=[];return t.availabilityGridCache.forEach((r,s)=>{r.forEach((n,a)=>{this.ƀhl.canCollide(t,a,e)&&i.push({grid:n,cellSize:s});});}),i}get(t,e,i){return t.availabilityGridCache.get(e)?.get(i)}set(t,e,i,r){let s=t.availabilityGridCache.get(e);s||(s=new Map,t.availabilityGridCache.set(e,s)),s.set(i,r);}clear(t){t.availabilityGridCache.clear();}};_e=vo([d(),bo("design:paramtypes",[J])],_e);var So=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Po=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},nt=class{static{h(this,"AvailabilityGridService");}constructor(t,e){this.ƀhl=t,this.ƀx=e;}onBodyAdded(t,e,i){e.aabbNeedsUpdate=true,e.updateAABB();let r=u.aabbToBoundingBox(e.aabb);this.ƀx.getCollidableGrids(t,i).forEach(s=>{let n=B.areaToGridArea(r,s.cellSize);s.grid.setArea(n,false);});}findClosestAvailableSpace(t,e,i,r=50){return e.aabbNeedsUpdate=true,e.updateAABB(),kt.findByConvertingGridSpace(this.getAvilabilityGrid(t,r,i),u.aabbToBoundingBox(e.aabb),r)}getAvilabilityGrid(t,e,i){let r=this.ƀx.get(t,e,i);return r||(r=this.ƀbw(t,e,i),this.ƀx.set(t,e,i,r)),r}ƀbw(t,e,i){let r=new helpersLib.Grid({size:new helpersLib.Vector(Math.floor(t.mapSize.x/e),Math.floor(t.mapSize.y/e)),defaultValue:true});return t.p2World.bodies.forEach(s=>{let n=b.getFromP2BodyIDOrFail(s.id);if(n.includeInPathfinding&&this.ƀhl.canCollide(t,n.physicsBodyGroup,i)){let a=this.ƀdv(s,e);r.setArea(a,false);}}),r}ƀdv(t,e){let i=u.aabbToBoundingBox(t.aabb);return B.areaToGridArea(i,e)}};nt=So([d(),Po("design:paramtypes",[J,_e])],nt);var Ro=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Co=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Bt=class{static{h(this,"PathFinderService");}constructor(t){this.ƀhk=t;}findPathAStar(t,e,i,r,s){s||(s={}),s.neighborType===void 0&&(s.neighborType=helpersLib.GridNeighborType.Ortogonal),s.gridCellSize===void 0&&(s.gridCellSize=50);let n=v.getInstanceByIDOrFail(t),a,l;helpersLib.Comparator.isNumber(i)?(l=b.getPhysicsInstanceOrFail(i).p2Body,a=u.arrayToVector(l.position)):a=i;let c=B.positionToGridPosition(e,s.gridCellSize),p=B.positionToGridPosition(a,s.gridCellSize),m=this.ƀhk.getAvilabilityGrid(n,s.gridCellSize,r);if(l){let R=u.aabbToBoundingBox(l.aabb),bt=B.areaToGridArea(R,s.gridCellSize);m.setArea(bt,true);}let g=zt.findPath(m,c,p,s.neighborType);return g.path=g.path.map(R=>B.gridPositionToPosition(R,s.gridCellSize)),g}findPathDirection(t,e,i,r,s=50){let n=v.getInstanceByIDOrFail(t),a;if(helpersLib.Comparator.isNumber(i)){let g=b.getPhysicsInstanceOrFail(i);a=u.aabbToBoundingBox(g.p2Body.aabb);}else a=new helpersLib.Rectangle(i,i);let l=B.areaToGridArea(a,s),c=JSON.stringify({targetGridArea:l,collidableWithGroup:r}),p=n.vectorFieldCache.get(c);if(!p){let g=this.ƀhk.getAvilabilityGrid(n,s,r);p=new Jt(l,g),n.vectorFieldCache.set(c,p);}let m=B.positionToGridPosition(e,s);return p.getDirectionToTarget(m)}};Bt=Ro([d(),Co("design:paramtypes",[nt])],Bt);var Oo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Do=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},X=class{static{h(this,"TestVisualsService");}constructor(t,e){this.ƀy=t,this.ƀhh=e;}printPathfindingTestGrid(t,e,i,r,s,n){let a=v.getInstanceByIDOrFail(t);this.ƀy.getAvilabilityGrid(a,n,r).map((c,p)=>({position:B.gridPositionToPosition(p,n),availability:c})).forEach(c=>{if(c.position.isInsideRectangle(s)){let p=this.ƀhh.findPathDirection(t,c.position,i,r),m;p===void 0?m=E.createRectangleBorders(new helpersLib.Vector(8,8),2,helpersLib.ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).attach(a):m=E.createArrow(25,c.availability?helpersLib.ColorHelper.green:helpersLib.ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).setRotation(p).attach(a),new M(m,"alpha",{duration:1e3,animation:S.easeIn}).animate({alpha:0}).tap(()=>m.destroy()).attach(m);}});}createExplosionDebugVisual(t,e,i,r,s,n=300){let a=new f().displayParent(e).setAlpha(.5).attach(t);E.createCircle(s,helpersLib.ColorHelper.blue).toSprite().displayParent(a).setPosition(r,{round:false}).setAlpha(.5).attach(t),i.forEach(c=>{let p=c.hits.length>0?helpersLib.ColorHelper.red:helpersLib.ColorHelper.white;E.createVector(r,c.line.to,p).toSprite().displayParent(a).attach(t);}),new M(a,"alpha",{duration:n,animation:S.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}createElipticExplosionDebugVisual(t,e,i,r,s,n,a=300){let l=new f().displayParent(e).setAlpha(.5).attach(t);E.createElipse(n,helpersLib.ColorHelper.blue).toSprite().displayParent(l).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attach(t),i.forEach(p=>{let m=p.hits.length>0?helpersLib.ColorHelper.red:helpersLib.ColorHelper.white;E.createVector(p.line.from,p.line.to,m).toSprite().displayParent(l).attach(t);}),new M(l,"alpha",{duration:a,animation:S.easeIn}).animate({alpha:0}).tap(()=>l.destroy()).attach(l);}createPhysicsEntityShapeVisual(t,e,i){let r=i?.overridePosition??u.arrayToVector(t.position),s=i?.overrideRotation??new helpersLib.Radian(t.angle),n=i?.color??helpersLib.ColorHelper.blue,a=new f().displayParent(e).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attachToRoot();t.shapes.forEach(c=>{this.ƀcp(c,n).displayParent(a).attachToRoot();}),new M(a,"alpha",{duration:1e3,animation:S.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}ƀcp(t,e){switch(t.type){case W__default.default.Shape.PARTICLE:throw new Error("Not implemented");case W__default.default.Shape.LINE:throw new Error("Not implemented");case W__default.default.Shape.PLANE:throw new Error("Not implemented");case W__default.default.Shape.CIRCLE:throw new Error("Not implemented");case W__default.default.Shape.CAPSULE:throw new Error("Not implemented");case W__default.default.Shape.BOX:throw new Error("Not implemented");case W__default.default.Shape.HEIGHTFIELD:throw new Error("Not implemented");case W__default.default.Shape.CONVEX:return this.ƀco(t,e);default:throw new Error("Not implemented")}}ƀco(t,e){let i=[t.vertices.map(r=>({x:r[0],y:r[1]}))];return E.createPolygon(i,e).toSprite()}};X=Oo([d(),Do("design:paramtypes",[nt,Bt])],X);var Go=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},_o=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Fe=class{static{h(this,"HitTestService");}constructor(t){this.ƀjw=t;}hitTest(t,e){let i=t.world,r=b.getFromP2BodyIDOrFail(t.id),s=u.cloneP2Body(t);this.ƀs(s,e);let n=i.broadphase.aabbQuery(i,this.ƀdi(s)).map(l=>b.getFromP2BodyIDOrFail(l.id)).filter(l=>l.includeInPathfinding).filter(l=>r.canCollideWith(l)).map(l=>u.cloneP2Body(l.p2Body)),a=false;if(n.length!==0){let l=new W__default.default.World;l.addBody(s),n.forEach(c=>l.addBody(c)),l.step(1,1,1),a=l.narrowphase.contactEquations.some(c=>c.bodyA===s||c.bodyB===s),l.clear();}if(e?.testLayerID){let l=a?helpersLib.ColorHelper.red:helpersLib.ColorHelper.green;this.ƀjw.createPhysicsEntityShapeVisual(t,e.testLayerID,{overridePosition:e.overridePosition,overrideRotation:e.overrideRotation,color:l});}return a}ƀs(t,e){e?.overridePosition&&(t.position=u.vectorToArray(e.overridePosition)),e?.overrideRotation&&(t.angle=e.overrideRotation.value);}ƀdi(t){return t.aabbNeedsUpdate=true,t.updateAABB(),t.aabb}};Fe=Go([d(),_o("design:paramtypes",[X])],Fe);var Vo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ve=class{static{h(this,"CollisionsService");}registerPhysicsWorld(t){t.p2World.on("beginContact",e=>{e.contactEquations.forEach(i=>{this.ƀig(t,i);});});}step(t,e,i){b.getPhysicsEntities().forEach(r=>{r.ƀax=[];}),t.p2World.narrowphase.contactEquations.forEach(r=>{this.ƀig(t,r);}),t.bodiesInContactWith.forEach((r,s)=>{this.ƀer(r.p2Body),r.entity.ƀix(t.collisionReports.get(s)||[]);}),t.bodiesInContactWith.clear(),t.collisionReports.clear();}ƀer(t){let e=u.arrayToVector(t.velocity);e.length>ui&&(e=e.normalize(ui),t.velocity=u.vectorToArray(e)),t.angularVelocity=Math.min(Math.max(t.angularVelocity,-mi),mi);}ƀig(t,e){let i=b.getFromP2BodyID(e.bodyA.id),r=b.getFromP2BodyID(e.bodyB.id);if(i&&r){t.bodiesInContactWith.set(e.bodyA.id,{p2Body:e.bodyA,entity:i}),t.bodiesInContactWith.set(e.bodyB.id,{p2Body:e.bodyB,entity:r});let s=t.collisionReports.get(e.bodyA.id)||[],n=t.collisionReports.get(e.bodyB.id)||[],{collisionDetailsA:a,collisionDetailsB:l}=this.ƀdn(i,r,e);s.push({self:a,target:l}),n.push({self:l,target:a}),t.collisionReports.set(e.bodyA.id,s),t.collisionReports.set(e.bodyB.id,n);}else console.warn("ContactEquationOrganiser: Entity not found for contact equation",e);}ƀdn(t,e,i){let r=t.convertToDTO(),s=e.convertToDTO(),n=u.arrayToVector(i.contactPointA),a=u.arrayToVector(i.contactPointB),{normalA:l,normalB:c}=this.ƀec(i);return {collisionDetailsA:this.ƀdm(r,i.bodyA.mass,n,l,t.area),collisionDetailsB:this.ƀdm(s,i.bodyB.mass,a,c,e.area)}}ƀdm(t,e,i,r,s){let n,a=i.add(t.position);return {body:t,getPositionReletiveToObject:h(()=>(n||(n=i.rotate(t.rotation.multiply(-1).vector)),n),"getPositionReletiveToObject"),getPositionOnWorld:h(()=>(a||(a=i.add(t.position)),a),"getPositionOnWorld"),position:i,mass:e,area:s,normal:r}}ƀec(t){let e=u.arrayToVector(t.normalA),i=e.multiplyNumber(-1);return {normalA:e,normalB:i}}};Ve=Vo([d()],Ve);var Lo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},No=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Le=class extends ee{static{h(this,"BorderEntity");}constructor(t,e){super(t,e);}};Le=Lo([ft(),No("design:paramtypes",[Number,Object])],Le);var jo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},H=1e4,Ne=class{static{h(this,"BorderService");}createBorders(t,e,i){this.ƀbq(t,new helpersLib.Vector(e.x/2,-H/2),new helpersLib.Vector(e.x+H*2,H),i),this.ƀbq(t,new helpersLib.Vector(e.x/2,e.y+H/2),new helpersLib.Vector(e.x+H*2,H),i),this.ƀbq(t,new helpersLib.Vector(-H/2,e.y/2),new helpersLib.Vector(H,e.y+H*2),i),this.ƀbq(t,new helpersLib.Vector(e.x+H/2,e.y/2),new helpersLib.Vector(H,e.y+H*2),i);}ƀbq(t,e,i,r){return new Le(t,{shapeDefinition:{materialName:ot,group:r,shapeType:exports.PhysicsShapeType.Rectangle,shapeData:i},position:e,rotation:helpersLib.Radian.get0,addInEmptySpace:false,includeOnPathfinding:true}).attachByID(t)}};Ne=jo([d()],Ne);var Wo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},rr=new W__default.default.Material,Uo={id:ot,density:Number.MAX_SAFE_INTEGER,velocityDrag:1,rotationalDrag:1},Gt=class{static{h(this,"MaterialsService");}createMaterials(t,e,i,r){let s=new Map,n=new Map;if(i.forEach(a=>{s.set(a.id,new W__default.default.Material),n.set(a.id,a);}),s.has(ot))throw new Error(`Material with name ${ot} cannot be defined, pick another name for the material.`);return s.set(ot,rr),n.set(ot,Uo),this.ƀc(t,e,i,r,s),{materials:s,materialDefinitions:n}}getMaterial(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀea(e,i.materials)}getMaterialDefinition(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀdz(e,i.materialDefinitions)}ƀea(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material with name ${t}.`);return i}ƀdz(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material definition with name ${t}.`);return i}ƀc(t,e,i,r,s){this.ƀds(i.map(n=>n.id),r).forEach(n=>{let a=this.ƀea(n.materialA,s),l=this.ƀea(n.materialB,s);t.addContactMaterial(new W__default.default.ContactMaterial(a,l,{friction:n.friction,restitution:n.bounciness,stiffness:n.stiffness,relaxation:n.relaxation}));}),this.ƀd(t,e,i,s);}ƀds(t,e){let i=new Map;e.forEach(s=>{let n=i.get(s.materialA);n||(n=new Map,i.set(s.materialA,n)),n.set(s.materialB,s);});let r=[];return t.forEach((s,n)=>{for(let a=n;a<t.length;a++){let l=t[a],c=i.get(s)?.get(l);c?r.push(c):r.push({materialA:s,materialB:l,friction:0,bounciness:0,relaxation:4,stiffness:1e6});}}),r}ƀd(t,e,i,r){i.forEach(s=>{let n=this.ƀea(s.id,r);t.addContactMaterial(new W__default.default.ContactMaterial(n,rr,{friction:e.friction,restitution:e.bounciness,stiffness:e.stiffness,relaxation:e.relaxation}));});}};Gt=Wo([d()],Gt);var $o=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ko=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},_t=class{static{h(this,"PhysicsWorldService");}constructor(t,e,i,r,s){this.ƀgi=t,this.ƀah=e,this.ƀy=i,this.ƀay=r,this.ƀhl=s;}createPhysicsWorld(t){let e=new W__default.default.World({gravity:[0,0]}),{materials:i,materialDefinitions:r}=this.ƀgi.createMaterials(e,t.borderProperties,t.materialDefinitions,t.materialContactDefinitions),{physicsBodyGroupToP2Group:s,physicsBodyGroupToP2Mask:n}=this.ƀhl.createBodyGroupsAndMasks(t.physicsBodyGroups,t.interactingBodyGroups),a=new v(t.mapSize,t.modifyUpdateCycle,e,i,r,s,n).attachByID(t.attachTo);return a.onDestroy().tap(()=>{e.clear(),t.modifyUpdateCycle&&y.cleanUpdateModifier();}).attachToRoot(),this.ƀah.createBorders(a.id,t.mapSize,t.borderProperties.borderBodyGroup),this.ƀay.registerPhysicsWorld(a),t.modifyUpdateCycle?y.registerUpdateModifier((l,c)=>this.ƀjq(a,l,c)):y.beforeSceneUpdateAction.subscribe(({time:l,delta:c})=>{this.ƀjq(a,l,c);}).attach(a),a.id}addBody(t,e,i,r,s){let n=v.getInstanceByIDOrFail(t);if(i){let a=this.ƀy.findClosestAvailableSpace(n,e,r);return a?(e.position[0]+=a.x,e.position[1]+=a.y,n.p2World.addBody(e),s&&this.ƀy.onBodyAdded(n,e,r),true):false}else return n.p2World.addBody(e),s&&this.ƀy.onBodyAdded(n,e,r),true}removeBody(t,e){v.getInstanceByID(t)?.p2World.removeBody(e);}ƀjq(t,e,i){if(!t.paused.value){t.availabilityGridCache.clear(),t.vectorFieldCache.clear(),t.p2World.step(i,i,i),t.modifyUpdateCycle&&(i=t.p2World.time-t.lastP2Time.value);let r=e+i;this.ƀay.step(t,r,i),t.onPhysicsStep.trigger({time:r,delta:i}),t.lastP2Time.value=t.p2World.time;}return i}setPaused(t,e){v.getInstanceByIDOrFail(e).paused.set(t);}};_t=$o([d(),ko("design:paramtypes",[Gt,Ne,nt,Ve,J])],_t);var Jo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Vt=class{static{h(this,"RayCastingService");}castClosest(t,e,i){let r=new W__default.default.RaycastResult,s=new W__default.default.Ray({mode:W__default.default.Ray.CLOSEST,from:u.vectorToArray(e.from),to:u.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i)});if(t.p2World.raycast(r,s),r.hasHit())return this.ƀbl(r,e)}castAllFirstContacts(t,e,i){let r=new Map,s=new W__default.default.Ray({mode:W__default.default.Ray.ALL,from:u.vectorToArray(e.from),to:u.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i),callback:h(n=>{let a=r.get(n.body);!r.has(n.body)||n.fraction<a.fraction?r.set(n.body,this.ƀbl(n,e)):n.fraction===a.fraction&&a.isExternal()&&r.set(n.body,this.ƀbl(n,e));},"callback")});return t.p2World.raycast(new W__default.default.RaycastResult,s),Array.from(r.values())}ƀbl(t,e){let i=t.fraction,r=u.arrayToVector(t.normal),s,n,a;return {body:t.body,hitPosition:h(()=>(s===void 0&&(s=e.from.lerp(e.to,i)),s),"hitPosition"),hitDistance:h(()=>(n===void 0&&(n=e.length*i),n),"hitDistance"),isExternal:h(()=>(a===void 0&&(a=e.fromTo.dotProduct(r)<0),a),"isExternal"),normal:r,fraction:i,line:e}}};Vt=Jo([d()],Vt);var Yo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},lt=class{static{h(this,"ImpactService");}applyImpulse(t,e,i,r){let s=i.normalize(r),n=[e.x-t.position[0],e.y-t.position[1]];t.applyImpulse(u.vectorToArray(s),n);}};lt=Yo([d()],lt);var Xo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Lt=class{static{h(this,"RayCastHitConverterService");}toExplosionHits(t,e=true){let i=new Map;return t.forEach(r=>{r.hits.forEach(s=>{let n=i.get(s.body);if(n){let a=s.fraction<n.closestRaycastHit.fraction?s:n.closestRaycastHit;n.rayCastHits.push(s),i.set(s.body,{hitCount:n.hitCount+1,closestRaycastHit:a,rayCastHits:n.rayCastHits,isExternal:e?n.isExternal:n.isExternal&&s.isExternal(),explosionCenter:s.line.from});}else {let a=s.isExternal();i.set(s.body,{hitCount:1,closestRaycastHit:s,rayCastHits:[s],isExternal:a,explosionCenter:s.line.from});}});}),[...i.values()].map(r=>this.ƀbm(r,t.length))}ƀbm(t,e){let i=t.hitCount/e,r=t.rayCastHits;if(t.isExternal)return {body:b.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:true,normal:t.closestRaycastHit.normal,fraction:t.closestRaycastHit.fraction,ratioOfHits:i,raycastResults:r,getHitPosition:t.closestRaycastHit.hitPosition,getHitDistance:t.closestRaycastHit.hitDistance};{let s=u.arrayToVector(t.closestRaycastHit.body.position);return {body:b.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:false,normal:helpersLib.Vector.fromTo(s,t.explosionCenter).normalize(),fraction:0,ratioOfHits:i,raycastResults:r,getHitPosition:h(()=>t.explosionCenter,"getHitPosition"),getHitDistance:h(()=>0,"getHitDistance")}}}};Lt=Xo([d()],Lt);var Zo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Qo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},en=15,He=class{static{h(this,"ElipticExplosionService");}constructor(t,e,i,r){this.ƀic=t,this.ƀjw=e,this.ƀib=i,this.ƀff=r;}createElipticExplosion(t,e,i,r,s,n,a){let l=v.getInstanceByIDOrFail(t),c=this.ƀcb(e,i,r,s,a?.hitOnlyClosest===true,l),p=this.ƀib.toExplosionHits(c,false);return this.ƀq(p,n),a?.testLayerID&&this.ƀjw.createElipticExplosionDebugVisual(l,a.testLayerID,c,e,i,r,a.debugRayDuration),p.map(m=>{let{p2Body:g,...R}=m;return R})}ƀcb(t,e,i,r,s,n){let a=[],l=e.vector,c=e.add(helpersLib.Radian.get90).vector,p=c.normalize(i.x);a.push(new helpersLib.Line(t,t.add(p))),a.push(new helpersLib.Line(t,t.add(p.multiplyNumber(-1))));let m=l.normalize(i.y);a.push(new helpersLib.Line(t,t.add(m))),a.push(new helpersLib.Line(t,t.add(m.multiplyNumber(-1))));let g=Math.round(i.y/en),R=i.y/(g*2+1)*2,bt=l.normalize(R),re=i.x,or=Math.pow(i.y,2);return helpersLib.ArrayHelper.createIntegerArray(g).forEach(pt=>{let St=R*(pt+1),vi=bt.multiplyNumber(pt+1),se=c.normalize(this.ƀel(re,or,St)),oe=t.add(vi);a.push(new helpersLib.Line(oe,oe.add(se))),a.push(new helpersLib.Line(oe,oe.add(se.multiplyNumber(-1))));let ne=t.add(vi.multiplyNumber(-1));a.push(new helpersLib.Line(ne,ne.add(se))),a.push(new helpersLib.Line(ne,ne.add(se.multiplyNumber(-1))));}),a.map(pt=>{if(s){let St=this.ƀic.castClosest(n,pt,r);return {line:pt,hits:St?[St]:[]}}else {let St=this.ƀic.castAllFirstContacts(n,pt,r);return {line:pt,hits:St}}})}ƀel(t,e,i){return Math.sqrt(1-Math.pow(i,2)/e)*t}ƀq(t,e){t.forEach(i=>{i.raycastResults.forEach(r=>{let s,n;r.isExternal()?(s=r.line.fromTo,n=e*2):(s=r.line.fromTo.multiplyNumber(-1),n=e*(1-r.fraction)*8),this.ƀff.applyImpulse(r.body,r.hitPosition(),s,n);});});}};He=Zo([d(),Qo("design:paramtypes",[Vt,X,Lt,lt])],He);var rn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},sn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},We=class{static{h(this,"ExplosionService");}constructor(t,e,i,r){this.ƀic=t,this.ƀjw=e,this.ƀib=i,this.ƀff=r;}createExplosion(t,e,i,r,s,n){let a=v.getInstanceByIDOrFail(t),l=this.ƀei(i),c=this.ƀcb(e,i,r,l,n?.hitOnlyClosest===true,a),p=this.ƀib.toExplosionHits(c);return this.ƀq(e,i,s,l,p),n?.testLayerID&&this.ƀjw.createExplosionDebugVisual(a,n.testLayerID,c,e,i,n.debugRayDuration),p}ƀcb(t,e,i,r,s,n){let a=new helpersLib.Radian(helpersLib.PI_360/r),l=new helpersLib.Vector(0,-e),c=a.vector;return helpersLib.ArrayHelper.createEmptyArray(r).map(()=>{let p=t.add(l);return l=l.rotate(c),new helpersLib.Line(t,p)}).map(p=>{if(s){let m=this.ƀic.castClosest(n,p,i);return {line:p,hits:m?[m]:[]}}else {let m=this.ƀic.castAllFirstContacts(n,p,i);return {line:p,hits:m}}})}ƀq(t,e,i,r,s){s.forEach(n=>{if(n.isExternal)n.raycastResults.forEach(a=>{let l=i*(1-a.fraction);this.ƀff.applyImpulse(a.body,a.hitPosition(),a.line.fromTo,l);});else {let a=helpersLib.Vector.fromTo(t,u.arrayToVector(n.p2Body.position)),l=a.length/e,c=i*r*l/2;this.ƀff.applyImpulse(n.p2Body,n.getHitPosition(),a,c);}});}ƀei(t){return t>100?Math.floor(t*.3):Math.floor(t*.26+4)}};We=rn([d(),sn("design:paramtypes",[Vt,X,Lt,lt])],We);var ln=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Nt=class{static{h(this,"PhysicsQueryService");}getMapSize(t){let e=v.getInstanceByIDOrFail(t);return {dimentions:e.mapSize,center:e.mapSizeCenter}}subscribeToPhysicsStep(t,e){return v.getInstanceByIDOrFail(t).onPhysicsStep.subscribe(e)}};Nt=ln([d()],Nt);var cn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},pn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},wi=class{static{h(this,"PhysicsController");}constructor(t,e,i,r,s,n,a,l){this.ƀhs=t,this.ƀhh=e,this.ƀjw=i,this.ƀda=r,this.ƀct=s,this.ƀew=n,this.ƀhr=a,this.ƀff=l;}createPhysicsWorld(t){return this.ƀhs.createPhysicsWorld(t)}getMapSize(t){return this.ƀhr.getMapSize(t)}setPaused(t,e){this.ƀhs.setPaused(t,e);}hitTest(t,e){let i=b.getPhysicsInstanceOrFail(t);return this.ƀew.hitTest(i.p2Body,e)}findPath(t,e,i,r,s){return this.ƀhh.findPathAStar(t,e,i,r,{neighborType:s})}findPathDirection(t,e,i,r){return this.ƀhh.findPathDirection(t,e,i,r)}applyImpulse(t,e,i,r){let s=b.getPhysicsInstanceOrFail(t);this.ƀff.applyImpulse(s.p2Body,e,i,r);}createExplosion(t,e,i,r,s,n){return this.ƀda.createExplosion(t,e,i,r,s,n)}createElipticExplosion(t,e,i,r,s,n,a){return this.ƀct.createElipticExplosion(t,e,i,r,s,n,a)}printPathfindingTestGrid(t,e,i,r,s,n=50){this.ƀjw.printPathfindingTestGrid(t,e,i,r,s,n);}};wi=cn([Z(exports.PhysicsGateway),pn("design:paramtypes",[_t,Bt,X,We,He,Fe,Nt,lt])],wi);var dn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ue=class{static{h(this,"ShapeCreationService");}createBody(t,e,i,r,s){let n=v.getInstanceByIDOrFail(t);if(!n.physicsBodyGroupToP2Group.has(e.shapeDefinition.group))throw new Error(`Physics body group "${e.shapeDefinition.group}" not found`);switch(e.shapeDefinition.shapeType){case exports.PhysicsShapeType.Point:return this.ƀbs(n,void 0,i,r,e.shapeDefinition.group,s);case exports.PhysicsShapeType.Circle:return this.ƀbs(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case exports.PhysicsShapeType.Polygon:return this.ƀca(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case exports.PhysicsShapeType.Rectangle:return this.ƀcc(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);default:{e.shapeDefinition.shapeType;throw new Error(`Unexpected case! "${e.shapeDefinition.shapeType}"`)}}}ƀbs(t,e,i,r,s,n){let a=new W__default.default.Circle({collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s),radius:e});a.material=i;let l=new W__default.default.Body({type:n==="dynamic"?W__default.default.Body.DYNAMIC:W__default.default.Body.STATIC,mass:r.density,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return l.addShape(a),l}ƀca(t,e,i,r,s,n){let a=t.physicsBodyGroupToP2Group.get(s),l=t.physicsBodyGroupToP2Mask.get(s),c=e.map(g=>new W__default.default.Convex({vertices:g.map(R=>[R.x,R.y]),collisionGroup:a,collisionMask:l})).map(g=>(g.material=i,g)),p=c.reduce((g,R)=>g+R.area,0),m=new W__default.default.Body({type:n==="dynamic"?W__default.default.Body.DYNAMIC:W__default.default.Body.STATIC,mass:p,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.forEach(g=>m.addShape(g)),m.setDensity(r.density),m}ƀcc(t,e,i,r,s,n){let a=new W__default.default.Box({width:e.x,height:e.y,collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s)});a.material=i;let l=e.x*e.y,c=new W__default.default.Body({type:n==="dynamic"?W__default.default.Body.DYNAMIC:W__default.default.Body.STATIC,mass:l,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.addShape(a),c.setDensity(r.density),c}};Ue=dn([d()],Ue);var fn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},un=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},xi=class{static{h(this,"PhysicsInternalController");}constructor(t,e,i,r,s){this.ƀhs=t,this.ƀhq=e,this.ƀjd=i,this.ƀhr=r,this.ƀhl=s;}createBody(t,e,i,r,s){return this.ƀjd.createBody(t,e,i,r,s)}getMaterial(t,e){return this.ƀhq.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀhq.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀhl.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀhl.getMaskConstant(t,e)}addBody(t,e,i,r,s){return this.ƀhs.addBody(t,e,i,r,s)}removeBody(t,e){this.ƀhs.removeBody(t,e);}subscribeToPhysicsStep(t,e){return this.ƀhr.subscribeToPhysicsStep(t,e)}};xi=fn([Z(st),un("design:paramtypes",[_t,Gt,Ue,Nt,J])],xi);exports.AnimationFlicker=Ci;exports.AnimationInterpolationFunctions=$;exports.Animations=S;exports.Animator=M;exports.BORDER_MATERIAL_NAME=ot;exports.BardLegendsHardReset=_;exports.Camera=Xt;exports.ClosestAvailableSpaceHelper=kt;exports.Container=f;exports.ControllerDecorator=Z;exports.DEFAULT_SHADER_RESOLUTION=O;exports.DeltaTime=Qe;exports.DisplayObjectArray=ai;exports.Entity=U;exports.EntityDecorator=ft;exports.FadeInContent=Di;exports.FadeInStateAnimation=ye;exports.Game=w;exports.Gateway=K;exports.Graphics=E;exports.ImmovablePhysicsEntity=ee;exports.MenuEntity=li;exports.MenuUI=Qt;exports.MenuView=ci;exports.MovableEntity=gi;exports.MovablePhysicsEntity=yi;exports.PathFinder=zt;exports.PhysicsEntity=b;exports.Placeholder=si;exports.PositionConversionHelper=Ht;exports.ROTATIONAL_SPEED_LIMIT=mi;exports.RichText=oi;exports.SPEED_LIMIT=ui;exports.Scene=ae;exports.SceneDecorator=wr;exports.ScrollAreaUI=pi;exports.ScrollMaskUI=yt;exports.Service=T;exports.ServiceDecorator=d;exports.SingletonEntity=ut;exports.SlideInContent=Li;exports.SlideInContentByIndex=Ze;exports.SlideStateAnimation=be;exports.Sprite=z;exports.StateAnimation=ge;exports.Text=Zt;exports.UpdatableContainer=ni;exports.UpdateCycle=y;exports.VectorFieldPathFinder=Jt;exports.VectorSet=xt;exports.View=dt;exports.ViewDecorator=ke;
67
+ }`,e}constructor(t,e){if(super(o.ƀep(),o.ƀdx(t*G)),this.ƀdc=t,this.resolution=G,this.ƀdc=t*G,this.ƀdc<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀdc>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");helpersLib.Comparator.isInteger(this.ƀdc)||(this.ƀdc=Math.floor(this.ƀdc));let i=helpersLib.ColorHelper.normalize(e);this.uniforms.color=new Float32Array([i.red,i.green,i.blue]),this.uniforms.expandSquared=this.ƀdc*this.ƀdc,this.padding=this.ƀdc;}apply(t,e,i,r){this.uniforms.pixelSize=new Float32Array([1/(e.width*G),1/(e.height*G)]),t.applyFilter(this,e,i,r);}};var be=class extends j__namespace.Filter{static{h(this,"GlowFilter");}constructor(t){super(),this.resolution=G;let e={blurRadius:1,expand:0,color:helpersLib.ColorHelper.white,blendMode:exports.BlendMode.Screen,...t};this.ƀdd=new ve(e.expand,e.color);let i=helpersLib.Comparator.isNumber(e.blurRadius)?new helpersLib.Vector(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀai=new Ot(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀai.blendMode=j__namespace.BLEND_MODES.SCREEN;}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀdd.apply(t,e,s,j__namespace.CLEAR_MODES.CLEAR),this.ƀai.apply(t,s,i,r),t.returnFilterTexture(s);}};var kt=class o{static{h(this,"GlowSpriteGenerator");}static{this.ƀes=new Map;}static createGlowSpriteFromSprite(t,e,i){let r=this.ƀbg(e),s=helpersLib.Comparator.isNumber(r.blurRadius)?new helpersLib.Vector(r.blurRadius,r.blurRadius):r.blurRadius,n=this.ƀdz(t.texture,s,r.expand,r.color,i),a=new j__namespace.Sprite(n);return this.ƀjn(a,helpersLib.Vector.fromVec2(t.anchor),Math.max(s.x,s.y)+r.expand),a.alpha=r.glowAlpha,a.blendMode=r.blendMode,a}static ƀdz(t,e,i,r,s){if(!t.id)throw new Error("GlowSpriteGenerator: baseTexture should have an id");if(s){let n=`${t.id}-${i}-${e.x}-${e.y}-${r.r}-${r.g}-${r.b}`;if(o.ƀes.has(n))return o.ƀes.get(n);{let a=this.ƀea(t,e,i,r);return o.ƀes.set(n,a),a}}else return this.ƀea(t,e,i,r)}static ƀea(t,e,i,r){let s=new j__namespace.Sprite(t);this.ƀdf(s,Math.max(e.x,e.y)+i),s.filters=[new be({blurRadius:e,expand:i,color:r})];let n=x.instance.renderer.generateTexture(s);return n.id=F.insertAsset(n),s.destroy(),n}static ƀjn(t,e,i){let r=(i+(t.width-i*2)*e.x)/t.width,s=(i+(t.height-i*2)*e.y)/t.height;t.anchor.set(r,s);}static ƀdf(t,e){if(t.isSprite){let s=new j__namespace.Graphics;t.addChild(s);}let i=t.width,r=t.height;t.calculateBounds=function(){this._bounds.clear(),this._bounds.addFrame(this.transform,-e,-e,i+e,r+e);};}static ƀbg(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:helpersLib.ColorHelper.white,blendMode:exports.BlendMode.Add};return t&&(e={...e,...t}),e}};I.onHardReset.subscribe(()=>{kt.ƀes.clear();}).attachToRoot();var J=class o extends u{static{h(this,"Sprite");}static createByName(t){let e=x.setupOptions.spriteDefinitions[t];if(!e)throw new Error(`Sprite: Could not find sprite definition with name ${t}.`);return new o(e)}static createSnapshotSprite(t){let e=t.ƀii,i=e.parent;i&&i.removeChild(e);let r=x.instance.renderer.generateTexture(e,{resolution:2,scaleMode:j__namespace.SCALE_MODES.LINEAR,multisample:j__namespace.MSAA_QUALITY.HIGH});i&&i.addChild(e);let n={id:F.insertAsset(r),scale:t.scale,size:t.size,anchor:helpersLib.Vector.zero,destroyAssetOnDestroy:true};return new o(n,{ignoreAnchor:true})}constructor(t,e={}){if(super(),this.ƀku=1,!t)throw new Error("Sprite: spriteDefinition cannot be nullish!");this.ƀkb=t,this.pixiSprite=new j__namespace.Sprite(F.getAsset(t.id)),this.ƀii.addChild(this.pixiSprite),this.setTextureScale(t.scale),e.textureSize&&(this.pixiSprite.width=e.textureSize.x,this.pixiSprite.height=e.textureSize.y),e.texturePosition&&this.pixiSprite.position.set(e.texturePosition.x,e.texturePosition.y),e.ignoreAnchor||this.pixiSprite.anchor.set(t.anchor.x,t.anchor.y);}destroy(){this.destroyed||(super.destroy(),this.ƀgm?.destroy(),this.ƀak?.destroy(),this.ƀkb.destroyAssetOnDestroy&&(F.destroyAsset(this.ƀkb.id),this.ƀij&&F.destroyAsset(this.ƀij.texture.id)),this.ƀij&&!this.ƀij.destroyed&&this.ƀij.destroy());}setTextureScale(t){return this.textureScale=t,this}get textureScale(){return this.ƀku}set textureScale(t){this.ƀku=t,this.pixiSprite.scale.set(t);}get size(){return new helpersLib.Vector(this.pixiSprite.width,this.pixiSprite.height)}getMask(){return this.pixiSprite}set interactive(t){super.interactive=t,t&&this.ƀkb.boundingShapes&&!this.ƀii.hitArea&&(this.ƀii.hitArea=new os(this.ƀkb.boundingShapes,this.size,helpersLib.Vector.fromVec2(this.ƀkb.anchor)));}setMipmap(t){return this.mipmap=t,this}get mipmap(){return this.pixiSprite.texture.baseTexture.mipmap===j__namespace.MIPMAP_MODES.ON}set mipmap(t){t?this.pixiSprite.texture.baseTexture.mipmap=j__namespace.MIPMAP_MODES.ON:this.pixiSprite.texture.baseTexture.mipmap=j__namespace.MIPMAP_MODES.OFF;}setBlendMode(t){return this.blendMode=t,this}get blendMode(){return this.pixiSprite.blendMode}set blendMode(t){this.pixiSprite.blendMode=t;}setTint(t){return this.tint=t,this}get tint(){return new j__namespace.Color(this.pixiSprite.tint).toRgb()}set tint(t){this.pixiSprite.tint=t;}setShapeAlpha(t){return this.pixiSprite.alpha=t,this}get shapeAlpha(){return this.pixiSprite.alpha}set shapeAlpha(t){this.pixiSprite.alpha=t;}setGlowAlpha(t){return this.glowAlpha=t,this}get glowAlpha(){if(this.ƀij)return this.ƀij.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀij)this.ƀij.alpha=t;else throw new Error("Sprite: setGlowFilterAlpha cannot be called before glow filter is added.")}getAlignmentVector(t){let e=helpersLib.Vector.fromVec2(this.ƀkb.anchor).to(t);return new helpersLib.Vector(this.size.x*e.x,this.size.y*e.y)}setGlowEffect(t){return this.ƀij&&(this.ƀij.destroy(),this.ƀij=void 0),t&&(this.ƀij=kt.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀkb.destroyAssetOnDestroy),this.ƀij.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀij.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.ƀii.addChild(this.ƀij)),this}showBoundingShape(t){return t?this.ƀak||(this.ƀak=this.ƀbv().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀak&&(this.ƀak.destroy(),this.ƀak=void 0),this}getBoundingMask(){if(!this.ƀgm){if(!this.ƀkb.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀgm=this.ƀbv(),this.ƀgm.pixiSprite._maskRefCount=Number.POSITIVE_INFINITY,this.ƀgm.pixiSprite.renderable=false,this.ƀgm.displayParent(this);}return this.ƀgm}ƀbv(){if(!this.ƀkb.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return A.createPolygon(this.ƀkb.boundingShapes,helpersLib.ColorHelper.white).toSprite().attach(this)}download(){let t=x.instance.renderer.extract.canvas(this.ƀii);if(!t.toBlob)throw new Error("Sprite: canvas.toBlob is undefined!");return t.toBlob(e=>{if(!e)throw new Error("Sprite: blob is undefined!");let i=document.createElement("a");document.body.append(i),i.download="sprite.png",i.href=URL.createObjectURL(e),i.click(),i.remove();},"image/png"),this}},os=class{static{h(this,"CompositeHitArea");}constructor(t,e,i){this.ƀju=t.map(r=>new j__namespace.Polygon(r.map(s=>new j__namespace.Point(s.x,s.y))));}contains(t,e){return this.ƀju.some(i=>i.contains(t,e))}};var Se=class{static{h(this,"DashedLineHelper");}static getLines(t,e,i){let r=helpersLib.Vector.fromTo(t,e),s=r.normalize(),n=r.length-i.lineStartGap-i.lineEndGap,a=[];if(n<=0)return a;let l=t.add(s.normalize(i.lineStartGap));if(n<=i.dashGap+i.dashLength*.5)return a.push({from:l,to:l.add(s.normalize(n))}),a;let c=n-i.dashGap,p=i.dashLength+i.dashGap,m=Math.floor(c/p),y=c-p*m;m>=1&&y<i.dashLength&&(y+=p,m--);let D=s.normalize(y/2),Et=s.normalize(i.dashGap);if(a.push({from:l,to:l.add(D)}),l=l.add(D),m>0){let ne=s.normalize(i.dashLength);helpersLib.ArrayHelper.createEmptyArray(m).forEach(()=>{l=l.add(Et),a.push({from:l,to:l.add(ne)}),l=l.add(ne);});}return l=l.add(Et),a.push({from:l,to:l.add(D)}),a}};var A=class o extends u{static{h(this,"Graphics");}static{this.ƀcu=new Map;}static createArrow(t,e){let i=new j__namespace.Graphics,r=[[{x:0,y:-t/2},{x:t*3/8,y:-t/8},{x:t/4,y:0},{x:0,y:-t/4},{x:-t/4,y:0},{x:-t*3/8,y:-t/8}],[{x:0,y:-t/4},{x:t/8-t/30,y:-t/8-t/30},{x:t/8-t/30,y:t*7/16},{x:-t/8+t/30,y:t*7/16},{x:-t/8+t/30,y:-t/8-t/30}]];return i.beginFill(e),r.forEach(s=>{i.drawPolygon(s.map(n=>new j__namespace.Point(n.x,n.y)));}),i.endFill(),new o(i,JSON.stringify({type:"arrow",size:t,color:e}))}static createDashedLine(t,e,i){let r={width:2,dashLength:10,dashGap:4,lineStartGap:0,lineEndGap:0,color:helpersLib.ColorHelper.white,...i},s=new j__namespace.Graphics;return s.lineStyle(r.width,r.color),Se.getLines(t,e,r).forEach(a=>{s.moveTo(a.from.x,a.from.y).lineTo(a.to.x,a.to.y);}),new o(s,JSON.stringify({type:"dashedLine",from:t,to:e,options:r}))}static createVector(t,e,i){let r=new j__namespace.Graphics;return r.lineStyle(2,i),r.moveTo(t.x,t.y),r.lineTo(e.x,e.y),r.lineStyle(1,i),r.beginFill(helpersLib.ColorHelper.white),r.drawCircle(t.x,t.y,3),r.endFill(),new o(r,JSON.stringify({type:"line",start:t,end:e,color:i}))}static createRectangleBorders(t,e,i){let r=new j__namespace.Graphics;return r.beginFill(i),r.drawRect(0,0,t.x,e),r.drawRect(0,e,e,t.y-e*2),r.drawRect(t.x-e,e,e,t.y-e*2),r.drawRect(0,t.y-e,t.x,e),r.endFill(),new o(r,JSON.stringify({type:"rectangle-borders",size:t,borderSize:e,color:i}))}static createRectangle(t,e=helpersLib.ColorHelper.white){let i=new j__namespace.Graphics;return i.beginFill(e),i.drawRect(0,0,t.x,t.y),i.endFill(),new o(i,JSON.stringify({type:"rectangle",size:t,color:e}))}static createCircle(t,e){let i=new j__namespace.Graphics;return i.beginFill(e),i.drawCircle(0,0,t),i.endFill(),new o(i,JSON.stringify({type:"circle",radius:t,color:e}))}static createElipse(t,e){let i=new j__namespace.Graphics;return i.beginFill(e),i.drawEllipse(0,0,t.x,t.y),i.endFill(),new o(i,JSON.stringify({type:"elipse",size:t,color:e}))}static createPolygon(t,e){let i=new j__namespace.Graphics,r=JSON.stringify({type:"polygon",polygon:t,color:e});return i.beginFill(e),t.forEach(s=>{i.drawPolygon(s.map(n=>new j__namespace.Point(n.x,n.y)));}),i.endFill(),new o(i,r)}static createRegularPolygon(t,e,i){let r=new j__namespace.Graphics,s=new helpersLib.Radian(helpersLib.PI_360/t);r.beginFill(i),r.moveTo(e,0);for(let n=1;n<=t;n++){let l=s.multiply(n).vector.normalize(e),c=e+l.x,p=e+l.y;r.lineTo(c,p);}return r.endFill(),new o(r,JSON.stringify({type:"regular-polygon",sides:t,radius:e,color:i}))}constructor(t,e){super(),this.ƀii.addChild(t),this.pixiGraphics=t,this.ƀan=e;}destroy(){this.destroyed||(super.destroy(),!this.pixiGraphics.destroyed&&this.pixiGraphics.destroy());}toSprite(t){let e={cacheName:this.ƀan,cache:false,...t},i=this.ƀem(e.cacheName,e.cache),r={id:i.textureID,scale:1,size:i.bounds,anchor:{x:0,y:0},destroyAssetOnDestroy:!e.cache},s=new J(r,{texturePosition:i.bounds,ignoreAnchor:true});return this.attachToRoot(),this.destroy(),s}ƀem(t,e){if(e){let i=o.ƀcu.get(t);return i||(i=this.ƀch(),o.ƀcu.set(t,i)),i}else return this.ƀch()}ƀch(){let t=x.instance.renderer.generateTexture(this.pixiGraphics);t.id=F.insertAsset(t);let e=this.pixiGraphics.getBounds();return {textureID:t.id,bounds:new helpersLib.Vector(e.x,e.y)}}};var Qe=class{static{h(this,"AnimationEaseInOutFlatter");}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},xt=class o extends u{static{h(this,"ScrollMaskUI");}static{this.ƀcu=new Map;}constructor(t,e,i,r=exports.ScrollDirection.Vertical){if(super(),i<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(e.y<i*2)throw new Error(`The height of the scroll mask cannot be lower than '${i*2}'`);let s=new u;r===exports.ScrollDirection.Horizontal?this.ƀcb(e,i,s):this.ƀci(e,i,s),this.ƀgm=J.createSnapshotSprite(s).attach(this),s.destroy(),t.setMask(this.ƀgm);}ƀci(t,e,i){e>0&&this.ƀby(new helpersLib.Vector(t.x,e)).displayParent(i).attach(i),A.createRectangle(new helpersLib.Vector(t.x,t.y-e*2),helpersLib.ColorHelper.white).toSprite().setPosition(new helpersLib.Vector(0,e),{round:false}).displayParent(i).attach(i),e>0&&this.ƀby(new helpersLib.Vector(t.x,e)).setPosition(new helpersLib.Vector(t.x,t.y),{round:false}).setRotation(helpersLib.Radian.get180).displayParent(i).attach(i);}ƀcb(t,e,i){e>0&&this.ƀby(new helpersLib.Vector(t.y,e)).setPosition(new helpersLib.Vector(0,t.y),{round:false}).setRotation(helpersLib.Radian.get270).displayParent(i).attach(i),A.createRectangle(new helpersLib.Vector(t.x-e*2,t.y),helpersLib.ColorHelper.white).toSprite().setPosition(new helpersLib.Vector(e,0),{round:false}).displayParent(i).attach(i),e>0&&this.ƀby(new helpersLib.Vector(t.y,e)).setPosition(new helpersLib.Vector(t.x,0),{round:false}).setRotation(helpersLib.Radian.get90).displayParent(i).attach(i);}ƀby(t){let i={id:this.ƀbz(t.y),scale:1,size:t,anchor:{x:0,y:0}};return new J(i,{textureSize:t,ignoreAnchor:true})}ƀbz(t){let e=JSON.stringify({type:"gradient",length:t}),i=o.ƀcu.get(e);if(!i){let r=document.createElement("canvas");r.width=1,r.height=t;let s=r.getContext("2d");if(s){let n=new Qe;helpersLib.ArrayHelper.createIntegerArray(t).forEach(l=>{let c=`rgba(255, 255, 255, ${n.multiplierFunction(l/t)})`;s.fillStyle=c,s.fillRect(0,l,1,1);});let a=j__namespace.Texture.from(r);i=F.insertAsset(a),o.ƀcu.set(e,i);}else throw new Error("Canvas context is null")}return i}};exports.SlideStateAnimationState=void 0;(function(o){o[o.Appear=1]="Appear",o[o.Disappear=2]="Disappear";})(exports.SlideStateAnimationState||(exports.SlideStateAnimationState={}));var P;(function(o){o[o.Idle=1]="Idle",o[o.TransitionForward=2]="TransitionForward",o[o.TransitionBackward=3]="TransitionBackward",o[o.Reverting=4]="Reverting";})(P||(P={}));var Pe=class extends actionsLib.Attachable{static{h(this,"SlideStateAnimation");}constructor(t){super(),this.ƀo=P.Idle,this.ƀhm=new actionsLib.Action,this.ƀho=new actionsLib.Action,this.ƀhr={duration:500,animation:w.easeInOutCubic,...t},this.ƀkj=new ge({duration:this.ƀhr.duration,animation:this.ƀhr.animation}).onStateChange((e,i)=>this.ƀey(e,i)).onValueChange(e=>this.ƀez(e)).attach(this);}setIndex(t,e){if(!helpersLib.Comparator.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfn===void 0?(this.ƀfn=t,this.ƀhm.trigger({state:exports.SlideStateAnimationState.Appear,index:t}),this.ƀkj.setState(t,e)):this.ƀfn!==t?this.ƀhd!==t?this.ƀo===P.Idle?(this.ƀo=t>this.ƀfn?P.TransitionForward:P.TransitionBackward,this.ƀhd=t,this.ƀhm.trigger({state:exports.SlideStateAnimationState.Appear,index:this.ƀhd}),this.ƀkj.setState(t,e)):this.ƀkj.setState(t,e):this.ƀo===P.Reverting&&this.ƀhd===t&&(this.ƀo=t>this.ƀfn?P.TransitionForward:P.TransitionBackward,this.ƀkj.setState(t,e)):(this.ƀo===P.TransitionForward||this.ƀo===P.TransitionBackward)&&(this.ƀo=P.Reverting,this.ƀkj.setState(t,e));}ƀey(t,e){switch(this.ƀfn!==void 0&&this.ƀfn!==t&&this.ƀfn!==e&&this.ƀhm.trigger({state:exports.SlideStateAnimationState.Disappear,index:this.ƀfn}),this.ƀhd!==void 0&&this.ƀhd!==t&&this.ƀhd!==e&&this.ƀhm.trigger({state:exports.SlideStateAnimationState.Disappear,index:this.ƀhd}),e!==void 0&&e!==this.ƀfn&&e!==this.ƀhd&&this.ƀhm.trigger({state:exports.SlideStateAnimationState.Appear,index:e}),this.ƀo){case P.Idle:break;case P.TransitionForward:case P.TransitionBackward:e===void 0?(this.ƀo=P.Idle,this.ƀfn=this.ƀhd,this.ƀhd=void 0):this.ƀfn!==t&&this.ƀev(t,e);break;case P.Reverting:e===void 0?(this.ƀo=P.Idle,this.ƀhd=void 0):this.ƀfn!==e&&this.ƀev(t,e);break;default:{this.ƀo;throw new Error(`Unexpected case! "${this.ƀo}"`)}}}ƀez(t){let e=1;(this.ƀo===P.TransitionBackward||this.ƀo===P.Reverting&&this.ƀfn!==void 0&&this.ƀhd!==void 0&&this.ƀfn>this.ƀhd)&&(e=-1),(this.ƀo===P.Idle||t!==0)&&this.ƀho.trigger({value:helpersLib.NumberHelper.ensurePositiveZero(-e*t),index:this.ƀfn}),this.ƀhd!==void 0&&this.ƀho.trigger({value:helpersLib.NumberHelper.ensurePositiveZero(e*(1-t)),index:this.ƀhd});}ƀev(t,e){this.ƀfn=t,this.ƀhd=e,this.ƀho.trigger({value:0,index:this.ƀfn}),this.ƀo=this.ƀfn<this.ƀhd?P.TransitionForward:P.TransitionBackward;}onStateChange(t){return this.ƀhm.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀho.subscribe(e=>t(e.value,e.index)).attach(this),this}};exports.ScrollDirection=void 0;(function(o){o[o.Horizontal=1]="Horizontal",o[o.Vertical=2]="Vertical";})(exports.ScrollDirection||(exports.ScrollDirection={}));var qe=class extends u{static{h(this,"SlideInContentByIndex");}constructor(t,e){super(),this.ƀbx=t,this.ƀcp="x",this.ƀbn=new Map,this.ƀhr={duration:300,animation:w.easeInOutCubic,size:new helpersLib.Vector(500,500),margin:20,direction:exports.ScrollDirection.Horizontal,...e};let i=this.ƀhr.direction===exports.ScrollDirection.Horizontal?new helpersLib.Vector(this.ƀhr.size.x+this.ƀhr.margin*2,this.ƀhr.size.y):new helpersLib.Vector(this.ƀhr.size.x,this.ƀhr.size.y+this.ƀhr.margin*2),r=new u().setPosition(this.ƀhr.direction===exports.ScrollDirection.Horizontal?new helpersLib.Vector(-this.ƀhr.margin,0):new helpersLib.Vector(0,-this.ƀhr.margin),{round:false}).displayParent(this).attach(this);this.ƀcc(i,this.ƀhr.margin,this.ƀhr.direction,r),this.ƀcp=this.ƀhr.direction===exports.ScrollDirection.Horizontal?"x":"y",this.ƀkj=new Pe({duration:this.ƀhr.duration,animation:this.ƀhr.animation}).onStateChange((s,n)=>{if(s===exports.SlideStateAnimationState.Appear){let a=new u().displayParent(this).attach(this);this.ƀbn.set(n,a),this.ƀbx({index:n,container:a});}else {let a=this.ƀbn.get(n);a&&(a.destroy(),this.ƀbn.delete(n));}}).onValueChange((s,n)=>{let a=this.ƀbn.get(n);if(a){let l={x:0,y:0};l[this.ƀcp]=i[this.ƀcp]*s+this.ƀhr.margin,a.setPosition(helpersLib.Vector.fromVec2(l),{round:false});}}).attach(this),this.addChildTo=r;}setIndex(t,e){return this.ƀkj.setIndex(t,e),this}ƀcc(t,e,i,r){new xt(r,new helpersLib.Vector(t.x,t.y),e,i).attach(this);}},ji=class extends qe{static{h(this,"SlideInContent");}constructor(t,e,i){super(r=>{let s=this.indexToItem.get(r.index);if(s)e({index:r.index,item:s,container:r.container});else throw new Error(`SlideInContent: The item with index '${r.index}' is not part of the items list`)},i),this.itemToIndex=new Map,this.indexToItem=new Map,t.forEach((r,s)=>{this.itemToIndex.set(r,s),this.indexToItem.set(s,r);});}setItem(t,e){let i=this.itemToIndex.get(t);if(i!==void 0)this.setIndex(i,e);else throw new Error(`SlideInContent: The item '${t}' is not part of the items list`);return this}};var bt=class{static{h(this,"VectorSet");}constructor(){this.ƀlg=new Map;}add(t){let e=this.ƀlg.get(t.x);e||(e=new Set,this.ƀlg.set(t.x,e)),e.add(t.y);}has(t){let e=this.ƀlg.get(t.x);return e?e.has(t.y):false}delete(t){let e=this.ƀlg.get(t.x);return e?e.delete(t.y):false}};var ti=class{static{h(this,"DeltaTime");}static adjustMultiplier(t,e){return Math.pow(t,e)}};var V=class{static{h(this,"PositionToGridPositionConverter");}static areaToGridArea(t,e){return new helpersLib.Rectangle(this.positionToGridPosition(t.topLeft,e),this.positionToGridPosition(t.bottomRight,e))}static positionToGridPosition(t,e){return t.divideNumber(e).floor()}static gridPositionToPosition(t,e){return t.add(new helpersLib.Vector(.5,.5)).multiplyNumber(e)}};var Yt=class{static{h(this,"ClosestAvailableSpaceHelper");}static findByConvertingGridSpace(t,e,i){let r=new helpersLib.Vector(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),s=V.areaToGridArea(e,i);if(this.ƀau(t,s))return helpersLib.Vector.zero;let n=t.movePositionInsideGrid(s.topLeft),a=helpersLib.Vector.fromTo(s.topLeft,n),l=this.find(t,n,r);if(l){let c=l.add(a),p=helpersLib.Vector.fromTo(s.topLeft.multiplyNumber(i),e.topLeft);return new helpersLib.Vector(c.x*i+((r.x+1)*i-e.size.x)/2-p.x,c.y*i+((r.y+1)*i-e.size.y)/2-p.y)}}static find(t,e,i){let r=new bt,s=new helpersLib.Queue(e);for(;s.notEmpty;){let n=s.pop();r.add(n);let a=new helpersLib.Rectangle(n,n.add(i));if(this.ƀau(t,a))return helpersLib.Vector.fromTo(e,n);t.getNeighborPositions(n,helpersLib.GridNeighborType.Ortogonal).forEach(l=>{r.has(l)||s.add(l);});}}static ƀau(t,e){if(!t.isAreaWithinBounds(e))return false;for(let i=e.topLeft.y;i<=e.bottomRight.y;i++)for(let r=e.topLeft.x;r<=e.bottomRight.x;r++)if(!t.get(new helpersLib.Vector(r,i)))return false;return true}};var Ui=class{static{h(this,"PathfinderNode");}constructor(t,e,i,r=void 0){this.position=t,this.distanceFromStart=e,this.distanceToEnd=i,this.parent=r,this.closed=false;}get pathLength(){return this.distanceFromStart+this.distanceToEnd}isEqual(t){return helpersLib.Vector.isEqual(this.position,t)}createSolutionPath(t){let e=[this.position],i=this.parent;for(;i!==void 0;)e.push(i.position),i=i.parent;return e.reverse(),{directPathAvailable:t,path:e}}getDistance(t){return this.position.getDistance(t)}},Ss=class{static{h(this,"PathfinderGrid");}constructor(t,e){this.ƀeu=t,this.ƀkf=e,this.ƀhq=new helpersLib.BinaryHeap("min"),this.ƀaz=[],this.ƀhf=new helpersLib.Grid({size:t.size,defaultValue:void 0});let i=new Ui(this.ƀkf,0,Number.MAX_SAFE_INTEGER);this.ƀhq.add(i.pathLength,i);}get hasOpenNodes(){return this.ƀhq.size>0}getNeighbors(t,e){return this.ƀeu.getNeighborPositions(t.position,e).filter(i=>this.ƀeu.get(i)).map(i=>this.ƀhf.get(i)||this.ƀcd(i))}popLowestPathCostNode(){let t=this.ƀhq.pop();return this.ƀhq.delete(t),t.closed=true,this.ƀaz.push(t),t}changeNodeCost(t,e,i,r){this.ƀhq.delete(t),t.distanceFromStart=e,t.distanceToEnd=t.getDistance(i),t.parent=r,this.ƀhq.add(t.pathLength,t);}getBestClosedNode(){return this.ƀaz.reduce((t,e)=>t.distanceToEnd<e.distanceToEnd?t:e)}ƀcd(t){let e=new Ui(t,Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);return this.ƀhf.set(t,e),this.ƀhq.add(e.pathLength,e),e}},Xt=class{static{h(this,"PathFinder");}static findPath(t,e,i,r){let s=new Ss(t,e);for(;s.hasOpenNodes;){let n=s.popLowestPathCostNode();if(n.isEqual(i))return n.createSolutionPath(true);let a=s.getNeighbors(n,r);for(let l of a)if(!l.closed){let c=n.distanceFromStart+n.getDistance(l.position);c<l.distanceFromStart&&s.changeNodeCost(l,c,i,n);}}return s.getBestClosedNode().createSolutionPath(false)}};var Kt=class{static{h(this,"VectorFieldPathFinder");}constructor(t,e){this.ƀko=t,this.ƀy=e,this.ƀfb=this.ƀec(this.ƀy.size),this.ƀlo=new helpersLib.Grid({size:this.ƀy.size,defaultValue:this.ƀfb}),this.ƀcq=new helpersLib.Grid({size:this.ƀy.size,defaultValue:void 0});let i=new bt,r=new helpersLib.Queue;for(this.ƀdp(this.ƀy.cropAreaOutsideOfTheGrid(t)).forEach(n=>{this.ƀlo.set(n,0),r.add(n);});r.notEmpty;){let n=r.pop();if(!i.has(n)){i.add(n);let a=this.ƀlo.getOrFail(n);this.ƀeh(n,this.ƀy).forEach(l=>{if(!i.has(l.position)){let c=this.ƀlo.getOrFail(l.position),p=a+l.distance;this.ƀy.getOrFail(l.position)&&p<c&&(this.ƀlo.set(l.position,p),r.add(l.position));}});}}}getDirectionToTarget(t){if(!t.isInsideRectangle(this.ƀko)){if(t=this.ƀlo.movePositionInsideGrid(t),this.ƀcq.has(t))return this.ƀcq.get(t);{let e=this.ƀeh(t,this.ƀy),i;return this.ƀlo.getOrFail(t)>=this.ƀfb?e.some(s=>this.ƀy.get(s.position))&&(e.some(n=>!this.ƀy.get(n.position))?i=this.ƀdw(e):i=this.ƀdr(t,e)):i=this.ƀdr(t,e),this.ƀcq.set(t,i),i}}}ƀdw(t){let e=t.filter(i=>this.ƀy.get(i.position)).map(i=>i.direction.radian);return helpersLib.Radian.getAverage(...e)}ƀdr(t,e){let i=e.filter(r=>this.ƀlo.getOrFail(r.position)<this.ƀfb).reduce((r,s)=>{let n=this.ƀlo.getOrFail(s.position)+s.distance;return n<r.bestWeight?(r.bestDirections=[s.direction],r.bestWeight=n):n===r.bestWeight&&r.bestDirections.push(s.direction),r},{bestDirections:[],bestWeight:this.ƀfb}).bestDirections;return this.ƀen(i,t)}ƀen(t,e){if(t.length>0){let i=t.reduce((r,s)=>r.add(s),helpersLib.Vector.zero);if(i.isZero()||!this.ƀft(e,i))return helpersLib.Random.pickRandomElement(t).radian;if(t.length>=1)return i.radian}}ƀft(t,e){let i=t.add(this.ƀlh(e));return this.ƀy.isPointWithinBounds(i)&&this.ƀy.getOrFail(i)}ƀeh(t,e){return this.ƀlo.getNeighborDirections(t,helpersLib.GridNeighborType.All).map(i=>({position:t.add(i),direction:i,distance:i.x!==0&&i.y!==0?14:10}))}ƀdp(t){let e=[];for(let i=t.topLeft.y;i<=t.bottomRight.y;i++)for(let r=t.topLeft.x;r<=t.bottomRight.x;r++)e.push(new helpersLib.Vector(r,i));return e}ƀlh(t){let e=t.normalize().round();return new helpersLib.Vector(e.x,e.y)}ƀec(t){return (t.x+t.y)*20}};var T=class o{static{h(this,"AudioAssets");}static{this.ƀam=new Map;}static{this.context=new AudioContext;}static async load(t){await Promise.all(t.map(e=>fetch(e.url).then(i=>i.arrayBuffer()).then(i=>this.context.decodeAudioData(i)).then(i=>this.ƀam.set(e.id,i))));}static createSource(t){let e=o.ƀdq(t),i=o.context.createBufferSource();return i.buffer=e,i}static ƀdq(t){let e=this.ƀam.get(t);if(!e)throw new Error(`Audio: Sound with id ${t} was not loaded.`);return e}};I.onHardReset.subscribe(()=>{T.context=new AudioContext,T.ƀam.clear();}).attachToRoot();var Y=class o{static{h(this,"Audio");}static ƀjq(){return this.ƀfq=new o,this.ƀfq}constructor(){this.ƀgp=T.context.createGain(),this.ƀgo=T.context.createGain(),this.ƀhc=T.context.createGain(),this.ƀjx=T.context.createGain(),this.ƀgp.connect(T.context.destination),this.ƀgo.connect(this.ƀgp),this.ƀhc.connect(this.ƀgo),this.ƀjx.connect(this.ƀgo),this.ƀgq=new C(this.ƀgp.gain,"value",{duration:500*2,animation:w.lineer,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState});}setVolumes(t){this.ƀgo.gain.value=t.master,this.ƀhc.gain.value=t.music,this.ƀjx.gain.value=t.sound;}appear(t,e="ease"){let i=t?1:0;switch(e){case "ease":return this.ƀgq.animate({value:i}).chainToRoot();case "instant":return this.ƀgq.set({value:i}),actionsLib.SingleEvent.instant();default:{throw new Error(`Unexpected case! "${e}"`)}}}};I.onHardReset.subscribe(()=>{Y.ƀjq();}).attachToRoot();var As=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s};exports.CameraGateway=class ot extends Q(){static{h(this,"CameraGateway");}};exports.CameraGateway=As([d()],exports.CameraGateway);var Is=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Pt=class extends Q(){static{h(this,"CameraViewGateway");}};Pt=Is([d()],Pt);var $i;(function(o){o.BackgroundScreen="backgroundScreen",o.Background="background",o.Main="main",o.Foreground="foreground",o.ForegroundScreen="foregroundScreen";})($i||($i={}));exports.FocusingAnimation=void 0;(function(o){o[o.Instant=1]="Instant",o[o.EaseInOut=2]="EaseInOut",o[o.EaseOut=3]="EaseOut";})(exports.FocusingAnimation||(exports.FocusingAnimation={}));var ii=class extends u{static{h(this,"Placeholder");}constructor(t){super(),this.ƀik=new j__namespace.Graphics,this.ƀik.beginFill(0,1e-9),this.ƀik.drawRect(0,0,t.x,t.y),this.ƀik.endFill(),this.ƀii.addChild(this.ƀik);}destroy(){this.destroyed||(super.destroy(),this.ƀik.destroy());}};var Mt=class{static{h(this,"TextStyleConverter");}static getPixiTextStyle(t){let e={color:helpersLib.ColorHelper.white,align:"center",fontFamily:"Arial",fontStyle:"normal",fontSize:18,lineHeight:void 0,wordWrapWidth:void 0,lineThrough:false,...t},i=t?.dropShadow===true?{}:t?.dropShadow,r={};if(i){let s={blur:4,angle:helpersLib.Radian.get60,distance:10,color:helpersLib.ColorHelper.black,alpha:.5,...i};r={dropShadow:true,dropShadowBlur:s.blur,dropShadowAngle:s.angle.value,dropShadowDistance:s.distance,dropShadowColor:helpersLib.ColorHelper.rgbToHex(s.color),dropShadowAlpha:s.alpha};}return helpersLib.JsonHelper.removeUndefinedProperties({fontFamily:e.fontFamily,fill:helpersLib.ColorHelper.rgbToHex(e.color),align:e.align,fontSize:e.fontSize,fontStyle:e.fontStyle,lineHeight:e.lineHeight,wordWrapWidth:e.wordWrapWidth,wordWrap:e.wordWrapWidth!==void 0,lineThrough:e.lineThrough,...r})}};var Ee=class{static{h(this,"RichTextDataInConverter");}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),r=scriptEngineLib.RichTextSeparator.process(t,i),s=this.ƀfm(r,e),n=this.ƀs(s);return this.ƀjz(n)}static ƀfm(t,e){let i=new Map,r=new Map,s=h((a,l)=>{if(r.has(l))return r.get(l);let c=Mt.getPixiTextStyle(a);return r.set(l,c),c},"GetPixiStyle");return t.map(a=>{let{style:l,cacheKey:c}=this.ƀdu(a.tags,e,i),p=s(l,c),m=j__namespace.TextMetrics.measureText(" ",new j__namespace.TextStyle(p),false);return {text:a.text,cacheKey:c,style:l,pixiStyle:p,spaceWidth:m.width}})}static ƀdu(t,e,i){let r=t.join("+");if(i.has(r))return {style:i.get(r),cacheKey:r};let s=this.ƀbe(t,e);return i.set(r,s),{style:s,cacheKey:r}}static ƀbe(t,e){let i={...e.default};for(let l of t)e.styles&&e.styles[l]&&(i={...i,...e.styles[l]});let{wordWrapWidth:r,align:s,dropShadow:n,...a}=i;return a}static ƀs(t){let e=[],i=[];return t.forEach((r,s)=>{r.text.split(/\r?\n/).forEach((a,l)=>{l>0&&(e.push(i),i=[]),i.push({text:a,cacheKey:r.cacheKey,style:r.style,pixiStyle:r.pixiStyle,spaceWidth:r.spaceWidth});});}),e.push(i),e}static ƀjz(t){let e=[];return t.forEach(i=>{if(i.length===0)throw new Error("Internal Error: Line is unexpectedly empty");let r=i.flatMap(s=>this.ƀka(s.text).map(a=>{let l=new j__namespace.TextStyle(s.pixiStyle),c=j__namespace.TextMetrics.measureText(a,l,false);return {text:a,whitespace:a.trim()==="",style:{cacheKey:s.cacheKey,style:s.style,pixiStyle:l,height:c.height,ascent:c.fontProperties.ascent,descent:c.fontProperties.descent,width:c.width,spaceWidth:s.spaceWidth}}}));e.push(r);}),e}static ƀka(t){if(t==="")return [""];let e=[],i="",r=t[0]===" ";for(let s=0;s<t.length;s++){let n=t[s],a=n===" ";a===r?i+=n:(e.push(i),i=n,r=a);}return i&&e.push(i),e}};var Re=class{static{h(this,"RichTextTypewriter");}get lineIsEmpty(){return this.ƀcl.length===0}get remainingWidth(){return this.ƀlp-this.ƀcn}constructor(t,e){this.ƀlp=t,this.ƀge=[],this.ƀcl=[],this.ƀcn=0,this.ƀgd=new helpersLib.Vector(0,0),this.ƀcm=0;let i={rectangleCutOption:void 0,horizontalAlignment:"left",verticalAlignment:"bottom",...e};if(this.ƀfe=i.horizontalAlignment,this.ƀli=i.verticalAlignment,i.rectangleCutOption){if(i.rectangleCutOption.position.x<0||i.rectangleCutOption.position.x>=this.ƀlp||i.rectangleCutOption.position.y<0)throw new Error("Rectangle cut position is out of bounds");this.ƀco={direction:i.rectangleCutOption.direction,rectangle:this.ƀbr(i.rectangleCutOption)};}}isSpaceAvailable(t){let e=Math.max(this.ƀcm,t.y),i=this.ƀed(this.ƀgd.y,this.ƀgd.y+e);return this.ƀcn+t.x<=i}insertWord(t){let e=Math.max(this.ƀcm,t.style.height);if(this.ƀcl.length===0){let i=this.ƀee(this.ƀgd.y,this.ƀgd.y+e);this.ƀgd=new helpersLib.Vector(i,this.ƀgd.y),this.ƀcn=this.ƀgd.x;}this.ƀcl.push({chunk:t,position:new helpersLib.Vector(this.ƀcn,this.ƀgd.y)}),this.ƀcm=e,this.ƀcn+=t.style.width;}newLine(){let t=this.ƀgd.y+this.ƀcm,e=this.ƀee(t,t);this.ƀdh(),this.ƀgd=new helpersLib.Vector(e,t),this.ƀcn=this.ƀgd.x,this.ƀcm=0;}print(){return this.ƀdh(),this.ƀge}ƀdh(){this.ƀcl.length>0&&(this.ƀge.push(this.ƀg(this.ƀcl)),this.ƀcl=[]);}ƀg(t){return t=this.ƀlk(t),t=this.ƀfg(t),t}ƀfg(t){if(this.ƀfe==="left")return t;let e=this.ƀgd.y+this.ƀcm,i=this.ƀee(this.ƀgd.y,e),s=this.ƀed(this.ƀgd.y,e)-i,n=Math.min(s,t.reduce((l,c)=>l+c.chunk.style.width,0)),a;return this.ƀfe==="center"?a=(s-n)/2:a=s-n,t.map(l=>(l={chunk:l.chunk,position:new helpersLib.Vector(l.position.x+a,l.position.y)},l))}ƀlk(t){let e=Math.max(...t.map(r=>r.chunk.style.ascent)),i=Math.max(...t.map(r=>r.chunk.style.descent));return t.map(r=>{let s;switch(this.ƀli){case "top":s=i-r.chunk.style.descent;break;case "center":s=(i-r.chunk.style.descent+e-r.chunk.style.ascent)*.5;break;case "bottom":s=e-r.chunk.style.ascent;break;default:{this.ƀli;throw new Error(`Unexpected case! "${this.ƀli}"`)}}return r={chunk:r.chunk,position:new helpersLib.Vector(r.position.x,r.position.y+s)},r})}ƀee(t,e){return this.ƀco&&(this.ƀco.direction==="topLeft"||this.ƀco.direction==="bottomLeft")&&(this.ƀco.rectangle.isPointInside(new helpersLib.Vector(0,t),{includeEdges:false})||this.ƀco.rectangle.isPointInside(new helpersLib.Vector(0,e),{includeEdges:false}))?this.ƀco.rectangle.bottomRight.x:0}ƀed(t,e){return this.ƀco&&(this.ƀco.direction==="topRight"||this.ƀco.direction==="bottomRight")&&(this.ƀco.rectangle.isPointInside(new helpersLib.Vector(this.ƀlp,t),{includeEdges:false})||this.ƀco.rectangle.isPointInside(new helpersLib.Vector(this.ƀlp,e),{includeEdges:false}))?this.ƀco.rectangle.topLeft.x:this.ƀlp}ƀbr(t){let e,i;switch(t.direction){case "topRight":e=new helpersLib.Vector(t.position.x,-1/0),i=new helpersLib.Vector(1/0,t.position.y);break;case "topLeft":e=new helpersLib.Vector(-1/0,-1/0),i=t.position;break;case "bottomRight":e=t.position,i=new helpersLib.Vector(1/0,1/0);break;case "bottomLeft":e=new helpersLib.Vector(-1/0,t.position.y),i=new helpersLib.Vector(t.position.x,1/0);break;default:{t.direction;throw new Error(`Unexpected case! "${t.direction}"`)}}return new helpersLib.Rectangle(e,i)}};var Ce=class{static{h(this,"ConsistentSpaceTextWrapper");}static wrapText(t,e){return t.forEach(i=>{i.forEach((r,s)=>{if(e.isSpaceAvailable(new helpersLib.Vector(r.style.width,r.style.height)))if(r.whitespace&&s===i.length-2){let n=i[i.length-1];e.isSpaceAvailable(new helpersLib.Vector(n.style.width+r.style.width,n.style.height))?e.insertWord(r):this.ƀlq(r,e);}else e.insertWord(r);else e.lineIsEmpty?e.insertWord(r):r.whitespace?this.ƀlq(r,e):(e.newLine(),e.insertWord(r));}),e.newLine();}),e.print()}static ƀlq(t,e){let i=Math.max(0,Math.floor(e.remainingWidth/t.style.spaceWidth)),r=Math.max(0,Math.min(i,t.text.length-1));if(r>0){let n={text:" ".repeat(r),whitespace:true,style:{...t.style,width:r*t.style.spaceWidth}};e.insertWord(n);}e.newLine();let s=t.text.length-r-1;if(s>0){let n={text:" ".repeat(s),whitespace:true,style:{...t.style,width:s*t.style.spaceWidth}};e.insertWord(n);}}};var Ae=class{static{h(this,"RichTextDataOutConverter");}static process(t){return t=this.ƀgu(t),t=this.ƀkz(t),this.ƀaw(t)}static ƀgu(t){return t.map(e=>{let i=[],r,s=true;return e.forEach(n=>{if(!r||r.chunk.style.cacheKey!==n.chunk.style.cacheKey)r&&i.push(r),r=n,s=n.chunk.whitespace;else {let a=r.chunk.text+n.chunk.text;s=n.chunk.whitespace&&s,r={chunk:{text:a,whitespace:s,style:{...r.chunk.style,width:r.chunk.style.width+n.chunk.style.width}},position:r.position};}}),r&&i.push(r),i})}static ƀkz(t){return t.map(e=>{if(e.length===0)return [];let i=e.pop();if(!i.chunk.whitespace||i.chunk.text===""){let r=i.chunk.text.length,s=i.chunk.text.trimEnd();r!==s.length?e.push({chunk:{text:s,whitespace:false,style:{...i.chunk.style,width:i.chunk.style.width-(r-s.length)*i.chunk.style.spaceWidth}},position:i.position}):e.push(i);}return e})}static ƀaw(t){return t.flatMap(e=>e.map(i=>({text:i.chunk.text,style:i.chunk.style.style,position:i.position}))).filter(e=>e.text.trim()!=="")}};var Zt=class{static{h(this,"RichTextToPlaneText");}static process(t,e){if(e.default.wordWrapWidth===void 0){if(e.default.align==="right"||e.default.align==="center")throw new Error("wordWrapWidth is required for right or center alignment");if(e.rectangleCut&&(e.rectangleCut.direction==="topRight"||e.rectangleCut.direction==="bottomRight"))throw new Error("wordWrapWidth is required for topRight or bottomRight rectangle cut")}let i=Ee.process(t,e),r=helpersLib.JsonHelper.removeUndefinedProperties({rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),s=new Re(e.default.wordWrapWidth??1/0,r),n=Ce.wrapText(i,s);return Ae.process(n)}};var Vs=1,Ji=1/Vs,Qt=class extends u{static{h(this,"Text");}get ƀks(){if(!this.ƀkt){let t=new j__namespace.TextStyle(this.ƀim);this.ƀkt=j__namespace.TextMetrics.measureText(this.ƀkr,t);}return this.ƀkt}get ascent(){return this.ƀks.fontProperties.ascent}constructor(t,e){super(),this.ƀim=Mt.getPixiTextStyle(e),this.setText(t);}destroy(){this.destroyed||(super.destroy(),!this.ƀil.destroyed&&this.ƀil.destroy());}setAnchor(t){return this.anchor=t,this}get anchor(){return new helpersLib.Vector(this.ƀil.anchor.x,this.ƀil.anchor.y)}set anchor(t){this.ƀi=t,this.ƀil.anchor.set(t.x,t.y);}setText(t){return this.ƀkr!==t&&(this.ƀkr=t,this.ƀiu()),this}setColor(t){let e=helpersLib.ColorHelper.rgbToHex(t);return this.ƀim.fill!==e&&(this.ƀim.fill=e,this.ƀiu()),this}ƀiu(){this.ƀil?.destroy(),this.ƀkm?.destroy(),this.ƀkm=void 0,this.ƀkt=void 0;let t=new j__namespace.TextStyle(this.ƀim);this.ƀil=new j__namespace.Text(this.ƀkr,t),this.ƀix(),this.ƀi&&this.ƀil.anchor.set(this.ƀi.x,this.ƀi.y),this.ƀil.scale.set(Ji,Ji),this.ƀii.addChild(this.ƀil),this.ƀim.lineThrough&&(this.ƀkm=this.ƀe(this.ƀil,this.ƀim.fill),this.ƀii.addChild(this.ƀkm));}ƀix(){let t=j__namespace.TextMetrics.measureText(this.ƀkr,new j__namespace.TextStyle({...this.ƀim,dropShadow:false,dropShadowAlpha:0,dropShadowBlur:0,dropShadowDistance:0}));this.ƀil.calculateBounds=function(){this.updateText(true),this._bounds.clear();let e=-this.anchor.x*t.width,i=-this.anchor.y*t.height;this._bounds.addFrame(this.transform,e,i,e+t.width,i+t.height);};}ƀe(t,e){let i=j__namespace.TextMetrics.measureText(t.text,t.style),r=Math.max(1,Math.round(i.lineHeight*.07)),s=r%2*.5,n=new j__namespace.Graphics;n.lineStyle(r,e);let a=0;return i.lines.forEach((l,c)=>{let p=j__namespace.TextMetrics.measureText(l,t.style),m=Math.round(a+(p.fontProperties.ascent-p.fontProperties.descent)*.6+p.fontProperties.descent)+s,y=0;t.style.align==="center"?y=0+(t.width-p.width)*.5:t.style.align==="right"&&(y=0+t.width-p.width),y=Math.floor(y),n.moveTo(Math.floor(y),m),n.lineTo(Math.floor(y+p.width),m),a+=p.lineHeight;}),n.endFill(),n}};var ri=class extends u{static{h(this,"RichText");}constructor(t,e){super(),Zt.process(t,e).forEach(r=>new Qt(r.text,r.style).setPosition(r.position).displayParent(this).attach(this));}};var Ls=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},N=class extends yt{static{h(this,"CameraEntity");}constructor(){super(...arguments),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.offset=new actionsLib.Variable(helpersLib.Vector.zero),this.targetPosition=new actionsLib.Variable(void 0),this.focusingNewTargetInfo=new actionsLib.Variable(void 0);}};N=Ls([gt()],N);var Oe=class{static{h(this,"PositionConversionHelper");}static includeScaleInScreenPosition(t,e,i){if(e!==1){let r=helpersLib.Vector.fromTo(i,t).multiplyNumber(1/e);return i.add(r)}else return t}};var Hs=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},js=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Tt=class extends mt{static{h(this,"CameraView");}constructor(t){super(),this.ƀda=t,this.ƀkc=(()=>{let e=new u().attach(this);return e.ƀii=x.instance.ƀih.stage,e})(),this.ƀjc=new u().setAlpha(0).displayParent(this.ƀkc).attach(this),this.ƀae=A.createRectangle(new helpersLib.Vector(1,1),helpersLib.ColorHelper.black).toSprite({cache:true}).setAlpha(0).displayParent(this.ƀkc).attach(this),this.ƀac=new u().displayParent(this.ƀjc).attach(this),this.ƀar=new u().displayParent(this.ƀjc).attach(this),this.ƀdk=new u().setSortableChildren(true).displayParent(this.ƀjc).attach(this),this.ƀaq=new u().setSortableChildren(true).displayParent(this.ƀar).attach(this),this.ƀdj=new u().setSortableChildren(true).setZIndex(20).displayParent(this.ƀaq).attach(this),this.ƀgk=new u().setSortableChildren(true).setZIndex(10).displayParent(this.ƀaq).attach(this),this.ƀab=new u().setZIndex(0).displayParent(this.ƀaq).attach(this),this.ƀh=new C(this.ƀjc,"alpha",{duration:500,animation:w.easeInOutCubic,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),this.ƀaf=new C(this.ƀae,"alpha",{duration:500,animation:w.easeInOutCubic,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState}),x.instance.screenSize.subscribe(e=>{this.ƀae.aspectRatio=e.x/e.y,this.ƀae.scale=Math.max(e.x,e.y),this.ƀae.setPosition(helpersLib.Vector.zero,{holdFrom:helpersLib.Vector.zero});}).attach(this),this.ƀda.position.subscribe(e=>{this.ƀaq.position=this.ƀbs(e);}).attach(this),this.ƀda.offset.subscribe(e=>{this.ƀar.position=e;}).attach(this),this.appear(true,"alpha");}screenPositonToStagePosition(t){let e=Oe.includeScaleInScreenPosition(t,this.ƀkc.scale,x.instance.screenSizeCenter.value);return new helpersLib.Vector(e.x-this.ƀaq.position.x-this.ƀar.position.x,e.y-this.ƀaq.position.y-this.ƀar.position.y)}getLayers(){return {backgroundScreen:this.ƀac.id,background:this.ƀab.id,main:this.ƀgk.id,foreground:this.ƀdj.id,foregroundScreen:this.ƀdk.id}}appear(t,e){switch(e){case "alpha":return this.ƀaf.set({alpha:0}),this.ƀh.set({alpha:t?0:1}),this.ƀh.animate({alpha:t?1:0}).chain(this);case "pureBlack":return this.ƀh.set({alpha:1}),this.ƀaf.set({alpha:t?1:0}),this.ƀaf.animate({alpha:t?0:1}).chain(this);case "instant":return this.ƀh.set({alpha:t?1:0}),this.ƀaf.set({alpha:t?0:1}),actionsLib.SingleEvent.instant();default:{throw new Error(`Unexpected case! "${e}"`)}}}ƀbs(t){return helpersLib.Vector.fromTo(t,x.instance.screenSizeCenter.value)}};Tt=Hs([Je({entity:N}),js("design:paramtypes",[N])],Tt);var $s=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},zs=1500,De=class{static{h(this,"CameraService");}createCamera(){return new N().attachToRoot()}getCameraPosition(){let t=N.getInstanceOrFail();return helpersLib.Vector.fromTo(t.offset.value,t.position.value)}setPosition(t){let e=N.getInstanceOrFail();e.targetPosition.value=t;}setTransition(t){let e=N.getInstanceOrFail();e.focusingNewTargetInfo.value={time:x.time,duration:t?.duration??zs,position:e.position.value,roundPosition:t?.roundPosition??false,roundPositionThreshold:t?.roundPositionThreshold??0,focusingAnimation:t?.animation??exports.FocusingAnimation.Instant};}update(t,e){let i=N.getInstanceOrFail(),r=i.targetPosition.value;r&&(i.focusingNewTargetInfo.value?this.ƀfw(i,r,t):i.position.value=r);}ƀfw(t,e,i){let r=t.focusingNewTargetInfo.value;if(r.focusingAnimation===exports.FocusingAnimation.Instant)this.ƀbf(t,e);else {let s=(i-r.time)/r.duration;if(s>=1)this.ƀbf(t,e);else {let n;r.focusingAnimation===exports.FocusingAnimation.EaseInOut?n=H.easeInOut(s):r.focusingAnimation===exports.FocusingAnimation.EaseOut?n=H.easeOut(s):n=1;let a=r.position.lerp(e,n);r.roundPosition&&(Math.abs(a.x-r.position.x)>=r.roundPositionThreshold&&(a=new helpersLib.Vector(Math.round(a.x),a.y)),Math.abs(a.y-r.position.y)>=r.roundPositionThreshold&&(a=new helpersLib.Vector(a.x,Math.round(a.y)))),t.position.value=a;}}}ƀbf(t,e){t.position.value=e,t.focusingNewTargetInfo.value=void 0;}};De=$s([d()],De);var ks=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Js=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},oi=class{static{h(this,"CameraController");}constructor(t){this.ƀas=t;}createCamera(){return this.ƀas.createCamera().id}update(t,e){this.ƀas.update(t,e);}setPosition(t){this.ƀas.setPosition(t);}setTransition(t){this.ƀas.setTransition(t);}getCameraPosition(){return this.ƀas.getCameraPosition()}};oi=ks([q(exports.CameraGateway),Js("design:paramtypes",[De])],oi);var Ys=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ni=class{static{h(this,"CameraViewController");}getLayers(){let t=N.getInstanceOrFail().id;return Tt.getInstanceOrFail(t).getLayers()}appear(t,e){let i=N.getInstanceOrFail().id;return Tt.getInstanceOrFail(i).appear(t,e)}screenPositonToStagePosition(t){let e=N.getInstanceOrFail().id;return Tt.getInstanceOrFail(e).screenPositonToStagePosition(t)}};ni=Ys([q(Pt)],ni);var te=class{static{h(this,"Camera");}get position(){return this.ƀap.getCameraPosition()}constructor(){this.ƀap=E.get(exports.CameraGateway),this.ƀat=E.get(Pt),this.ƀap.createCamera(),this.layers=this.ƀat.getLayers();}setPosition(t){this.ƀap.setPosition(t);}setTransition(t){this.ƀap.setTransition(t);}appear(t,e="alpha"){return this.ƀat.appear(t,e)}screenPositonToStagePosition(t){return this.ƀat.screenPositonToStagePosition(t)}};var x=class o{static{h(this,"Game");}static get instance(){return this.ƀfq}static{this.pause=actionsLib.Reducer.createOr();}static{this.freeze=actionsLib.Reducer.createOr();}static get camera(){return this.ƀao}static get audio(){return this.ƀx}static appear(t,e){let i=e?.audio??"ease",r=e?.camera??"alpha";return actionsLib.ActionLib.all([this.audio.appear(t,i),actionsLib.SingleEvent.instant().asyncTap(()=>i!=="instant"&&g.wait(500)).asyncTap(()=>this.camera.appear(t,r))]).mapToVoid().chainToRoot()}static get time(){return g.ƀkv}static get setupOptions(){return this.ƀjs}constructor(t){if(this.ƀjf=new actionsLib.Variable(helpersLib.Vector.zero),this.screenSize=this.ƀjf.notifier,this.ƀjg=new actionsLib.Variable(helpersLib.Vector.zero),this.screenSizeCenter=this.ƀjg.notifier,this.devMode=false,o.ƀfq)throw new Error("There can be only one Game instance!");this.ƀbj={screenResolution:void 0,maxScreenResolution:void 0,devMode:false,backgroundColor:helpersLib.ColorHelper.black,antialias:false,resolution:1,...t},this.devMode=this.ƀbj.devMode||false;let e=helpersLib.JsonHelper.removeUndefinedProperties({backgroundColor:this.ƀbj.backgroundColor,autoStart:false,antialias:this.ƀbj.antialias,resolution:this.ƀbj.resolution,width:this.ƀbj.screenResolution?.width,height:this.ƀbj.screenResolution?.height});this.ƀih=new j__namespace.Application(e);let i=o.pause.effect(false).attachToRoot();o.freeze.subscribe(r=>{i.update(r),r?T.context.suspend():T.context.resume();}).attachToRoot();}async setup(t){o.ƀjs=t;let e=document.body.appendChild(this.ƀih.view);this.ƀjp(e),await Promise.all([F.loadGameAssets(t.spriteAssetDefinitions),F.loadGameAssets(t.fontAssetDefinitions),T.load(t.soundAssetDefinitions)]),o.ƀfq=this,this.renderer=this.ƀih.renderer,globalThis.ƀa=this.ƀih,this.ƀew(),o.ƀao=new te,o.ƀx=Y.ƀjq(),this.ƀih.start(),this.ƀih.ticker.add(()=>{o.freeze.value||g.triggerUpdateTick(this.ƀih.ticker.deltaMS);});}setResolution(t){if(this.ƀih.renderer.resolution!==t){this.ƀih.renderer.resolution=t;let e=this.ƀel();this.ƀih.renderer.resize(e.x,e.y);}}ƀew(){this.ƀcy(),this.ƀjo(),window.addEventListener("resize",t=>{this.ƀcy(),this.ƀjo();});}ƀcy(){let t=this.ƀel();(t.x!==this.ƀih.screen.width||t.y!==this.ƀih.screen.height)&&this.ƀih.renderer.resize(t.x,t.y);}ƀjo(){let t=new helpersLib.Vector(this.ƀih.screen.width,this.ƀih.screen.height);this.ƀjf.value=t,this.ƀjg.value=t.multiplyNumber(.5).round();}ƀel(){let t=this.ƀbj.screenResolution?.width??window.innerWidth,e=this.ƀbj.screenResolution?.height??window.innerHeight;return this.ƀbj.maxScreenResolution&&(t=Math.min(t,this.ƀbj.maxScreenResolution.width),e=Math.min(e,this.ƀbj.maxScreenResolution.height)),new helpersLib.Vector(t,e)}ƀjp(t){this.ƀbj.maxScreenResolution&&(t.style.maxWidth=`${this.ƀbj.maxScreenResolution?.width}px`,t.style.maxHeight=`${this.ƀbj.maxScreenResolution?.height}px`),t.style.width="100%",t.style.height="100%";}};var Gt=class extends actionsLib.IDAttachable{static{h(this,"AudioContainer");}constructor(t){super(),this.ƀkv=new actionsLib.Variable(0),this.time=this.ƀkv.notifier,this.ƀdl=T.context.createGain(),this.ƀdl.connect(t),this.ƀkg=T.context.currentTime,g.beforeSceneUpdateAction.subscribe(()=>{this.ƀkv.value=T.context.currentTime-this.ƀkg;}).attach(this);}get volume(){return this.ƀdl.gain.value}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀdl.gain.value=t,this}notifyOnTime(t){return this.time.value>t?actionsLib.SingleEvent.createDestroyed():actionsLib.SingleEvent.create(e=>{let i=this.time.subscribe(r=>{r>=t&&e();}).attach(this);return ()=>i.destroy()})}destroy(){this.destroyed||(super.destroy(),this.ƀjy.onended=null,this.ƀjy.stop(),this.ƀjy.disconnect(),this.ƀdl?.disconnect());}ƀin(t){this.ƀjy=T.createSource(t.soundID),this.ƀjy.connect(this.ƀdl),t.onComplete&&(this.ƀjy.onended=t.onComplete),t.loop?(this.ƀjy.loop=true,this.ƀjy.loopStart=t.start,this.ƀjy.loopEnd=t.end??this.ƀjy.buffer.duration,this.ƀjy.start(0,t.start)):this.ƀjy.start(0,t.start,t.end-t.start);}};var io=800,qi=-128,hi=class o extends Gt{static{h(this,"Music");}static createByName(t,e){let i=x.setupOptions.musicDefinitions[t];if(!i)throw new Error(`Music: Could not find music definition with name ${t}.`);return new o(i,e)}constructor(t,e){super(Y.ƀfq.ƀhc),this.ƀjr();let i=x.setupOptions.soundDefinitions[t.soundID],r=helpersLib.NumberHelper.clamp(e?.offset??0,0,t.loop?t.loop.to:i.duration);if(this.ƀkg=T.context.currentTime-r,this.ƀkv.value=r,t.loop){let s=t.loop.from,n=t.loop.to;this.ƀin({soundID:i.id,start:r,end:r<t.loop.from?s:n,loop:false,onComplete:h(()=>{this.ƀjy.disconnect(),this.ƀin({soundID:i.id,start:s,end:n,loop:true});},"onComplete")});}else this.ƀin({soundID:i.id,start:r,end:i.duration,loop:false,onComplete:h(()=>this.destroy(),"onComplete")});if(e?.muffle!==void 0){let s=helpersLib.NumberHelper.clamp(e.muffle,0,1);this.ƀhb.set({value:1-s}),this.ƀgz.set({value:s*qi});}}ƀjr(){this.ƀgy=T.context.createBiquadFilter(),this.ƀgy.type="highshelf",this.ƀgy.frequency.value=io,this.ƀgy.gain.value=0,this.ƀha=T.context.createGain(),this.ƀdl.disconnect(),this.ƀdl.connect(this.ƀha),this.ƀha.connect(this.ƀgy),this.ƀgy.connect(Y.ƀfq.ƀhc);let t={duration:500,animation:w.lineer,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState};this.ƀhb=new C(this.ƀha.gain,"value",t),this.ƀgz=new C(this.ƀgy.gain,"value",t);}muffle(t,e=500){t=helpersLib.NumberHelper.clamp(t,0,1);let i=this.ƀha.gain.value>t;return actionsLib.ActionLib.all([this.ƀhb.animate({value:1-t},{duration:e,animation:i?w.easeOut:w.easeIn}),this.ƀgz.animate({value:t*qi},{duration:e,animation:i?w.easeIn:w.lineer})]).mapToVoid().chainToRoot()}destroy(){this.destroyed||(this.ƀha.disconnect(),this.ƀgy.disconnect()),super.destroy();}};var li=class o extends Gt{static{h(this,"Sound");}static createByName(t){let e=x.setupOptions.soundDefinitions[t];if(!e)throw new Error(`Sound: Could not find sound definition with name ${t}.`);return new o(e)}constructor(t){super(Y.ƀfq.ƀjx),this.ƀin({soundID:t.id,start:0,end:t.duration,loop:false,onComplete:h(()=>this.destroy(),"onComplete")});}};var ci=class extends u{static{h(this,"UpdatableContainer");}},pi=class extends u{static{h(this,"DisplayObjectArray");}constructor(t,e){super(),this.ƀbx=t,this.ƀcr=new Map,this.ƀhr={trackBy:h((i,r)=>r,"trackBy"),positioning:{direction:"vertical",spacing:0},...e};}set(t){let e=new Set(this.ƀcr.keys()),i=0;t.forEach((r,s)=>{let n=this.ƀhr.trackBy(r,s),a;this.ƀcr.has(n)?(a=this.ƀcr.get(n),e.delete(n),a.update(r)):(a=this.ƀbx(r).displayParent(this).attach(this),this.ƀcr.set(n,a)),this.ƀhr.positioning.direction==="horizontal"?(a.x=i,i+=a.size.x+this.ƀhr.positioning.spacing):(a.y=i,i+=a.size.y+this.ƀhr.positioning.spacing);}),e.forEach(r=>{this.ƀcr.get(r).destroy(),this.ƀcr.delete(r);});}};var ee=class o extends u{static{h(this,"MenuUI");}static{this.ƀfs=actionsLib.Reducer.createExistenceChecker();}static{this.isAnyMenuTransitioning=this.ƀfs.notifier;}constructor(t,e){super(),this.ƀhj=new actionsLib.SingleAction,this.onCreate=this.ƀhj.notifier,this.ƀhl=new actionsLib.SingleAction,this.onOpen=this.ƀhl.notifier,this.ƀhg=new actionsLib.SingleAction,this.onClose=this.ƀhg.notifier,this.ƀba=false;let i={closeOnBackgroundClick:true,appearAnimationDuration:150,backgroundDarkeningRatio:.3,...e};this.setAlpha(0),this.ƀp=new C(this,"alpha",{animation:w.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:exports.ReAnimateHandlingType.CompletePrevious,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState});let r=A.createRectangle(new helpersLib.Vector(1,1),helpersLib.ColorHelper.black).toSprite({cache:true}).setAlpha(i.backgroundDarkeningRatio).setInteractive(true).displayParent(this).attach(this);this.ƀgs=J.createByName(t).setPosition(new helpersLib.Vector(0,0)).setInteractive(true).displayParent(this).attach(this),x.instance.screenSize.subscribe(n=>{r.aspectRatio=n.x/n.y,r.scale=Math.max(n.x,n.y),r.setPosition(helpersLib.Vector.zero,{holdFrom:helpersLib.Vector.half}),this.setPosition(n.multiplyNumber(.5));}).attach(this),this.ƀhj.resolve();let s=o.ƀfs.effect().attach(this);this.ƀp.animate({alpha:1}).chain(this).tap(()=>{this.ƀhl.resolve(),s.destroy(),i.closeOnBackgroundClick&&r.on(exports.ContainerEventType.Click).take(1).tap(()=>this.close()).attach(this);}).attachToRoot();}getBoundingMask(){return this.ƀgs.getBoundingMask()}close(){if(!this.ƀba){this.ƀba=true;let t=o.ƀfs.effect().attach(this);this.ƀp.animate({alpha:0}).chain(this).map(()=>{this.ƀhg.resolve(),t.destroy(),this.destroy();}).chainToRoot();}return this.onClose.toSingleEvent()}};var ui=class extends yt{static{h(this,"MenuEntity");}static subscribeIsOpen(){return actionsLib.ActionLib.merge(this.continuesSubscription().map(t=>t.type==="open"),actionsLib.SingleEvent.instant(this.getInstance()!==void 0))}constructor(t){super(),this.ƀhr=t,queueMicrotask(()=>{if(!this.ƀgt)throw new Error("MenuEntity: MenuEntity has to have a MenuView.")});}ƀiw(t){this.ƀgt=t,this.ƀgt.onClose.subscribe(()=>this.destroy()).attach(this);}onCreate(){return this.ƀgt.onCreate.toSingleEvent()}onOpen(){return this.ƀgt.onOpen.toSingleEvent()}onClose(){return this.ƀgt.onClose.toSingleEvent()}close(){return this.ƀgt.close()}};var fi=class extends mt{static{h(this,"MenuView");}constructor(t,e,i){super();let r=helpersLib.JsonHelper.removeUndefinedProperties({appearAnimationDuration:i.appearAnimationDuration,backgroundDarkeningRatio:i.backgroundDarkeningRatio,closeOnBackgroundClick:t.ƀhr.closeOnBackgroundClick}),s=new ee(e,r).displayParent(x.camera.layers.foregroundScreen).attach(this);t.ƀiw(s);let n=new actionsLib.SingleAction;s.onCreate.subscribe(()=>n.resolve(s)).attach(this),this.onCreate=n.notifier,this.onOpen=s.onOpen.notifier,this.onClose=s.onClose.notifier;}};var co=.65,po=.01,Ge=class{static{h(this,"SmoothScroller");}get scrollHeight(){return this.ƀjh}get contentSize(){return this.ƀbl.size.ceil()}constructor(t,e,i,r){this.ƀbl=t,this.ƀv=e,this.ƀhu=i,this.ƀjw=r,this.ƀfp=false,this.ƀjh=e-i*2,this.ƀbl.y=i,this.ƀkn=i;}onWheel(t){this.setTarget(this.ƀkn-t*co);}scrollToTop(){this.setTarget(1/0);}scrollToBottom(){this.setTarget(-1/0);}setTarget(t){this.ƀkn=helpersLib.NumberHelper.clamp(t,this.ƀv-this.ƀhu-this.contentSize.y,this.ƀhu);}jumpToTarget(){this.ƀbl.y=this.ƀkn;}update(t){let e=this.contentSize;if(e.y<=this.ƀjh){switch(this.ƀjw){case "start":this.ƀkn=this.ƀhu;break;case "center":this.ƀkn=(this.ƀv-e.y)*.5;break;case "end":this.ƀkn=this.ƀv-e.y-this.ƀhu;break;default:{this.ƀjw;throw new Error(`Unexpected case! "${this.ƀjw}"`)}}this.ƀfp||(this.ƀbl.y=this.ƀkn);}this.ƀfp=true;let i=this.ƀkn-this.ƀbl.y;this.ƀbl.y=this.ƀbl.y+i*po*t;}};var fo=15,mi=class extends u{static{h(this,"ScrollAreaUI");}get contentAreaSize(){return this.ƀbm}get contentSize(){return this.ƀji.contentSize}constructor(t,e={}){super();let i={padding:fo,smallContentAlign:"start",...e};if(i.padding<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(i.padding>t.y*.5)throw new Error("The padding of the scroll mask cannot be higher than half of the size of the area");let r=new u().displayParent(this).attach(this);new xt(r,t,i.padding).attach(this);let s=new j__namespace.Graphics;s.beginFill(0,1e-9),s.drawRect(0,0,t.x,t.y),s.endFill(),r.ƀii.addChild(s);let n=new u().displayParent(r).attach(this);this.ƀji=new Ge(n,t.y,i.padding,i.smallContentAlign),this.ƀbm=new helpersLib.Vector(t.x,this.ƀji.scrollHeight),s.eventMode="dynamic",s.addEventListener("wheel",a=>{this.ƀji.onWheel(a.deltaY);}),n.setInteractive(true),n.ƀii.addEventListener("wheel",a=>{this.ƀji.onWheel(a.deltaY);}),g.afterSceneUpdateAction.subscribe(a=>this.ƀji.update(a.delta)).attach(this),this.addChildTo=n;}scrollToTop(t){this.ƀji.scrollToTop(),t?.instant&&this.ƀji.jumpToTarget();}scrollToBottom(t){this.ƀji.scrollToBottom(),t?.instant&&this.ƀji.jumpToTarget();}};var mo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},go=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)};exports.KeyboardService=class gi{static{h(this,"KeyboardService");}constructor(){this.ƀfz=new actionsLib.Action,this.keyPressed=this.ƀfz.notifier,this.ƀga=new actionsLib.Action,this.keyReleased=this.ƀga.notifier,this.ƀgg=new Set,this.ƀgf=new Set,window.addEventListener("keydown",t=>{this.ƀgg.add(t.code),this.ƀgf.add(t.code),!t.repeat&&this.ƀfz.trigger({key:t.key,code:t.code});}),window.addEventListener("keyup",t=>{this.ƀgg.delete(t.code),this.ƀga.trigger({key:t.key,code:t.code});}),window.addEventListener("blur",()=>{this.ƀgg.clear();}),g.afterSceneUpdateAction.subscribe(()=>this.ƀgf.clear()).attachToRoot();}isKeyDown(t,e){return (e?.onlyPressedThisFrame?this.ƀgf:this.ƀgg).has(t)}};exports.KeyboardService=mo([d(),go("design:paramtypes",[])],exports.KeyboardService);var yo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},wo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)};exports.MouseService=class re{static{h(this,"MouseService");}constructor(){this.ƀfo=new actionsLib.Variable(false),this.initialMouseMovementHappened=this.ƀfo.notifier,this.ƀkd=new actionsLib.Variable(helpersLib.Vector.zero,{notifyOnChange:true}),this.stagePosition=this.ƀkd.notifier,this.ƀje=new actionsLib.Variable(helpersLib.Vector.zero,{notifyOnChange:true}),this.screenPosition=this.ƀje.notifier,this.ƀgj=new actionsLib.Variable(false),this.mainButtonState=this.ƀgj.notifier,this.ƀjj=new actionsLib.Variable(false),this.secondaryButtonState=this.ƀjj.notifier,this.ƀke(),window.addEventListener("pointerdown",t=>{t.button===0?this.ƀgj.value=true:t.button===2&&(this.ƀjj.value=true);},{capture:true}),window.addEventListener("pointerup",t=>{t.button===0?this.ƀgj.value=false:t.button===2&&(this.ƀjj.value=false);},{capture:true}),window.addEventListener("blur",()=>{this.ƀgj.value=false,this.ƀjj.value=false;},{capture:true});}ƀke(){let t=helpersLib.Vector.zero;window.addEventListener("pointermove",e=>{t=new helpersLib.Vector(e.clientX,e.clientY),this.ƀfo.value=true;},{capture:true}),g.beforeSceneUpdateAction.subscribe(()=>{this.ƀje.value=this.ƀay(t);}).attachToRoot(),g.afterSceneUpdateAction.subscribe(()=>{let e=x.camera.screenPositonToStagePosition(this.ƀje.value);e.isEqual(this.ƀkd.value)?x.instance.renderer.events.onPointerMove(new PointerEvent("pointermove",{clientX:t.x,clientY:t.y,pointerType:"mouse"})):this.ƀkd.value=e;}).attachToRoot();}ƀay(t){let i=x.instance.renderer.view.getBoundingClientRect(),r=i.width,s=i.height;if(r<=0||s<=0)return helpersLib.Vector.zero;let n=x.instance.renderer,a=(t.x-i.left)/r*n.screen.width,l=(t.y-i.top)/s*n.screen.height;return a=helpersLib.NumberHelper.clamp(a,0,n.screen.width),l=helpersLib.NumberHelper.clamp(l,0,n.screen.height),new helpersLib.Vector(a,l)}};exports.MouseService=yo([d(),wo("design:paramtypes",[])],exports.MouseService);var xo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},vo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)};exports.MouseTargetFocusService=class yi{static{h(this,"MouseTargetFocusService");}get focusedInLastFrame(){return this.ƀdi}get lastFocusedPosition(){return this.ƀgc}constructor(t){this.ƀgw=t,this.ƀhn=new actionsLib.Action,this.onTargetFocus=this.ƀhn.notifier,this.ƀkx=0,this.ƀky=false,this.ƀdi=false,this.ƀgc=void 0,g.beforeSceneUpdateAction.subscribe(e=>this.ƀlb(e.delta)).attachToRoot();}ƀlb(t){if(this.ƀgx){let e=this.ƀek(this.ƀgw.stagePosition.value,this.ƀgx);this.ƀhw===void 0?this.ƀhw=e:this.ƀav(e,t);}this.ƀgx=this.ƀgw.stagePosition.value;}ƀav(t,e){this.ƀhw-t>10?(this.ƀkx=Math.max(250,this.ƀkx),this.ƀky=true):this.ƀkx>1e3&&(this.ƀky=true);let i=this.ƀkx>=300&&this.ƀky;this.ƀfx(i,t,e);}ƀfx(t,e,i){(t||e>this.ƀhw)&&(this.ƀhw=e),t?(this.ƀky=false,this.ƀkx=0,this.ƀdi=true,this.ƀgc=this.ƀgw.stagePosition.value,this.ƀhn.trigger(this.ƀgc)):(this.ƀkx+=i,this.ƀdi=false);}ƀek(t,e){let i=helpersLib.Vector.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};exports.MouseTargetFocusService=xo([d(),vo("design:paramtypes",[exports.MouseService])],exports.MouseTargetFocusService);var wi=10.8,xi=10.01;exports.PhysicsShapeType=void 0;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle";})(exports.PhysicsShapeType||(exports.PhysicsShapeType={}));var f=class o{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return helpersLib.Rectangle.fromRect({topLeft:{x:t.lowerBound[0],y:t.lowerBound[1]},bottomRight:{x:t.upperBound[0],y:t.upperBound[1]}})}static arrayToVector(t){return new helpersLib.Vector(t[0],t[1])}static vectorToArray(t){return [t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return (t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>o.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new $__default.default.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};var Ro=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},at=class extends Q(){static{h(this,"PhysicsInternalGateway");}};at=Ro([d()],at);var S=class o extends z{static{h(this,"PhysicsEntity");}static{this.ƀht=new Map;}static{this.ƀia=new Map;}static getFromP2BodyID(t){return o.ƀht.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀht.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀia.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀia.values())}get area(){return this.ƀu}get mass(){return this.ƀgn}get collisions(){return this.ƀbb}constructor(t,e,i){super(),this.ƀhh=new actionsLib.Action,this.onCollision=this.ƀhh.notifier,this.type="dynamic",this.ƀu=0,this.ƀgn=0,this.ƀbb=[],this.physicsWorldID=t,this.ƀic=E.get(at);let r=this.ƀic.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀic.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀib=this.ƀic.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀid=this.ƀic.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀic.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀu=this.p2Body.getArea(),this.ƀgn=this.p2Body.mass,this.p2Body.position=f.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀic.addBody(this.physicsWorldID,this.p2Body,e.addInEmptySpace,e.shapeDefinition.group,e.includeOnPathfinding))throw new Error("PhysicsEntity was not able to be added to the world!");o.ƀht.set(this.p2Body.id,this),o.ƀia.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀic.removeBody(this.physicsWorldID,this.p2Body),o.ƀht.delete(this.p2Body.id),o.ƀia.delete(this.id));}canCollideWith(t){return f.arePhysicsGroupsCollidable(this.ƀib,this.ƀid,t.ƀib,t.ƀid)}ƀjl(t){this.ƀbb=t,t.length>0&&this.ƀhh.trigger(t);}};var se=class extends S{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=f.arrayToVector(this.p2Body.position),this.rotation=new helpersLib.Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:helpersLib.Vector.zero,rotationalSpeed:0}}};var vi=class extends z{static{h(this,"MovableEntity");}constructor(){super(),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),g.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀkk(t,e);}).attach(this);}ƀkk(t,e){this.position.value=this.position.value.add(this.velocity.value.multiplyNumber(e)),this.rotation.value=new helpersLib.Radian(this.rotation.value.value+this.rotationalSpeed.value*e);}};var bi=class extends S{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),this.ƀfh=false,this.ƀfi=false,this.ƀfk=false,this.ƀfj=false,this.ƀhx(),this.ƀgh(),E.get(at).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀkk(i,r)).attach(this);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position.value,rotation:this.rotation.value,velocity:this.velocity.value,rotationalSpeed:this.rotationalSpeed.value}}ƀkk(t,e){this.ƀfh=true,this.ƀfi=true,this.ƀfk=true,this.ƀfj=true,this.ƀhx();}ƀhx(){this.position.value=f.arrayToVector(this.p2Body.position),this.rotation.value=new helpersLib.Radian(this.p2Body.angle),this.velocity.value=f.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀgh(){this.position.subscribe(t=>{this.ƀfh?this.ƀfh=false:this.p2Body.position=[t.x,t.y];}).attach(this),this.rotation.subscribe(t=>{this.ƀfi?this.ƀfi=false:this.p2Body.angle=t.value;}).attach(this),this.velocity.subscribe(t=>{this.ƀfk?this.ƀfk=false:this.p2Body.velocity=[t.x,t.y];}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀfj?this.ƀfj=false:this.p2Body.angularVelocity=t;}).attach(this);}};var ht="border";var Oo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s};exports.PhysicsGateway=class oe extends Q(){static{h(this,"PhysicsGateway");}};exports.PhysicsGateway=Oo([d()],exports.PhysicsGateway);var Do=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Mo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},b=class extends z{static{h(this,"PhysicsWorldEntity");}constructor(t,e,i,r,s,n,a){super(),this.materialDefinitions=new Map,this.physicsBodyGroupToP2Group=new Map,this.physicsBodyGroupToP2Mask=new Map,this.availabilityGridCache=new Map,this.vectorFieldCache=new Map,this.bodiesInContactWith=new Map,this.collisionReports=new Map,this.paused=new actionsLib.Variable(false),this.lastP2Time=new actionsLib.Variable(0),this.onPhysicsStep=new actionsLib.Action,this.mapSize=t,this.mapSizeCenter=this.mapSize.multiplyNumber(.5),this.modifyUpdateCycle=e,this.p2World=i,this.materials=r,this.materialDefinitions=s,this.physicsBodyGroupToP2Group=n,this.physicsBodyGroupToP2Mask=a;}};b=Do([gt(),Mo("design:paramtypes",[helpersLib.Vector,Boolean,$__default.default.World,Map,Map,Map,Map])],b);var _o=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},X=class{static{h(this,"PhysicsBodyGroupService");}createBodyGroupsAndMasks(t,e){let i=new Map,r=new Map;return t.map((s,n)=>{if(n>31)return console.error("Cannot have more than 32 physics body groups"),{};i.set(s,1<<n),r.set(s,0);}),e.map(([s,n])=>{if(!i.has(s))throw new Error(`Physics body group "${s}" not found`);if(!i.has(n))throw new Error(`Physics body group "${n}" not found`);let a=r.get(s),l=r.get(n),c=i.get(s),p=i.get(n);r.set(s,a|p),r.set(n,l|c);}),{physicsBodyGroupToP2Group:i,physicsBodyGroupToP2Mask:r}}getGroupConstant(t,e){return b.getInstanceByIDOrFail(t).physicsBodyGroupToP2Group.get(e)}getMaskConstant(t,e){return b.getInstanceByIDOrFail(t).physicsBodyGroupToP2Mask.get(e)}canCollide(t,e,i){let r=t.physicsBodyGroupToP2Group.get(e),s=t.physicsBodyGroupToP2Mask.get(e),n=t.physicsBodyGroupToP2Group.get(i),a=t.physicsBodyGroupToP2Mask.get(i);return (s&n)!==0&&(a&r)!==0}};X=_o([d()],X);var Vo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Lo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Ve=class{static{h(this,"AvailabilityGridCacheService");}constructor(t){this.ƀhz=t;}getCollidableGrids(t,e){let i=[];return t.availabilityGridCache.forEach((r,s)=>{r.forEach((n,a)=>{this.ƀhz.canCollide(t,a,e)&&i.push({grid:n,cellSize:s});});}),i}get(t,e,i){return t.availabilityGridCache.get(e)?.get(i)}set(t,e,i,r){let s=t.availabilityGridCache.get(e);s||(s=new Map,t.availabilityGridCache.set(e,s)),s.set(i,r);}clear(t){t.availabilityGridCache.clear();}};Ve=Vo([d(),Lo("design:paramtypes",[X])],Ve);var No=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ho=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},lt=class{static{h(this,"AvailabilityGridService");}constructor(t,e){this.ƀhz=t,this.ƀz=e;}onBodyAdded(t,e,i){e.aabbNeedsUpdate=true,e.updateAABB();let r=f.aabbToBoundingBox(e.aabb);this.ƀz.getCollidableGrids(t,i).forEach(s=>{let n=V.areaToGridArea(r,s.cellSize);s.grid.setArea(n,false);});}findClosestAvailableSpace(t,e,i,r=50){return e.aabbNeedsUpdate=true,e.updateAABB(),Yt.findByConvertingGridSpace(this.getAvilabilityGrid(t,r,i),f.aabbToBoundingBox(e.aabb),r)}getAvilabilityGrid(t,e,i){let r=this.ƀz.get(t,e,i);return r||(r=this.ƀca(t,e,i),this.ƀz.set(t,e,i,r)),r}ƀca(t,e,i){let r=new helpersLib.Grid({size:new helpersLib.Vector(Math.floor(t.mapSize.x/e),Math.floor(t.mapSize.y/e)),defaultValue:true});return t.p2World.bodies.forEach(s=>{let n=S.getFromP2BodyIDOrFail(s.id);if(n.includeInPathfinding&&this.ƀhz.canCollide(t,n.physicsBodyGroup,i)){let a=this.ƀeb(s,e);r.setArea(a,false);}}),r}ƀeb(t,e){let i=f.aabbToBoundingBox(t.aabb);return V.areaToGridArea(i,e)}};lt=No([d(),Ho("design:paramtypes",[X,Ve])],lt);var Wo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},$o=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Vt=class{static{h(this,"PathFinderService");}constructor(t){this.ƀhy=t;}findPathAStar(t,e,i,r,s){s||(s={}),s.neighborType===void 0&&(s.neighborType=helpersLib.GridNeighborType.Ortogonal),s.gridCellSize===void 0&&(s.gridCellSize=50);let n=b.getInstanceByIDOrFail(t),a,l;helpersLib.Comparator.isNumber(i)?(l=S.getPhysicsInstanceOrFail(i).p2Body,a=f.arrayToVector(l.position)):a=i;let c=V.positionToGridPosition(e,s.gridCellSize),p=V.positionToGridPosition(a,s.gridCellSize),m=this.ƀhy.getAvilabilityGrid(n,s.gridCellSize,r);if(l){let D=f.aabbToBoundingBox(l.aabb),Et=V.areaToGridArea(D,s.gridCellSize);m.setArea(Et,true);}let y=Xt.findPath(m,c,p,s.neighborType);return y.path=y.path.map(D=>V.gridPositionToPosition(D,s.gridCellSize)),y}findPathDirection(t,e,i,r,s=50){let n=b.getInstanceByIDOrFail(t),a;if(helpersLib.Comparator.isNumber(i)){let y=S.getPhysicsInstanceOrFail(i);a=f.aabbToBoundingBox(y.p2Body.aabb);}else a=new helpersLib.Rectangle(i,i);let l=V.areaToGridArea(a,s),c=JSON.stringify({targetGridArea:l,collidableWithGroup:r}),p=n.vectorFieldCache.get(c);if(!p){let y=this.ƀhy.getAvilabilityGrid(n,s,r);p=new Kt(l,y),n.vectorFieldCache.set(c,p);}let m=V.positionToGridPosition(e,s);return p.getDirectionToTarget(m)}};Vt=Wo([d(),$o("design:paramtypes",[lt])],Vt);var Jo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Yo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Z=class{static{h(this,"TestVisualsService");}constructor(t,e){this.ƀaa=t,this.ƀhv=e;}printPathfindingTestGrid(t,e,i,r,s,n){let a=b.getInstanceByIDOrFail(t);this.ƀaa.getAvilabilityGrid(a,n,r).map((c,p)=>({position:V.gridPositionToPosition(p,n),availability:c})).forEach(c=>{if(c.position.isInsideRectangle(s)){let p=this.ƀhv.findPathDirection(t,c.position,i,r),m;p===void 0?m=A.createRectangleBorders(new helpersLib.Vector(8,8),2,helpersLib.ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).attach(a):m=A.createArrow(25,c.availability?helpersLib.ColorHelper.green:helpersLib.ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).setRotation(p).attach(a),new C(m,"alpha",{duration:1e3,animation:w.easeIn}).animate({alpha:0}).tap(()=>m.destroy()).attach(m);}});}createExplosionDebugVisual(t,e,i,r,s,n=300){let a=new u().displayParent(e).setAlpha(.5).attach(t);A.createCircle(s,helpersLib.ColorHelper.blue).toSprite().displayParent(a).setPosition(r,{round:false}).setAlpha(.5).attach(t),i.forEach(c=>{let p=c.hits.length>0?helpersLib.ColorHelper.red:helpersLib.ColorHelper.white;A.createVector(r,c.line.to,p).toSprite().displayParent(a).attach(t);}),new C(a,"alpha",{duration:n,animation:w.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}createElipticExplosionDebugVisual(t,e,i,r,s,n,a=300){let l=new u().displayParent(e).setAlpha(.5).attach(t);A.createElipse(n,helpersLib.ColorHelper.blue).toSprite().displayParent(l).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attach(t),i.forEach(p=>{let m=p.hits.length>0?helpersLib.ColorHelper.red:helpersLib.ColorHelper.white;A.createVector(p.line.from,p.line.to,m).toSprite().displayParent(l).attach(t);}),new C(l,"alpha",{duration:a,animation:w.easeIn}).animate({alpha:0}).tap(()=>l.destroy()).attach(l);}createPhysicsEntityShapeVisual(t,e,i){let r=i?.overridePosition??f.arrayToVector(t.position),s=i?.overrideRotation??new helpersLib.Radian(t.angle),n=i?.color??helpersLib.ColorHelper.blue,a=new u().displayParent(e).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attachToRoot();t.shapes.forEach(c=>{this.ƀct(c,n).displayParent(a).attachToRoot();}),new C(a,"alpha",{duration:1e3,animation:w.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}ƀct(t,e){switch(t.type){case $__default.default.Shape.PARTICLE:throw new Error("Not implemented");case $__default.default.Shape.LINE:throw new Error("Not implemented");case $__default.default.Shape.PLANE:throw new Error("Not implemented");case $__default.default.Shape.CIRCLE:throw new Error("Not implemented");case $__default.default.Shape.CAPSULE:throw new Error("Not implemented");case $__default.default.Shape.BOX:throw new Error("Not implemented");case $__default.default.Shape.HEIGHTFIELD:throw new Error("Not implemented");case $__default.default.Shape.CONVEX:return this.ƀcs(t,e);default:throw new Error("Not implemented")}}ƀcs(t,e){let i=[t.vertices.map(r=>({x:r[0],y:r[1]}))];return A.createPolygon(i,e).toSprite()}};Z=Jo([d(),Yo("design:paramtypes",[lt,Vt])],Z);var Zo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Qo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Le=class{static{h(this,"HitTestService");}constructor(t){this.ƀkq=t;}hitTest(t,e){let i=t.world,r=S.getFromP2BodyIDOrFail(t.id),s=f.cloneP2Body(t);this.ƀt(s,e);let n=i.broadphase.aabbQuery(i,this.ƀdn(s)).map(l=>S.getFromP2BodyIDOrFail(l.id)).filter(l=>l.includeInPathfinding).filter(l=>r.canCollideWith(l)).map(l=>f.cloneP2Body(l.p2Body)),a=false;if(n.length!==0){let l=new $__default.default.World;l.addBody(s),n.forEach(c=>l.addBody(c)),l.step(1,1,1),a=l.narrowphase.contactEquations.some(c=>c.bodyA===s||c.bodyB===s),l.clear();}if(e?.testLayerID){let l=a?helpersLib.ColorHelper.red:helpersLib.ColorHelper.green;this.ƀkq.createPhysicsEntityShapeVisual(t,e.testLayerID,{overridePosition:e.overridePosition,overrideRotation:e.overrideRotation,color:l});}return a}ƀt(t,e){e?.overridePosition&&(t.position=f.vectorToArray(e.overridePosition)),e?.overrideRotation&&(t.angle=e.overrideRotation.value);}ƀdn(t){return t.aabbNeedsUpdate=true,t.updateAABB(),t.aabb}};Le=Zo([d(),Qo("design:paramtypes",[Z])],Le);var tn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ne=class{static{h(this,"CollisionsService");}registerPhysicsWorld(t){t.p2World.on("beginContact",e=>{e.contactEquations.forEach(i=>{this.ƀiv(t,i);});});}step(t,e,i){S.getPhysicsEntities().forEach(r=>{r.ƀbb=[];}),t.p2World.narrowphase.contactEquations.forEach(r=>{this.ƀiv(t,r);}),t.bodiesInContactWith.forEach((r,s)=>{this.ƀex(r.p2Body),r.entity.ƀjl(t.collisionReports.get(s)||[]);}),t.bodiesInContactWith.clear(),t.collisionReports.clear();}ƀex(t){let e=f.arrayToVector(t.velocity);e.length>wi&&(e=e.normalize(wi),t.velocity=f.vectorToArray(e)),t.angularVelocity=Math.min(Math.max(t.angularVelocity,-xi),xi);}ƀiv(t,e){let i=S.getFromP2BodyID(e.bodyA.id),r=S.getFromP2BodyID(e.bodyB.id);if(i&&r){t.bodiesInContactWith.set(e.bodyA.id,{p2Body:e.bodyA,entity:i}),t.bodiesInContactWith.set(e.bodyB.id,{p2Body:e.bodyB,entity:r});let s=t.collisionReports.get(e.bodyA.id)||[],n=t.collisionReports.get(e.bodyB.id)||[],{collisionDetailsA:a,collisionDetailsB:l}=this.ƀdt(i,r,e);s.push({self:a,target:l}),n.push({self:l,target:a}),t.collisionReports.set(e.bodyA.id,s),t.collisionReports.set(e.bodyB.id,n);}else console.warn("ContactEquationOrganiser: Entity not found for contact equation",e);}ƀdt(t,e,i){let r=t.convertToDTO(),s=e.convertToDTO(),n=f.arrayToVector(i.contactPointA),a=f.arrayToVector(i.contactPointB),{normalA:l,normalB:c}=this.ƀei(i);return {collisionDetailsA:this.ƀds(r,i.bodyA.mass,n,l,t.area),collisionDetailsB:this.ƀds(s,i.bodyB.mass,a,c,e.area)}}ƀds(t,e,i,r,s){let n,a=i.add(t.position);return {body:t,getPositionReletiveToObject:h(()=>(n||(n=i.rotate(t.rotation.multiply(-1).vector)),n),"getPositionReletiveToObject"),getPositionOnWorld:h(()=>(a||(a=i.add(t.position)),a),"getPositionOnWorld"),position:i,mass:e,area:s,normal:r}}ƀei(t){let e=f.arrayToVector(t.normalA),i=e.multiplyNumber(-1);return {normalA:e,normalB:i}}};Ne=tn([d()],Ne);var en=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},rn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},He=class extends se{static{h(this,"BorderEntity");}constructor(t,e){super(t,e);}};He=en([gt(),rn("design:paramtypes",[Number,Object])],He);var sn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},W=1e4,je=class{static{h(this,"BorderService");}createBorders(t,e,i){this.ƀbu(t,new helpersLib.Vector(e.x/2,-W/2),new helpersLib.Vector(e.x+W*2,W),i),this.ƀbu(t,new helpersLib.Vector(e.x/2,e.y+W/2),new helpersLib.Vector(e.x+W*2,W),i),this.ƀbu(t,new helpersLib.Vector(-W/2,e.y/2),new helpersLib.Vector(W,e.y+W*2),i),this.ƀbu(t,new helpersLib.Vector(e.x+W/2,e.y/2),new helpersLib.Vector(W,e.y+W*2),i);}ƀbu(t,e,i,r){return new He(t,{shapeDefinition:{materialName:ht,group:r,shapeType:exports.PhysicsShapeType.Rectangle,shapeData:i},position:e,rotation:helpersLib.Radian.get0,addInEmptySpace:false,includeOnPathfinding:true}).attachByID(t)}};je=sn([d()],je);var nn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},cr=new $__default.default.Material,an={id:ht,density:Number.MAX_SAFE_INTEGER,velocityDrag:1,rotationalDrag:1},Lt=class{static{h(this,"MaterialsService");}createMaterials(t,e,i,r){let s=new Map,n=new Map;if(i.forEach(a=>{s.set(a.id,new $__default.default.Material),n.set(a.id,a);}),s.has(ht))throw new Error(`Material with name ${ht} cannot be defined, pick another name for the material.`);return s.set(ht,cr),n.set(ht,an),this.ƀc(t,e,i,r,s),{materials:s,materialDefinitions:n}}getMaterial(t,e){let i=b.getInstanceByIDOrFail(t);return this.ƀeg(e,i.materials)}getMaterialDefinition(t,e){let i=b.getInstanceByIDOrFail(t);return this.ƀef(e,i.materialDefinitions)}ƀeg(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material with name ${t}.`);return i}ƀef(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material definition with name ${t}.`);return i}ƀc(t,e,i,r,s){this.ƀdy(i.map(n=>n.id),r).forEach(n=>{let a=this.ƀeg(n.materialA,s),l=this.ƀeg(n.materialB,s);t.addContactMaterial(new $__default.default.ContactMaterial(a,l,{friction:n.friction,restitution:n.bounciness,stiffness:n.stiffness,relaxation:n.relaxation}));}),this.ƀd(t,e,i,s);}ƀdy(t,e){let i=new Map;e.forEach(s=>{let n=i.get(s.materialA);n||(n=new Map,i.set(s.materialA,n)),n.set(s.materialB,s);});let r=[];return t.forEach((s,n)=>{for(let a=n;a<t.length;a++){let l=t[a],c=i.get(s)?.get(l);c?r.push(c):r.push({materialA:s,materialB:l,friction:0,bounciness:0,relaxation:4,stiffness:1e6});}}),r}ƀd(t,e,i,r){i.forEach(s=>{let n=this.ƀeg(s.id,r);t.addContactMaterial(new $__default.default.ContactMaterial(n,cr,{friction:e.friction,restitution:e.bounciness,stiffness:e.stiffness,relaxation:e.relaxation}));});}};Lt=nn([d()],Lt);var hn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ln=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Nt=class{static{h(this,"PhysicsWorldService");}constructor(t,e,i,r,s){this.ƀgr=t,this.ƀaj=e,this.ƀaa=i,this.ƀbc=r,this.ƀhz=s;}createPhysicsWorld(t){let e=new $__default.default.World({gravity:[0,0]}),{materials:i,materialDefinitions:r}=this.ƀgr.createMaterials(e,t.borderProperties,t.materialDefinitions,t.materialContactDefinitions),{physicsBodyGroupToP2Group:s,physicsBodyGroupToP2Mask:n}=this.ƀhz.createBodyGroupsAndMasks(t.physicsBodyGroups,t.interactingBodyGroups),a=new b(t.mapSize,t.modifyUpdateCycle,e,i,r,s,n).attachByID(t.attachTo);return a.onDestroy().tap(()=>{e.clear(),t.modifyUpdateCycle&&g.cleanUpdateModifier();}).attachToRoot(),this.ƀaj.createBorders(a.id,t.mapSize,t.borderProperties.borderBodyGroup),this.ƀbc.registerPhysicsWorld(a),t.modifyUpdateCycle?g.registerUpdateModifier((l,c)=>this.ƀkk(a,l,c)):g.beforeSceneUpdateAction.subscribe(({time:l,delta:c})=>{this.ƀkk(a,l,c);}).attach(a),a.id}addBody(t,e,i,r,s){let n=b.getInstanceByIDOrFail(t);if(i){let a=this.ƀaa.findClosestAvailableSpace(n,e,r);return a?(e.position[0]+=a.x,e.position[1]+=a.y,n.p2World.addBody(e),s&&this.ƀaa.onBodyAdded(n,e,r),true):false}else return n.p2World.addBody(e),s&&this.ƀaa.onBodyAdded(n,e,r),true}removeBody(t,e){b.getInstanceByID(t)?.p2World.removeBody(e);}ƀkk(t,e,i){if(!t.paused.value){t.availabilityGridCache.clear(),t.vectorFieldCache.clear(),t.p2World.step(i,i,i),t.modifyUpdateCycle&&(i=t.p2World.time-t.lastP2Time.value);let r=e+i;this.ƀbc.step(t,r,i),t.onPhysicsStep.trigger({time:r,delta:i}),t.lastP2Time.value=t.p2World.time;}return i}setPaused(t,e){b.getInstanceByIDOrFail(e).paused.set(t);}};Nt=hn([d(),ln("design:paramtypes",[Lt,je,lt,Ne,X])],Nt);var pn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},jt=class{static{h(this,"RayCastingService");}castClosest(t,e,i){let r=new $__default.default.RaycastResult,s=new $__default.default.Ray({mode:$__default.default.Ray.CLOSEST,from:f.vectorToArray(e.from),to:f.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i)});if(t.p2World.raycast(r,s),r.hasHit())return this.ƀbp(r,e)}castAllFirstContacts(t,e,i){let r=new Map,s=new $__default.default.Ray({mode:$__default.default.Ray.ALL,from:f.vectorToArray(e.from),to:f.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i),callback:h(n=>{let a=r.get(n.body);!r.has(n.body)||n.fraction<a.fraction?r.set(n.body,this.ƀbp(n,e)):n.fraction===a.fraction&&a.isExternal()&&r.set(n.body,this.ƀbp(n,e));},"callback")});return t.p2World.raycast(new $__default.default.RaycastResult,s),Array.from(r.values())}ƀbp(t,e){let i=t.fraction,r=f.arrayToVector(t.normal),s,n,a;return {body:t.body,hitPosition:h(()=>(s===void 0&&(s=e.from.lerp(e.to,i)),s),"hitPosition"),hitDistance:h(()=>(n===void 0&&(n=e.length*i),n),"hitDistance"),isExternal:h(()=>(a===void 0&&(a=e.fromTo.dotProduct(r)<0),a),"isExternal"),normal:r,fraction:i,line:e}}};jt=pn([d()],jt);var dn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},dt=class{static{h(this,"ImpactService");}applyImpulse(t,e,i,r){let s=i.normalize(r),n=[e.x-t.position[0],e.y-t.position[1]];t.applyImpulse(f.vectorToArray(s),n);}};dt=dn([d()],dt);var un=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ut=class{static{h(this,"RayCastHitConverterService");}toExplosionHits(t,e=true){let i=new Map;return t.forEach(r=>{r.hits.forEach(s=>{let n=i.get(s.body);if(n){let a=s.fraction<n.closestRaycastHit.fraction?s:n.closestRaycastHit;n.rayCastHits.push(s),i.set(s.body,{hitCount:n.hitCount+1,closestRaycastHit:a,rayCastHits:n.rayCastHits,isExternal:e?n.isExternal:n.isExternal&&s.isExternal(),explosionCenter:s.line.from});}else {let a=s.isExternal();i.set(s.body,{hitCount:1,closestRaycastHit:s,rayCastHits:[s],isExternal:a,explosionCenter:s.line.from});}});}),[...i.values()].map(r=>this.ƀbq(r,t.length))}ƀbq(t,e){let i=t.hitCount/e,r=t.rayCastHits;if(t.isExternal)return {body:S.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:true,normal:t.closestRaycastHit.normal,fraction:t.closestRaycastHit.fraction,ratioOfHits:i,raycastResults:r,getHitPosition:t.closestRaycastHit.hitPosition,getHitDistance:t.closestRaycastHit.hitDistance};{let s=f.arrayToVector(t.closestRaycastHit.body.position);return {body:S.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:false,normal:helpersLib.Vector.fromTo(s,t.explosionCenter).normalize(),fraction:0,ratioOfHits:i,raycastResults:r,getHitPosition:h(()=>t.explosionCenter,"getHitPosition"),getHitDistance:h(()=>0,"getHitDistance")}}}};Ut=un([d()],Ut);var mn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},gn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},xn=15,We=class{static{h(this,"ElipticExplosionService");}constructor(t,e,i,r){this.ƀir=t,this.ƀkq=e,this.ƀiq=i,this.ƀfl=r;}createElipticExplosion(t,e,i,r,s,n,a){let l=b.getInstanceByIDOrFail(t),c=this.ƀcf(e,i,r,s,a?.hitOnlyClosest===true,l),p=this.ƀiq.toExplosionHits(c,false);return this.ƀr(p,n),a?.testLayerID&&this.ƀkq.createElipticExplosionDebugVisual(l,a.testLayerID,c,e,i,r,a.debugRayDuration),p.map(m=>{let{p2Body:y,...D}=m;return D})}ƀcf(t,e,i,r,s,n){let a=[],l=e.vector,c=e.add(helpersLib.Radian.get90).vector,p=c.normalize(i.x);a.push(new helpersLib.Line(t,t.add(p))),a.push(new helpersLib.Line(t,t.add(p.multiplyNumber(-1))));let m=l.normalize(i.y);a.push(new helpersLib.Line(t,t.add(m))),a.push(new helpersLib.Line(t,t.add(m.multiplyNumber(-1))));let y=Math.round(i.y/xn),D=i.y/(y*2+1)*2,Et=l.normalize(D),ne=i.x,dr=Math.pow(i.y,2);return helpersLib.ArrayHelper.createIntegerArray(y).forEach(ft=>{let Rt=D*(ft+1),Ti=Et.multiplyNumber(ft+1),ae=c.normalize(this.ƀer(ne,dr,Rt)),he=t.add(Ti);a.push(new helpersLib.Line(he,he.add(ae))),a.push(new helpersLib.Line(he,he.add(ae.multiplyNumber(-1))));let le=t.add(Ti.multiplyNumber(-1));a.push(new helpersLib.Line(le,le.add(ae))),a.push(new helpersLib.Line(le,le.add(ae.multiplyNumber(-1))));}),a.map(ft=>{if(s){let Rt=this.ƀir.castClosest(n,ft,r);return {line:ft,hits:Rt?[Rt]:[]}}else {let Rt=this.ƀir.castAllFirstContacts(n,ft,r);return {line:ft,hits:Rt}}})}ƀer(t,e,i){return Math.sqrt(1-Math.pow(i,2)/e)*t}ƀr(t,e){t.forEach(i=>{i.raycastResults.forEach(r=>{let s,n;r.isExternal()?(s=r.line.fromTo,n=e*2):(s=r.line.fromTo.multiplyNumber(-1),n=e*(1-r.fraction)*8),this.ƀfl.applyImpulse(r.body,r.hitPosition(),s,n);});});}};We=mn([d(),gn("design:paramtypes",[jt,Z,Ut,dt])],We);var vn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},bn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},$e=class{static{h(this,"ExplosionService");}constructor(t,e,i,r){this.ƀir=t,this.ƀkq=e,this.ƀiq=i,this.ƀfl=r;}createExplosion(t,e,i,r,s,n){let a=b.getInstanceByIDOrFail(t),l=this.ƀeo(i),c=this.ƀcf(e,i,r,l,n?.hitOnlyClosest===true,a),p=this.ƀiq.toExplosionHits(c);return this.ƀr(e,i,s,l,p),n?.testLayerID&&this.ƀkq.createExplosionDebugVisual(a,n.testLayerID,c,e,i,n.debugRayDuration),p}ƀcf(t,e,i,r,s,n){let a=new helpersLib.Radian(helpersLib.PI_360/r),l=new helpersLib.Vector(0,-e),c=a.vector;return helpersLib.ArrayHelper.createEmptyArray(r).map(()=>{let p=t.add(l);return l=l.rotate(c),new helpersLib.Line(t,p)}).map(p=>{if(s){let m=this.ƀir.castClosest(n,p,i);return {line:p,hits:m?[m]:[]}}else {let m=this.ƀir.castAllFirstContacts(n,p,i);return {line:p,hits:m}}})}ƀr(t,e,i,r,s){s.forEach(n=>{if(n.isExternal)n.raycastResults.forEach(a=>{let l=i*(1-a.fraction);this.ƀfl.applyImpulse(a.body,a.hitPosition(),a.line.fromTo,l);});else {let a=helpersLib.Vector.fromTo(t,f.arrayToVector(n.p2Body.position)),l=a.length/e,c=i*r*l/2;this.ƀfl.applyImpulse(n.p2Body,n.getHitPosition(),a,c);}});}ƀeo(t){return t>100?Math.floor(t*.3):Math.floor(t*.26+4)}};$e=vn([d(),bn("design:paramtypes",[jt,Z,Ut,dt])],$e);var Rn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Wt=class{static{h(this,"PhysicsQueryService");}getMapSize(t){let e=b.getInstanceByIDOrFail(t);return {dimentions:e.mapSize,center:e.mapSizeCenter}}subscribeToPhysicsStep(t,e){return b.getInstanceByIDOrFail(t).onPhysicsStep.subscribe(e)}};Wt=Rn([d()],Wt);var Cn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},An=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Si=class{static{h(this,"PhysicsController");}constructor(t,e,i,r,s,n,a,l){this.ƀig=t,this.ƀhv=e,this.ƀkq=i,this.ƀde=r,this.ƀcx=s,this.ƀfc=n,this.ƀif=a,this.ƀfl=l;}createPhysicsWorld(t){return this.ƀig.createPhysicsWorld(t)}getMapSize(t){return this.ƀif.getMapSize(t)}setPaused(t,e){this.ƀig.setPaused(t,e);}hitTest(t,e){let i=S.getPhysicsInstanceOrFail(t);return this.ƀfc.hitTest(i.p2Body,e)}findPath(t,e,i,r,s){return this.ƀhv.findPathAStar(t,e,i,r,{neighborType:s})}findPathDirection(t,e,i,r){return this.ƀhv.findPathDirection(t,e,i,r)}applyImpulse(t,e,i,r){let s=S.getPhysicsInstanceOrFail(t);this.ƀfl.applyImpulse(s.p2Body,e,i,r);}createExplosion(t,e,i,r,s,n){return this.ƀde.createExplosion(t,e,i,r,s,n)}createElipticExplosion(t,e,i,r,s,n,a){return this.ƀcx.createElipticExplosion(t,e,i,r,s,n,a)}printPathfindingTestGrid(t,e,i,r,s,n=50){this.ƀkq.printPathfindingTestGrid(t,e,i,r,s,n);}};Si=Cn([q(exports.PhysicsGateway),An("design:paramtypes",[Nt,Vt,Z,$e,We,Le,Wt,dt])],Si);var In=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ze=class{static{h(this,"ShapeCreationService");}createBody(t,e,i,r,s){let n=b.getInstanceByIDOrFail(t);if(!n.physicsBodyGroupToP2Group.has(e.shapeDefinition.group))throw new Error(`Physics body group "${e.shapeDefinition.group}" not found`);switch(e.shapeDefinition.shapeType){case exports.PhysicsShapeType.Point:return this.ƀbw(n,void 0,i,r,e.shapeDefinition.group,s);case exports.PhysicsShapeType.Circle:return this.ƀbw(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case exports.PhysicsShapeType.Polygon:return this.ƀce(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case exports.PhysicsShapeType.Rectangle:return this.ƀcg(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);default:{e.shapeDefinition.shapeType;throw new Error(`Unexpected case! "${e.shapeDefinition.shapeType}"`)}}}ƀbw(t,e,i,r,s,n){let a=new $__default.default.Circle({collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s),radius:e});a.material=i;let l=new $__default.default.Body({type:n==="dynamic"?$__default.default.Body.DYNAMIC:$__default.default.Body.STATIC,mass:r.density,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return l.addShape(a),l}ƀce(t,e,i,r,s,n){let a=t.physicsBodyGroupToP2Group.get(s),l=t.physicsBodyGroupToP2Mask.get(s),c=e.map(y=>new $__default.default.Convex({vertices:y.map(D=>[D.x,D.y]),collisionGroup:a,collisionMask:l})).map(y=>(y.material=i,y)),p=c.reduce((y,D)=>y+D.area,0),m=new $__default.default.Body({type:n==="dynamic"?$__default.default.Body.DYNAMIC:$__default.default.Body.STATIC,mass:p,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.forEach(y=>m.addShape(y)),m.setDensity(r.density),m}ƀcg(t,e,i,r,s,n){let a=new $__default.default.Box({width:e.x,height:e.y,collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s)});a.material=i;let l=e.x*e.y,c=new $__default.default.Body({type:n==="dynamic"?$__default.default.Body.DYNAMIC:$__default.default.Body.STATIC,mass:l,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.addShape(a),c.setDensity(r.density),c}};ze=In([d()],ze);var On=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Dn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Pi=class{static{h(this,"PhysicsInternalController");}constructor(t,e,i,r,s){this.ƀig=t,this.ƀie=e,this.ƀjt=i,this.ƀif=r,this.ƀhz=s;}createBody(t,e,i,r,s){return this.ƀjt.createBody(t,e,i,r,s)}getMaterial(t,e){return this.ƀie.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀie.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀhz.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀhz.getMaskConstant(t,e)}addBody(t,e,i,r,s){return this.ƀig.addBody(t,e,i,r,s)}removeBody(t,e){this.ƀig.removeBody(t,e);}subscribeToPhysicsStep(t,e){return this.ƀif.subscribeToPhysicsStep(t,e)}};Pi=On([q(at),Dn("design:paramtypes",[Nt,Lt,ze,Wt,X])],Pi);exports.AnimationFlicker=Ci;exports.AnimationInterpolationFunctions=H;exports.Animations=w;exports.Animator=C;exports.BORDER_MATERIAL_NAME=ht;exports.BardLegendsHardReset=I;exports.Camera=te;exports.ClosestAvailableSpaceHelper=Yt;exports.Container=u;exports.ControllerDecorator=q;exports.DEFAULT_SHADER_RESOLUTION=G;exports.DeltaTime=ti;exports.DisplayObjectArray=pi;exports.Entity=z;exports.EntityDecorator=gt;exports.FadeInContent=Gi;exports.FadeInStateAnimation=ye;exports.Game=x;exports.Gateway=Q;exports.Graphics=A;exports.ImmovablePhysicsEntity=se;exports.MenuEntity=ui;exports.MenuUI=ee;exports.MenuView=fi;exports.MovableEntity=vi;exports.MovablePhysicsEntity=bi;exports.Music=hi;exports.PathFinder=Xt;exports.PhysicsEntity=S;exports.Placeholder=ii;exports.ROTATIONAL_SPEED_LIMIT=xi;exports.RichText=ri;exports.SPEED_LIMIT=wi;exports.Scene=ce;exports.SceneDecorator=Er;exports.ScrollAreaUI=mi;exports.ScrollMaskUI=xt;exports.Service=E;exports.ServiceDecorator=d;exports.SingletonEntity=yt;exports.SlideInContent=ji;exports.SlideInContentByIndex=qe;exports.SlideStateAnimation=Pe;exports.Sound=li;exports.Sprite=J;exports.StateAnimation=ge;exports.Text=Qt;exports.UpdatableContainer=ci;exports.UpdateCycle=g;exports.VectorFieldPathFinder=Kt;exports.VectorSet=bt;exports.View=mt;exports.ViewDecorator=Je;