bard-legends-framework 1.10.0 → 1.11.1
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.d.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +24 -46
- package/dist/index.mjs +24 -46
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,67 +1,45 @@
|
|
|
1
|
-
import {Action,ActionLib,SingleEvent,IDAttachable,SingleAction,Sequence,Variable,Attachable,Reducer}from'actions-lib';import'reflect-metadata';import {Random,MapToWeakRefs,Comparator,Vector,Radian,Rectangle,NumberHelper,ArrayHelper,ColorHelper,PI_360,Queue,BinaryHeap,Grid,JsonHelper,Line}from'helpers-lib';import*as N from'pixi.js';import {RichTextSeparator}from'script-engine-lib';import W from'p2';var gr=Object.defineProperty;var h=(o,t)=>gr(o,"name",{value:t,configurable:true});function Q(){return class{static{h(this,"GatewayBase");}}}h(Q,"Gateway");function Di(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(Di,"bindControllerToGateway");var E=class{static{h(this,"BardLegendsHardReset");}static{this.ƀfh=new Action;}static{this.onHardReset=this.ƀfh.notifier;}static hardReset(){ActionLib.hardReset(),this.ƀfh.trigger();}};function u(){return function(o){S.ƀhd.set(o,{paramtypes:S.ƀep(o)});}}h(u,"ServiceDecorator");var S=class o{static{h(this,"Service");}static{this.ƀhd=new WeakMap;}static{this.ƀjv=new Map;}static get(t){let e=this.ƀjv.get(t);if(!e){let i=o.ƀhd.get(t);if(!i)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let r=this.ƀjk(i.paramtypes);e=new t(...r),this.ƀjv.set(t,e);}return e}static ƀep(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 ƀjk(t){return t.map(i=>{if(i&&o.ƀhd.has(i))return this.get(i);throw new Error(`Injected parameter has to be decorated with @ServiceDecorator(), class: "${i.name}"`)})}};E.onHardReset.subscribe(()=>{S.ƀhd=new WeakMap,S.ƀjv=new Map;}).attachToRoot();function tt(o){return function(t){let e=S.ƀep(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=S.ƀjk(e);i.some(s=>s===void 0)&&console.error(i,e,t.name);let r=new t(...i);Di(o,r);}}}h(tt,"ControllerDecorator");var m=class o{static{h(this,"UpdateCycle");}static{this.ƀad=new Action;}static{this.beforeSceneUpdateAction=this.ƀad.notifier;}static{this.ƀjo=new Action;}static{this.sceneUpdateAction=this.ƀjo.notifier;}static{this.ƀf=new Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀlm=0;}static{this.ƀlu=void 0;}static wait(t){let e=this.ƀlm+t;return SingleEvent.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀlu)this.ƀlu=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀlu=void 0;}static triggerUpdateTick(t){this.ƀlu&&(t=this.ƀlu(this.ƀlm,t)),this.ƀlm+=t,this.ƀgj=t,t>0&&(o.ƀad.trigger({time:this.ƀlm,delta:t}),o.ƀjo.trigger({time:this.ƀlm,delta:t}),o.ƀf.trigger({time:this.ƀlm,delta:t}));}static get lastDelta(){return this.ƀgj}static{this.ƀgj=0;}};E.onHardReset.subscribe(()=>{m.ƀad.clear(),m.ƀjo.clear(),m.ƀf.clear(),m.ƀlu=void 0,m.ƀlm=0;}).attachToRoot();var O=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())}};E.onHardReset.subscribe(()=>{O.ƀax.clear();}).attachToRoot();function Qe(o){return function(t){U.ƀhd.set(t,{paramtypes:S.ƀep(t),viewInstances:new Map,entity:o.entity}),st.registerView(t,o.entity);}}h(Qe,"ViewDecorator");var U=class o extends IDAttachable{static{h(this,"View");}static{this.ƀhd=new WeakMap;}static getInstance(t){let e=o.ƀhd.get(this);if(!(!e||!e.entity.validateID(t)))return e.viewInstances.get(t)}static getInstanceOrFail(t){let e=o.ƀhd.get(this);if(!e||!e.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${e?.entity}"`);let i=e.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.update=()=>{},this.attachToRoot(),this.ƀde=st.entityID,this.ƀew().set(this.ƀde,this);}destroy(){this.destroyed||(super.destroy(),this.ƀew().delete(this.ƀde));}ƀew(){let t=o.ƀhd.get(this.constructor);if(!t)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${this.constructor.name}"`);return t.viewInstances}};E.onHardReset.subscribe(()=>{U.ƀhd=new WeakMap;}).attachToRoot();var st=class o{static{h(this,"EntityViewsHelper");}static{this.ƀme=new Map;}static registerView(t,e){o.ƀme.has(e)||o.ƀme.set(e,[]);let i=o.ƀme.get(e);i&&i.push(t),O.getEntities(e).forEach(s=>{this.ƀck(s,t);});}static ƀck(t,e){try{let i=U.ƀhd.get(e);if(!i)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${e.name}"`);let r=S.ƀjk(i.paramtypes.slice(1));o.entityID=t.id;let s=new e(t,...r);t.destroyed?s.destroy():t.ƀmd.ƀmf.push(s);}catch(i){console.error(i);}}constructor(t){this.ƀdd=t,this.ƀmf=[];}createViews(){if(!this.ƀdd.destroyed){let t=o.ƀme.get(this.ƀdd.constructor);t&&t.forEach(e=>{o.ƀck(this.ƀdd,e);});}}updateViews(t,e){for(let i=0;i<this.ƀmf.length;i++){let r=this.ƀmf[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀmf.forEach(t=>{t.destroy();});}};E.onHardReset.subscribe(()=>{st.ƀme=new Map;}).attachToRoot();function yt(){return function(o){O.registerEntityClass(o);}}h(yt,"EntityDecorator");var $=class extends IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return O.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=O.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return O.getEntities(this)}constructor(){super(),this.ƀmd=new st(this),O.registerEntity(this),m.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.ƀls(t.time,t.delta),this.ƀmd.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀmd.destroyViews(),O.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀmd.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀmd.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀmd.createViews(),this}ƀls(t,e){}};var gt=class o extends ${static{h(this,"SingletonEntity");}static{this.ƀcl=new WeakMap;}static ƀeb(t){let e=o.ƀcl.get(t);return e||(e=new SingleAction,o.ƀcl.set(t,e)),e}static ƀlr(t){o.ƀcl.delete(t);}static getInstanceAsync(){let t=O.getSingleton(this);return t&&!t.destroyed?SingleEvent.instant(t):o.ƀeb(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 Sequence.create((e,i)=>t(e,i.attachable))}static getInstance(){return O.getSingleton(this)}static getInstanceOrFail(){return O.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.ƀlr(this.constructor)).attachToRoot(),o.ƀeb(this.constructor).resolve(this);}};function Cr(){return function(o){return It.ƀhd.set(o,{paramtypes:S.ƀep(o)}),o}}h(Cr,"SceneDecorator");var It=class o extends IDAttachable{static{h(this,"Scene");}static{this.ƀhd=new WeakMap;}static{this.ƀgc=new Variable(false);}static{this.isTransitioning=this.ƀgc.notifier;}static{this.ƀb=new 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("cancel"):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.ƀgc.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=o.ƀhd.get(this);if(!e)throw new Error(`Scene: scene class is not decorated by @SceneDecorator(), class: "${this.name}"`);let i=t[0];o.ƀgc.value=true;let r=S.ƀjk(e.paramtypes),s=new this(...r).attachToRoot();return o.ƀb.set(s),s.init(i).map(()=>(o.ƀgc.value=false,s)).chainToRoot()}constructor(){super(),this.ƀhn=new SingleAction,this.onClose=this.ƀhn.notifier,m.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.ƀgc.value)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");o.ƀgc.value=true;let e=t[0];return this.ƀj(e).map(()=>(this.ƀhn.resolve(e),e)).chainToRoot()}ƀj(t){return this.prepareToClose(t).tap(()=>{super.destroy(),o.ƀb.set(void 0),o.ƀgc.value=false;}).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};E.onHardReset.subscribe(()=>{It.ƀhd=new WeakMap,It.ƀb.set(void 0);}).attachToRoot();var V=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}},Or=class{static{h(this,"AnimationLineer");}start(){}multiplierFunction(t){return V.lineer(t)}},Dr=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return V.easeIn(t)}},Mr=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return V.easeOut(t)}},Br=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return V.easeInOut(t)}},Gr=class{static{h(this,"AnimationEaseInCubic");}start(){}multiplierFunction(t){return V.easeInCubic(t)}},_r=class{static{h(this,"AnimationEaseOutCubic");}start(){}multiplierFunction(t){return V.easeOutCubic(t)}},Fr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return V.easeInOutCubic(t)}},Vr=class{static{h(this,"AnimationBlink");}start(){}multiplierFunction(t){return V.blink(t)}},Bi=class{static{h(this,"AnimationFlicker");}start(){this.ƀln=new Array(10).fill(0),Random.integerBetween(0,9),this.ƀln[Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(Random.integerBetween(0,9),this.ƀln[Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(Random.integerBetween(0,9),this.ƀln[Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀln[e]}},x=class{static{h(this,"Animations");}static{this.lineer=new Or;}static{this.easeIn=new Dr;}static{this.easeOut=new Mr;}static{this.easeInOut=new Br;}static{this.easeInCubic=new Gr;}static{this.easeOutCubic=new _r;}static{this.easeInOutCubic=new Fr;}static{this.blink=new Vr;}};var C;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious";})(C||(C={}));var T;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop";})(T||(T={}));var I=class o{static{h(this,"Animator");}static{this.ƀl=new WeakMap;}static ƀdu(t){let e=o.ƀl.get(t);return e||(e=new MapToWeakRefs,o.ƀl.set(t,e)),e}get animating(){return this.ƀhw!==void 0}get target(){return this.ƀle}get value(){return this.ƀlx||(this.ƀlx=new Variable(this.ƀle)),this.ƀlx.notifier}get paused(){return this.ƀif!==void 0}set paused(t){this.ƀif=t?true:void 0;}constructor(t,e,i){this.ƀgd=false,this.ƀki=false,this.ƀle=t,this.ƀhy={duration:200,animation:x.lineer,reAnimateHandling:C.ThrowError,completionHandling:T.StayInCurrentState,...i},this.ƀm=Comparator.isArray(e)?e:[e],this.ƀgq(t,this.ƀm);}animate(t,e){let i={...this.ƀhy,...e},r=this.ƀhw;if(this.ƀhw)switch(i.reAnimateHandling){case C.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case C.IgnoreNewAnimation:return SingleEvent.instant().notIdle();case C.CompletePrevious:this.ƀjx(i.completionHandling,this.ƀhw.ƀja,true);break;default:{throw new Error}}return SingleEvent.create(n=>{this.ƀgd&&(this.ƀki=true);let a={};for(let c of this.ƀm)a[c]={ƀky:this.ƀle[c],ƀlg:t[c]};let l={ƀcy:i.duration,ƀcz:0,ƀja:a,ƀbj:i.completionHandling,ƀn:i.animation,ƀbi:n};if(l.ƀbj!==T.Loop&&this.ƀfz(l)){this.ƀhw=void 0,n(),r?.ƀbi(),this.ƀay();return}return l.ƀn.start(),this.ƀhw=l,this.ƀdc(),r?.ƀbi(),()=>{this.ƀhw===l&&(this.ƀle instanceof Attachable&&this.ƀle.destroyed||this.ƀjx(l.ƀbj,l.ƀja,true),this.ƀhw=void 0,this.ƀay());}}).notIdle()}set(t){this.ƀmk(e=>t[e]),this.ƀhw?.ƀbi();}completeAnimation(t){if(this.ƀhw){t=t??this.ƀhw.ƀbj,this.ƀjx(t,this.ƀhw.ƀja,true);let e=this.ƀhw.ƀbi;this.ƀhw=void 0,e();}}ƀdc(){this.ƀlt||(this.ƀlt=m.beforeSceneUpdateAction.subscribe(t=>{if(!this.ƀif){this.ƀgd=true;try{let e=this.ƀhw;if(!e)return;if(e.ƀcz+=t.delta,e.ƀcz>=e.ƀcy)if(e.ƀbj===T.Loop)e.ƀcz%=e.ƀcy,e.ƀn.start();else {this.ƀjx(e.ƀbj,e.ƀja,!1),this.ƀhw=void 0,e.ƀbi(),this.ƀay();return}let i=e.ƀn.multiplierFunction(e.ƀcz/e.ƀcy);this.ƀmk(r=>{let s=e.ƀja[r];return (s.ƀlg-s.ƀky)*i+s.ƀky});}finally{this.ƀgd=false,this.ƀki&&(this.ƀki=false,this.ƀcr(),this.ƀdc());}}}).attachToRoot());}ƀfz(t){return this.ƀm.every(e=>this.ƀle[e]===t.ƀja[e].ƀlg)}ƀjx(t,e,i){switch(t){case T.ReturnToOriginal:case T.Loop:this.ƀmk(r=>e[r].ƀky);break;case T.JumpToEnd:this.ƀmk(r=>e[r].ƀlg);break;case T.StayInCurrentState:i||this.ƀmk(r=>e[r].ƀlg);break;default:{throw new Error}}}ƀmk(t){let e=false;for(let i of this.ƀm){let r=t(i);this.ƀle[i]!==r&&(e=true,this.ƀle[i]=r);}e&&this.ƀlx?.set(this.ƀle);}ƀay(){this.ƀhw||this.ƀcr();}ƀcr(){this.ƀlt?.destroy(),this.ƀlt=void 0;}ƀgq(t,e){let i=o.ƀdu(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 Ct;(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";})(Ct||(Ct={}));var ti;(function(o){o.Default="default",o.Pointer="pointer";})(ti||(ti={}));var ye=class extends IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀhe=false,this.ƀdm=false,this.ƀjm=1,this.ƀw=1,this.ƀis=new N.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new Vector(this.ƀis.width,this.ƀis.height)}setSize(t){return this.ƀis.width=t.x,this.ƀis.height=t.y,this}setPosition(t,e){if(e?.holdFrom){let i=this.ƀis.getLocalBounds(),r=new Vector(this.ƀis.scale.x,this.ƀis.scale.y),s=new Vector(i.x,i.y).multiply(r),n=new 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 Vector(this.ƀis.x,this.ƀis.y)}set position(t){this.ƀis.position=t;}get x(){return this.ƀis.x}set x(t){this.ƀis.x=t;}get y(){return this.ƀis.y}set y(t){this.ƀis.y=t;}on(t){return Sequence.create(e=>{let i=h(r=>{if(t===Ct.Wheel){let n=r.deltaY;e({deltaY:n});}else e(void 0);},"handle");return this.ƀis.on(t,i),()=>this.ƀis.off(t,i)}).notIdle()}setRotation(t){return this.rotation=t,this}get rotation(){return new Radian(this.ƀis.rotation)}set rotation(t){this.ƀis.rotation=t.value;}get rotationValue(){return this.rotation.value}set rotationValue(t){this.rotation=new Radian(t);}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.ƀis.zIndex}set zIndex(t){this.ƀis.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new Radian(this.ƀis.skew.x)}set skewX(t){this.ƀis.skew.x=t.value;}setSkewY(t){return this.skewY=t,this}get skewY(){return new Radian(this.ƀis.skew.y)}set skewY(t){this.ƀis.skew.y=t.value;}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.ƀis.sortableChildren}set sortableChildren(t){this.ƀis.sortableChildren=t;}setAlpha(t){return this.ƀis.alpha=t,this}get alpha(){return this.ƀis.alpha}set alpha(t){this.ƀis.alpha=t;}setInteractive(t){return this.interactive=t,this}get interactive(){return this.ƀis.interactive}set interactive(t){t?this.ƀis.eventMode="dynamic":this.ƀis.eventMode="none";}setCursor(t){return this.cursor=t,this}get cursor(){return this.ƀis.cursor}set cursor(t){this.ƀis.cursor=t;}getMask(){throw new Error("ContainerAttributes: mask is not available!")}setMask(t){return t?(this.ƀis.addChild(t.ƀis),this.ƀis.mask=t.getMask(),this.ƀgt=t):(this.ƀgt&&this.ƀis.removeChild(this.ƀgt.ƀis),this.ƀis.mask=null),this}hitTest(t){if(this.ƀis.parent)if(this.ƀis.hitArea){let e=this.ƀis.toLocal(t);return this.ƀis.hitArea.contains(e.x,e.y)}else return this.ƀis.getBounds().contains(t.x,t.y);else return false}get boundingBox(){let t=this.ƀis.getLocalBounds();return new Rectangle(new Vector(t.x,t.y),new Vector(t.x+t.width,t.y+t.height))}ignoreBounds(t=true){return t?(this.ƀhz||(this.ƀhz=this.ƀis.calculateBounds),this.ƀis.calculateBounds=()=>this.ƀis._bounds.clear()):this.ƀhz&&(this.ƀis.calculateBounds=this.ƀhz),this}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀhe}set mirror(t){this.ƀhe=t,this.ƀlv();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdm}set flip(t){this.ƀdm=t,this.ƀlv();}setScale(t){return this.scale=t,this}get scale(){return this.ƀjm}set scale(t){this.ƀjm=t,this.ƀlv();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀw}set aspectRatio(t){this.ƀw=t,this.ƀlv();}ƀlv(){this.ƀis.scale.set(this.ƀjm,this.ƀjm),this.ƀw<1?this.ƀis.scale.x*=this.ƀw:this.ƀw>1&&(this.ƀis.scale.y/=this.ƀw),this.ƀhe&&(this.ƀis.scale.x*=-1),this.ƀdm&&(this.ƀis.scale.y*=-1);}};var D=2,Ot;(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";})(Ot||(Ot={}));var ge=class{static{h(this,"GaussianValuesHelper");}static ƀds(t,e){let i=e*e,r=1/(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=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.ƀbu(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=ArrayHelper.createIntegerArray(Math.ceil(t*.75)).map(r=>this.ƀds(r,t*.4)),i=e.reduce((r,s)=>r+s,0);return i=i*2-e[0],e=e.map(r=>r/i),this.ƀbu(e)}}static ƀbu(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 Fi=class ei extends N.Filter{static{h(this,"BlurFilterPass");}static ƀev(){return `
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import {Action,ActionLib,SingleEvent,IDAttachable,SingleAction,Sequence,Variable,Attachable,Reducer}from'actions-lib';import'reflect-metadata';import {Random,MapToWeakRefs,Comparator,Vector,Radian,Rectangle,NumberHelper,ArrayHelper,ColorHelper,PI_360,Queue,BinaryHeap,Grid,JsonHelper,Line}from'helpers-lib';import*as F from'pixi.js';import'pixi.js/advanced-blend-modes';import {RichTextSeparator}from'script-engine-lib';import W from'p2';var yr=Object.defineProperty;var h=(n,t)=>yr(n,"name",{value:t,configurable:true});function q(){return class{static{h(this,"GatewayBase");}}}h(q,"Gateway");function Oi(n,t){let e=n.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 "${n.name}": method "${r}" is already registered by another controller.`);e[r]=s.bind(t);}}}h(Oi,"bindControllerToGateway");var E=class{static{h(this,"BardLegendsHardReset");}static{this.ƀff=new Action;}static{this.onHardReset=this.ƀff.notifier;}static hardReset(){ActionLib.hardReset(),this.ƀff.trigger();}};function u(){return function(n){P.ƀha.set(n,{paramtypes:P.ƀeo(n)});}}h(u,"ServiceDecorator");var P=class n{static{h(this,"Service");}static{this.ƀha=new WeakMap;}static{this.ƀjs=new Map;}static get(t){let e=this.ƀjs.get(t);if(!e){let i=n.ƀha.get(t);if(!i)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let r=this.ƀjh(i.paramtypes);e=new t(...r),this.ƀjs.set(t,e);}return e}static ƀeo(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 ƀjh(t){return t.map(i=>{if(i&&n.ƀha.has(i))return this.get(i);throw new Error(`Injected parameter has to be decorated with @ServiceDecorator(), class: "${i.name}"`)})}};E.onHardReset.subscribe(()=>{P.ƀha=new WeakMap,P.ƀjs=new Map;}).attachToRoot();function tt(n){return function(t){let e=P.ƀeo(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=P.ƀjh(e);i.some(s=>s===void 0)&&console.error(i,e,t.name);let r=new t(...i);Oi(n,r);}}}h(tt,"ControllerDecorator");var m=class n{static{h(this,"UpdateCycle");}static{this.ƀad=new Action;}static{this.beforeSceneUpdateAction=this.ƀad.notifier;}static{this.ƀjl=new Action;}static{this.sceneUpdateAction=this.ƀjl.notifier;}static{this.ƀf=new Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀlj=0;}static{this.ƀlr=void 0;}static wait(t){let e=this.ƀlj+t;return SingleEvent.create(i=>{let r=n.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀlr)this.ƀlr=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀlr=void 0;}static triggerUpdateTick(t){this.ƀlr&&(t=this.ƀlr(this.ƀlj,t)),this.ƀlj+=t,this.ƀgg=t,t>0&&(n.ƀad.trigger({time:this.ƀlj,delta:t}),n.ƀjl.trigger({time:this.ƀlj,delta:t}),n.ƀf.trigger({time:this.ƀlj,delta:t}));}static get lastDelta(){return this.ƀgg}static{this.ƀgg=0;}};E.onHardReset.subscribe(()=>{m.ƀad.clear(),m.ƀjl.clear(),m.ƀf.clear(),m.ƀlr=void 0,m.ƀlj=0;}).attachToRoot();var O=class n{static{h(this,"EntityStoreHelper");}static{this.ƀay=new Map;}static registerEntityClass(t){this.ƀay.set(t.id,new Map);}static registerEntity(t){let e=this.ƀay.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.ƀay.get(i)?.delete(e);}static getEntity(t,e){return this.ƀay.get(t.id)?.get(e)}static getSingleton(t){let e=n.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.ƀay.get(t.id);return Array.from(e.values())}};E.onHardReset.subscribe(()=>{O.ƀay.clear();}).attachToRoot();function qe(n){return function(t){U.ƀha.set(t,{paramtypes:P.ƀeo(t),viewInstances:new Map,entity:n.entity}),st.registerView(t,n.entity);}}h(qe,"ViewDecorator");var U=class n extends IDAttachable{static{h(this,"View");}static{this.ƀha=new WeakMap;}static getInstance(t){let e=n.ƀha.get(this);if(!(!e||!e.entity.validateID(t)))return e.viewInstances.get(t)}static getInstanceOrFail(t){let e=n.ƀha.get(this);if(!e||!e.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${e?.entity}"`);let i=e.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.update=()=>{},this.attachToRoot(),this.ƀde=st.entityID,this.ƀeu().set(this.ƀde,this);}destroy(){this.destroyed||(super.destroy(),this.ƀeu().delete(this.ƀde));}ƀeu(){let t=n.ƀha.get(this.constructor);if(!t)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${this.constructor.name}"`);return t.viewInstances}};E.onHardReset.subscribe(()=>{U.ƀha=new WeakMap;}).attachToRoot();var st=class n{static{h(this,"EntityViewsHelper");}static{this.ƀmb=new Map;}static registerView(t,e){n.ƀmb.has(e)||n.ƀmb.set(e,[]);let i=n.ƀmb.get(e);i&&i.push(t),O.getEntities(e).forEach(s=>{this.ƀck(s,t);});}static ƀck(t,e){try{let i=U.ƀha.get(e);if(!i)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${e.name}"`);let r=P.ƀjh(i.paramtypes.slice(1));n.entityID=t.id;let s=new e(t,...r);t.destroyed?s.destroy():t.ƀma.ƀmc.push(s);}catch(i){console.error(i);}}constructor(t){this.ƀdd=t,this.ƀmc=[];}createViews(){if(!this.ƀdd.destroyed){let t=n.ƀmb.get(this.ƀdd.constructor);t&&t.forEach(e=>{n.ƀck(this.ƀdd,e);});}}updateViews(t,e){for(let i=0;i<this.ƀmc.length;i++){let r=this.ƀmc[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀmc.forEach(t=>{t.destroy();});}};E.onHardReset.subscribe(()=>{st.ƀmb=new Map;}).attachToRoot();function gt(){return function(n){O.registerEntityClass(n);}}h(gt,"EntityDecorator");var $=class extends IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return O.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=O.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return O.getEntities(this)}constructor(){super(),this.ƀma=new st(this),O.registerEntity(this),m.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.ƀlp(t.time,t.delta),this.ƀma.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀma.destroyViews(),O.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀma.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀma.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀma.createViews(),this}ƀlp(t,e){}};var wt=class n extends ${static{h(this,"SingletonEntity");}static{this.ƀcl=new WeakMap;}static ƀea(t){let e=n.ƀcl.get(t);return e||(e=new SingleAction,n.ƀcl.set(t,e)),e}static ƀlo(t){n.ƀcl.delete(t);}static getInstanceAsync(){let t=O.getSingleton(this);return t&&!t.destroyed?SingleEvent.instant(t):n.ƀea(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 Sequence.create((e,i)=>t(e,i.attachable))}static getInstance(){return O.getSingleton(this)}static getInstanceOrFail(){return O.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(()=>n.ƀlo(this.constructor)).attachToRoot(),n.ƀea(this.constructor).resolve(this);}};function Cr(){return function(n){return Ot.ƀha.set(n,{paramtypes:P.ƀeo(n)}),n}}h(Cr,"SceneDecorator");var Ot=class n extends IDAttachable{static{h(this,"Scene");}static{this.ƀha=new WeakMap;}static{this.ƀfz=new Variable(false);}static{this.isTransitioning=this.ƀfz.notifier;}static{this.ƀb=new Variable(void 0);}static{this.activeScene=this.ƀb.notifier;}static getActiveSceneOrFail(){if(!n.ƀb.value)throw new Error("Scene: getActiveSceneOrFail is called when there is no active scene!");return n.ƀb.value}static cancelActiveScene(){return n.ƀb.value?n.ƀb.value.ƀj("cancel"):SingleEvent.instant()}static isActive(){return n.ƀb.value instanceof this}static getInstance(){return n.ƀb.value instanceof this?n.ƀb.value:void 0}static getInstanceOrFail(){if(!n.ƀb.value)throw new Error("Scene: getInstance is called when there is no active scene!");if(!(n.ƀb.value instanceof this))throw new Error(`Scene: getInstance is called while "${this.name}" was not the active scene. Current scene is: "${n.ƀb.value}"!`);return n.ƀb.value}static open(...t){if(n.ƀfz.value)throw new Error("Scene: you cannot open a scene while a scene is transitioning!");if(n.ƀb.value)throw new Error("Scene: you cannot open a scene while there is already another active scene!");let e=n.ƀha.get(this);if(!e)throw new Error(`Scene: scene class is not decorated by @SceneDecorator(), class: "${this.name}"`);let i=t[0];n.ƀfz.value=true;let r=P.ƀjh(e.paramtypes),s=new this(...r).attachToRoot();return n.ƀb.set(s),s.init(i).map(()=>(n.ƀfz.value=false,s)).chainToRoot()}constructor(){super(),this.ƀhl=new SingleAction,this.onClose=this.ƀhl.notifier,m.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(n.ƀb.value!==this)throw new Error("Internal Error: Scene instance is accessed while it is not the active scene!");if(n.ƀfz.value)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");n.ƀfz.value=true;let e=t[0];return this.ƀj(e).map(()=>(this.ƀhl.resolve(e),e)).chainToRoot()}ƀj(t){return this.prepareToClose(t).tap(()=>{super.destroy(),n.ƀb.set(void 0),n.ƀfz.value=false;}).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};E.onHardReset.subscribe(()=>{Ot.ƀha=new WeakMap,Ot.ƀb.set(void 0);}).attachToRoot();var V=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}},Ar=class{static{h(this,"AnimationLineer");}start(){}multiplierFunction(t){return V.lineer(t)}},Or=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return V.easeIn(t)}},Mr=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return V.easeOut(t)}},Dr=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return V.easeInOut(t)}},Br=class{static{h(this,"AnimationEaseInCubic");}start(){}multiplierFunction(t){return V.easeInCubic(t)}},Gr=class{static{h(this,"AnimationEaseOutCubic");}start(){}multiplierFunction(t){return V.easeOutCubic(t)}},_r=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return V.easeInOutCubic(t)}},Vr=class{static{h(this,"AnimationBlink");}start(){}multiplierFunction(t){return V.blink(t)}},Di=class{static{h(this,"AnimationFlicker");}start(){this.ƀlk=new Array(10).fill(0),Random.integerBetween(0,9),this.ƀlk[Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(Random.integerBetween(0,9),this.ƀlk[Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(Random.integerBetween(0,9),this.ƀlk[Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀlk[e]}},x=class{static{h(this,"Animations");}static{this.lineer=new Ar;}static{this.easeIn=new Or;}static{this.easeOut=new Mr;}static{this.easeInOut=new Dr;}static{this.easeInCubic=new Br;}static{this.easeOutCubic=new Gr;}static{this.easeInOutCubic=new _r;}static{this.blink=new Vr;}};var A;(function(n){n[n.ThrowError=1]="ThrowError",n[n.IgnoreNewAnimation=2]="IgnoreNewAnimation",n[n.CompletePrevious=3]="CompletePrevious";})(A||(A={}));var T;(function(n){n[n.ReturnToOriginal=1]="ReturnToOriginal",n[n.StayInCurrentState=2]="StayInCurrentState",n[n.JumpToEnd=3]="JumpToEnd",n[n.Loop=4]="Loop";})(T||(T={}));var I=class n{static{h(this,"Animator");}static{this.ƀl=new WeakMap;}static ƀdt(t){let e=n.ƀl.get(t);return e||(e=new MapToWeakRefs,n.ƀl.set(t,e)),e}get animating(){return this.ƀhu!==void 0}get target(){return this.ƀla}get value(){return this.ƀlu||(this.ƀlu=new Variable(this.ƀla)),this.ƀlu.notifier}get paused(){return this.ƀic!==void 0}set paused(t){this.ƀic=t?true:void 0;}constructor(t,e,i){this.ƀga=false,this.ƀkf=false,this.ƀla=t,this.ƀhw={duration:200,animation:x.lineer,reAnimateHandling:A.ThrowError,completionHandling:T.StayInCurrentState,...i},this.ƀm=Comparator.isArray(e)?e:[e],this.ƀgn(t,this.ƀm);}animate(t,e){let i={...this.ƀhw,...e},r=this.ƀhu;if(this.ƀhu)switch(i.reAnimateHandling){case A.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case A.IgnoreNewAnimation:return SingleEvent.instant().notIdle();case A.CompletePrevious:this.ƀju(i.completionHandling,this.ƀhu.ƀix,true);break;default:{throw new Error}}return SingleEvent.create(o=>{this.ƀga&&(this.ƀkf=true);let a={};for(let c of this.ƀm)a[c]={ƀku:this.ƀla[c],ƀld:t[c]};let l={ƀcy:i.duration,ƀcz:0,ƀix:a,ƀbj:i.completionHandling,ƀn:i.animation,ƀbi:o};if(l.ƀbj!==T.Loop&&this.ƀfw(l)){this.ƀhu=void 0,o(),r?.ƀbi(),this.ƀaz();return}return l.ƀn.start(),this.ƀhu=l,this.ƀdc(),r?.ƀbi(),()=>{this.ƀhu===l&&(this.ƀla instanceof Attachable&&this.ƀla.destroyed||this.ƀju(l.ƀbj,l.ƀix,true),this.ƀhu=void 0,this.ƀaz());}}).notIdle()}set(t){this.ƀmh(e=>t[e]),this.ƀhu?.ƀbi();}completeAnimation(t){if(this.ƀhu){t=t??this.ƀhu.ƀbj,this.ƀju(t,this.ƀhu.ƀix,true);let e=this.ƀhu.ƀbi;this.ƀhu=void 0,e();}}ƀdc(){this.ƀlq||(this.ƀlq=m.beforeSceneUpdateAction.subscribe(t=>{if(!this.ƀic){this.ƀga=true;try{let e=this.ƀhu;if(!e)return;if(e.ƀcz+=t.delta,e.ƀcz>=e.ƀcy)if(e.ƀbj===T.Loop)e.ƀcz%=e.ƀcy,e.ƀn.start();else {this.ƀju(e.ƀbj,e.ƀix,!1),this.ƀhu=void 0,e.ƀbi(),this.ƀaz();return}let i=e.ƀn.multiplierFunction(e.ƀcz/e.ƀcy);this.ƀmh(r=>{let s=e.ƀix[r];return (s.ƀld-s.ƀku)*i+s.ƀku});}finally{this.ƀga=false,this.ƀkf&&(this.ƀkf=false,this.ƀcr(),this.ƀdc());}}}).attachToRoot());}ƀfw(t){return this.ƀm.every(e=>this.ƀla[e]===t.ƀix[e].ƀld)}ƀju(t,e,i){switch(t){case T.ReturnToOriginal:case T.Loop:this.ƀmh(r=>e[r].ƀku);break;case T.JumpToEnd:this.ƀmh(r=>e[r].ƀld);break;case T.StayInCurrentState:i||this.ƀmh(r=>e[r].ƀld);break;default:{throw new Error}}}ƀmh(t){let e=false;for(let i of this.ƀm){let r=t(i);this.ƀla[i]!==r&&(e=true,this.ƀla[i]=r);}e&&this.ƀlu?.set(this.ƀla);}ƀaz(){this.ƀhu||this.ƀcr();}ƀcr(){this.ƀlq?.destroy(),this.ƀlq=void 0;}ƀgn(t,e){let i=n.ƀdt(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 Dt;(function(n){n.Click="click",n.MouseOver="mouseover",n.MouseOut="mouseout",n.PointerDown="pointerdown",n.PointerUp="pointerup",n.PointerUpOutside="pointerupoutside",n.PointerMove="pointermove",n.PointerCancel="pointercancel",n.PointerOver="pointerover",n.PointerOut="pointerout",n.PointerEnter="pointerenter",n.PointerLeave="pointerleave",n.Added="added",n.Removed="removed",n.Update="update",n.Change="change",n.Wheel="wheel";})(Dt||(Dt={}));var ti;(function(n){n.Default="default",n.Pointer="pointer";})(ti||(ti={}));var ye=class extends IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀhb=false,this.ƀdl=false,this.ƀjj=1,this.ƀw=1,this.ƀip=new F.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new Vector(this.ƀip.width,this.ƀip.height)}setSize(t){return this.ƀip.width=t.x,this.ƀip.height=t.y,this}setPosition(t,e){if(e?.holdFrom){let i=this.ƀip.getLocalBounds(),r=new Vector(this.ƀip.scale.x,this.ƀip.scale.y),s=new Vector(i.x,i.y).multiply(r),o=new Vector(i.width,i.height).multiply(r),a=s.add(o.multiply(e.holdFrom));t=t.subtract(a);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new Vector(this.ƀip.x,this.ƀip.y)}set position(t){this.ƀip.position=t;}get x(){return this.ƀip.x}set x(t){this.ƀip.x=t;}get y(){return this.ƀip.y}set y(t){this.ƀip.y=t;}on(t){return Sequence.create(e=>{let i=h(r=>{if(t===Dt.Wheel){let o=r.deltaY;e({deltaY:o});}else e(void 0);},"handle");return this.ƀip.on(t,i),()=>this.ƀip.off(t,i)}).notIdle()}setRotation(t){return this.rotation=t,this}get rotation(){return new Radian(this.ƀip.rotation)}set rotation(t){this.ƀip.rotation=t.value;}get rotationValue(){return this.rotation.value}set rotationValue(t){this.rotation=new Radian(t);}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.ƀip.zIndex}set zIndex(t){this.ƀip.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new Radian(this.ƀip.skew.x)}set skewX(t){this.ƀip.skew.x=t.value;}setSkewY(t){return this.skewY=t,this}get skewY(){return new Radian(this.ƀip.skew.y)}set skewY(t){this.ƀip.skew.y=t.value;}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.ƀip.sortableChildren}set sortableChildren(t){this.ƀip.sortableChildren=t;}setAlpha(t){return this.ƀip.alpha=t,this}get alpha(){return this.ƀip.alpha}set alpha(t){this.ƀip.alpha=t;}setInteractive(t){return this.interactive=t,this}get interactive(){return this.ƀip.eventMode==="dynamic"}set interactive(t){t?this.ƀip.eventMode="dynamic":this.ƀip.eventMode="none";}setRenderGroup(t=true){return this.ƀip.isRenderGroup=t,this}setCursor(t){return this.cursor=t,this}get cursor(){return this.ƀip.cursor}set cursor(t){this.ƀip.cursor=t;}getMask(){throw new Error("ContainerAttributes: mask is not available!")}setMask(t){return t?(this.ƀip.addChild(t.ƀip),this.ƀip.mask=t.getMask(),this.ƀgq=t):(this.ƀgq&&this.ƀip.removeChild(this.ƀgq.ƀip),this.ƀip.mask=null),this}hitTest(t){if(this.ƀip.parent)if(this.ƀip.hitArea){let e=this.ƀip.toLocal(t);return this.ƀip.hitArea.contains(e.x,e.y)}else return this.ƀip.getBounds().containsPoint(t.x,t.y);else return false}get boundingBox(){let t=this.ƀip.getLocalBounds();return new Rectangle(new Vector(t.x,t.y),new Vector(t.x+t.width,t.y+t.height))}ignoreBounds(t=true){return this.ƀip.measurable=!t,this}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀhb}set mirror(t){this.ƀhb=t,this.ƀls();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdl}set flip(t){this.ƀdl=t,this.ƀls();}setScale(t){return this.scale=t,this}get scale(){return this.ƀjj}set scale(t){this.ƀjj=t,this.ƀls();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀw}set aspectRatio(t){this.ƀw=t,this.ƀls();}ƀls(){this.ƀip.scale.set(this.ƀjj,this.ƀjj),this.ƀw<1?this.ƀip.scale.x*=this.ƀw:this.ƀw>1&&(this.ƀip.scale.y/=this.ƀw),this.ƀhb&&(this.ƀip.scale.x*=-1),this.ƀdl&&(this.ƀip.scale.y*=-1);}};var N=2;var ge=class{static{h(this,"GaussianValuesHelper");}static ƀdr(t,e){let i=e*e,r=1/(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=NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<r)i-=l*2;else return true}),o=1/i,a=s.map(l=>l*o);return this.ƀbu(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=ArrayHelper.createIntegerArray(Math.ceil(t*.75)).map(r=>this.ƀdr(r,t*.4)),i=e.reduce((r,s)=>r+s,0);return i=i*2-e[0],e=e.map(r=>r/i),this.ƀbu(e)}}static ƀbu(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 _i=class Vi extends F.Filter{static{h(this,"BlurFilterPass");}static ƀec(t,e){let i=e?"uInputPixel.z":"uInputPixel.w",r=`
|
|
2
|
+
in vec2 vTextureCoord;
|
|
3
|
+
out vec4 finalColor;
|
|
4
4
|
|
|
5
|
-
uniform
|
|
5
|
+
uniform sampler2D uTexture;
|
|
6
|
+
uniform vec4 uInputPixel;
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
void main(void) {
|
|
10
|
-
gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
|
11
|
-
vTextureCoord = aTextureCoord;
|
|
12
|
-
}
|
|
13
|
-
`}static ƀed(t,e){let i=`
|
|
14
|
-
uniform sampler2D uSampler;
|
|
15
|
-
|
|
16
|
-
varying vec2 vTextureCoord;
|
|
17
|
-
uniform float pixelSize;
|
|
18
|
-
|
|
19
|
-
void iterate(vec2 offsetVector, float multiplier, out vec4 outputColor) {
|
|
20
|
-
vec4 textureColor = texture2D(uSampler, (vTextureCoord + offsetVector));
|
|
8
|
+
void iterate(vec2 offsetVector, float multiplier, inout vec4 outputColor) {
|
|
9
|
+
vec4 textureColor = texture(uTexture, (vTextureCoord + offsetVector));
|
|
21
10
|
outputColor += textureColor * multiplier;
|
|
22
11
|
}
|
|
23
12
|
|
|
24
13
|
void main() {
|
|
25
|
-
|
|
26
|
-
float offset;`;for(let
|
|
14
|
+
finalColor = texture(uTexture, vTextureCoord) * ${NumberHelper.toFloatString(t[0].multiplier)};
|
|
15
|
+
float offset;`;for(let s=1;s<t.length;s++){let o=`vec2(${e?"offset, 0.0":"0.0, offset"})`;r+=`
|
|
27
16
|
|
|
28
|
-
offset = ${NumberHelper.toFloatString(t[
|
|
29
|
-
iterate(${
|
|
30
|
-
iterate(${
|
|
31
|
-
}
|
|
32
|
-
`,i}constructor(t,e){super(ei.ƀev(),ei.ƀed(ge.getValuesForLinearSamplingGauss(t),e)),this.ƀfl=e,this.resolution=D;}apply(t,e,i,r){this.uniforms.pixelSize=this.ƀfl?1/(e.width*D):1/(e.height*D),t.applyFilter(this,e,i,r);}},Dt=class extends N.Filter{static{h(this,"BlurFilter");}constructor(t=new Vector(2,2)){if(super(),this.ƀlc=t,this.resolution=D,this.ƀlc=t.multiplyNumber(D).floor(),this.ƀlc.x<0||this.ƀlc.y<0)throw new Error("BlurFilterLinearSampling: Strength * Resolution must be greater than 0");if(this.ƀlc.x>100||this.ƀlc.y>100)throw new Error("BlurFilterLinearSampling: Strength * Resolution cannot be higher than 100");this.ƀfn=new Fi(this.ƀlc.x,true),this.ƀmb=new Fi(this.ƀlc.y,false),this.padding=Math.max(this.ƀlc.x,this.ƀlc.y);}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀmb.apply(t,e,s,N.CLEAR_MODES.CLEAR),this.ƀfn.apply(t,s,i,r),t.returnFilterTexture(s);}get blendMode(){return this.ƀfn.blendMode}set blendMode(t){this.ƀfn.blendMode=t,this.ƀmb.blendMode=t;}};var xe=class{static{h(this,"Filters");}get red(){return this.ƀje}set red(t){this.ƀje=t,this.ƀjf();}get green(){return this.ƀez}set green(t){this.ƀez=t,this.ƀjf();}get blue(){return this.ƀag}set blue(t){this.ƀag=t,this.ƀjf();}get brightness(){return this.ƀal}set brightness(t){this.ƀal=t,this.ƀjf();}get contrast(){return this.ƀbp}set contrast(t){this.ƀbp=t,this.ƀjf();}get blur(){return this.ƀah}set blur(t){let e=Comparator.isNumber(t)?new 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 Dt(e),this.ƀhr()));}constructor(t){this.ƀbl=t,this.ƀje=1,this.ƀez=1,this.ƀag=1,this.ƀal=1,this.ƀbp=1,this.ƀhr();}removeColorFilter(){this.ƀbe?.destroy(),this.ƀbe=void 0,this.ƀhr();}ƀjf(){this.ƀje===1&&this.ƀez===1&&this.ƀag===1&&this.ƀal===1&&this.ƀbp===1?this.ƀbe&&(this.ƀbe.destroy(),this.ƀbe=void 0,this.ƀhr()):(this.ƀbe||(this.ƀbe=new N.ColorMatrixFilter,this.ƀbe.resolution=D,this.ƀhr()),this.ƀbe.matrix=[this.ƀje*this.ƀbp,0,0,0,this.ƀal-1,0,this.ƀez*this.ƀbp,0,0,this.ƀal-1,0,0,this.ƀag*this.ƀbp,0,this.ƀal-1,0,0,0,1,0]);}ƀhr(){let t=[];this.ƀai&&t.push(this.ƀai),this.ƀbe&&t.push(this.ƀbe),this.ƀbl.filters=t;}};var d=class o extends ye{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 xe(this.ƀis);}destroy(){this.destroyed||(super.destroy(),o.allContainers.delete(this.id),!this.ƀis.destroyed&&this.ƀis.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(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.ƀis.addChildAt(this.ƀis,0):i.addChildTo.ƀis.addChild(this.ƀis),r.cropOverflowingParts)if(i)this.ƀis.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}};var Mt=class extends Attachable{static{h(this,"StateAnimation");}onStateChange(t){return this.ƀht.subscribe(e=>t(e.item,e.nextItem)).attach(this),this}onValueChange(t){return this.ƀhv.subscribe(e=>t(e)).attach(this),this}get state(){return {value:this.ƀk.value,item:this.ƀge,nextItem:this.ƀhl,queuedItem:this.ƀjb,animationState:this.ƀo}}get paused(){return this.ƀp.paused}set paused(t){this.ƀp.paused=t;}constructor(t){super(),this.ƀk={value:0},this.ƀo="idle",this.ƀht=new Action,this.ƀhv=new Action,this.ƀhy={duration:500,animation:x.lineer,...t},this.ƀp=new I(this.ƀk,"value",{duration:this.ƀhy.duration,animation:this.ƀhy.animation,reAnimateHandling:C.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀp.value.subscribe(()=>{this.ƀk.value!==1&&this.ƀk.value!==0&&this.ƀhv.trigger(this.ƀk.value);}).attach(this);}setItem(t,e){if(this.ƀge===void 0)this.ƀge=t,this.ƀht.trigger({item:this.ƀge,nextItem:this.ƀhl}),this.ƀhv.trigger(this.ƀk.value);else if(e?.instant)this.ƀp.completeAnimation(),this.ƀo="idle",this.ƀge=t,this.ƀhl=void 0,this.ƀjb=void 0,this.ƀk.value=0,this.ƀht.trigger({item:this.ƀge,nextItem:this.ƀhl}),this.ƀhv.trigger(this.ƀk.value);else switch(this.ƀo){case "idle":t!==this.ƀge&&(this.ƀo="transitioning",this.ƀhl=t,this.ƀk.value=0,this.ƀht.trigger({item:this.ƀge,nextItem:this.ƀhl}),this.ƀhv.trigger(this.ƀk.value),this.ƀp.animate({value:1}).tap(()=>this.ƀhp()).attach(this));break;case "transitioning":t===this.ƀge?(this.ƀjb=void 0,this.ƀo="reverting",this.ƀp.animate({value:0},{duration:this.ƀk.value*this.ƀhy.duration}).tap(()=>this.ƀhp()).attach(this)):t===this.ƀhl?this.ƀjb=void 0:this.ƀjb=t;break;case "reverting":t===this.ƀhl?(this.ƀjb=void 0,this.ƀo="transitioning",this.ƀp.animate({value:1},{duration:(1-this.ƀk.value)*this.ƀhy.duration}).tap(()=>this.ƀhp()).attach(this)):t===this.ƀge?this.ƀjb=void 0:this.ƀjb=t;break;default:{this.ƀo;throw new Error}}}ƀhp(){switch(this.ƀo){case "transitioning":this.ƀk.value===1&&(this.ƀk.value=0,this.ƀjb!==void 0?(this.ƀo="transitioning",this.ƀge=this.ƀhl,this.ƀhl=this.ƀjb,this.ƀjb=void 0,this.ƀht.trigger({item:this.ƀge,nextItem:this.ƀhl}),this.ƀp.animate({value:1}).tap(()=>this.ƀhp()).attach(this)):(this.ƀo="idle",this.ƀge=this.ƀhl,this.ƀhl=void 0,this.ƀht.trigger({item:this.ƀge,nextItem:this.ƀhl})),this.ƀhv.trigger(this.ƀk.value));break;case "reverting":if(this.ƀge===void 0)throw new Error("StateAnimation: item must be defined when reverting!");this.ƀk.value===0&&(this.ƀjb!==void 0?(this.ƀo="transitioning",this.ƀhl=this.ƀjb,this.ƀjb=void 0,this.ƀk.value=0,this.ƀht.trigger({item:this.ƀge,nextItem:this.ƀhl}),this.ƀp.animate({value:1}).tap(()=>this.ƀhp()).attach(this)):(this.ƀo="idle",this.ƀhl=void 0,this.ƀk.value=0,this.ƀht.trigger({item:this.ƀge,nextItem:this.ƀhl})),this.ƀhv.trigger(this.ƀk.value));break;case "idle":break;default:{this.ƀo;throw new Error}}}};var H=Symbol("empty"),ve=class extends Attachable{static{h(this,"ThroughEmptyStateAnimation");}onStateChange(t){return this.ƀht.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀhv.subscribe(e=>t(e)).attach(this),this}get state(){let t=this.ƀkz.state.queuedItem;return {value:this.ƀlx,item:this.ƀge,nextItem:this.ƀo==="appearing"?this.ƀge:void 0,queuedItem:t===H?void 0:t,animationState:this.ƀo}}constructor(t){super(),this.ƀlx=0,this.ƀo="hidden",this.ƀht=new Action,this.ƀhv=new Action,this.ƀkz=new Mt(t).onStateChange((e,i)=>this.ƀfb(e,i)).onValueChange(e=>this.ƀfg(e)).attach(this),this.ƀkz.setItem(H);}setItem(t,e){if(e?.instant){this.ƀo=t!==void 0?"appearing":"disappearing",this.ƀkz.setItem(t??H,{instant:true});return}switch(this.ƀo){case "hidden":t!==void 0&&(this.ƀo="appearing",this.ƀkz.setItem(t));break;case "visible":t===void 0?(this.ƀo="disappearing",this.ƀkz.setItem(H)):t!==this.ƀge&&(this.ƀo="disappearToChange",this.ƀkz.setItem(H),this.ƀkz.setItem(t));break;case "appearing":t===void 0?(this.ƀo="disappearing",this.ƀkz.setItem(H)):t!==this.ƀge&&(this.ƀlx>0?(this.ƀo="disappearToChange",this.ƀkz.setItem(H),this.ƀkz.setItem(t)):(this.ƀkz.setItem(H,{instant:true}),this.ƀkz.setItem(t)));break;case "disappearing":t!==void 0&&t===this.ƀge?(this.ƀo="appearing",this.ƀkz.setItem(t)):t!==void 0&&(this.ƀo="disappearToChange",this.ƀkz.setItem(t));break;case "disappearToChange":t===void 0?(this.ƀo="disappearing",this.ƀkz.setItem(H)):t===this.ƀge?(this.ƀo="appearing",this.ƀkz.setItem(t)):this.ƀkz.setItem(t);break;default:{this.ƀo;throw new Error}}}ƀfb(t,e){if(e!==void 0){e!==H&&e!==this.ƀge&&(this.ƀge=e,this.ƀo="appearing",this.ƀht.trigger(this.ƀge),this.ƀlx!==0&&(this.ƀlx=0,this.ƀhv.trigger(0)));return}if(t===H)this.ƀo==="disappearing"&&(this.ƀge=void 0,this.ƀo="hidden",this.ƀlx=0,this.ƀht.trigger(void 0),this.ƀhv.trigger(0));else {let i=t!==this.ƀge;this.ƀge=t,this.ƀo="visible",i&&this.ƀht.trigger(this.ƀge),(i||this.ƀlx!==1)&&(this.ƀlx=1,this.ƀhv.trigger(1));}}ƀfg(t){let e=this.ƀkz.state.nextItem;if(e===void 0)return;let i=e===H?1-t:t;i!==this.ƀlx&&(this.ƀlx=i,i!==0&&i!==1&&this.ƀhv.trigger(i));}};var Hi=class extends d{static{h(this,"FadeInContent");}constructor(t,e){super(),this.ƀby=t;let i={duration:200,animation:x.easeInOut,...e};this.alpha=0,this.ƀkz=new ve(i).onStateChange(r=>{this.ƀbm?.destroy(),this.ƀbm=void 0,r!==void 0&&(this.ƀbm=new d().displayParent(this).attach(this),this.ƀby({state:r,container:this.ƀbm}));}).onValueChange(r=>{this.alpha=r;}).attach(this);}setState(t,e){return this.ƀkz.setItem(t,e),this}};var M=class{static{h(this,"GameAssets");}static{this.ƀjl=new Map;}static{this.ƀq=0;}static getAsset(t){let e=this.ƀjl.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.ƀjl.set(i,t),i}static destroyAsset(t){let e=this.ƀjl.get(t);e&&(e.destroy(true),this.ƀjl.delete(t));}static async loadGameAssets(t){let e=new Map,i=[];t.forEach(s=>{if(!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 N.Texture&&(l.id=a),n=e.get(s.url),n)n.forEach(c=>{this.ƀjl.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=>N.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 Pe=class o extends N.Filter{static{h(this,"ExpandWithColorFilter");}static ƀev(){return `
|
|
33
|
-
attribute vec2 aVertexPosition;
|
|
34
|
-
attribute vec2 aTextureCoord;
|
|
35
|
-
|
|
36
|
-
uniform mat3 projectionMatrix;
|
|
37
|
-
|
|
38
|
-
varying vec2 vTextureCoord;
|
|
39
|
-
|
|
40
|
-
void main(void) {
|
|
41
|
-
gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
|
|
42
|
-
vTextureCoord = aTextureCoord;
|
|
17
|
+
offset = ${NumberHelper.toFloatString(t[s].offset)} * ${i};
|
|
18
|
+
iterate(${o}, ${NumberHelper.toFloatString(t[s].multiplier)}, finalColor);
|
|
19
|
+
iterate(${o} * -1.0, ${NumberHelper.toFloatString(t[s].multiplier)}, finalColor);`;}return r+=`
|
|
43
20
|
}
|
|
44
|
-
`}static
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
uniform float expandSquared;
|
|
48
|
-
uniform vec3 color;
|
|
21
|
+
`,r}constructor(t,e){super({glProgram:F.GlProgram.from({vertex:F.defaultFilterVert,fragment:Vi.ƀec(ge.getValuesForLinearSamplingGauss(t),e)}),resolution:N});}},Bt=class extends F.Filter{static{h(this,"BlurFilter");}constructor(t=new Vector(2,2)){if(super({resolution:N,compatibleRenderers:F.RendererType.WEBGL}),this.ƀky=t,this.ƀky=t.multiplyNumber(N).floor(),this.ƀky.x<0||this.ƀky.y<0)throw new Error("BlurFilterLinearSampling: Strength * Resolution must be greater than 0");if(this.ƀky.x>100||this.ƀky.y>100)throw new Error("BlurFilterLinearSampling: Strength * Resolution cannot be higher than 100");this.ƀfk=new _i(this.ƀky.x,true),this.ƀly=new _i(this.ƀky.y,false),this.padding=Math.max(this.ƀky.x,this.ƀky.y);}apply(t,e,i,r){let s=F.TexturePool.getSameSizeTexture(e);this.ƀly.apply(t,e,s,true),this.ƀfk.apply(t,s,i,r),F.TexturePool.returnTexture(s);}get blendMode(){return this.ƀfk.blendMode}set blendMode(t){this.ƀfk&&(this.ƀfk.blendMode=t,this.ƀly.blendMode=t);}};var xe=class{static{h(this,"Filters");}get red(){return this.ƀjb}set red(t){this.ƀjb=t,this.ƀjc();}get green(){return this.ƀex}set green(t){this.ƀex=t,this.ƀjc();}get blue(){return this.ƀah}set blue(t){this.ƀah=t,this.ƀjc();}get brightness(){return this.ƀam}set brightness(t){this.ƀam=t,this.ƀjc();}get contrast(){return this.ƀbp}set contrast(t){this.ƀbp=t,this.ƀjc();}get blur(){return this.ƀai}set blur(t){let e=Comparator.isNumber(t)?new Vector(t,t):t;(this.ƀai&&e&&!this.ƀai.isEqual(e)||this.ƀai&&!e||!this.ƀai&&e)&&(this.ƀai=e,this.ƀaj&&(this.ƀaj.destroy(),this.ƀaj=void 0),e&&(this.ƀaj=new Bt(e),this.ƀhp()));}constructor(t){this.ƀbl=t,this.ƀjb=1,this.ƀex=1,this.ƀah=1,this.ƀam=1,this.ƀbp=1,this.ƀhp();}removeColorFilter(){this.ƀbe?.destroy(),this.ƀbe=void 0,this.ƀhp();}ƀjc(){this.ƀjb===1&&this.ƀex===1&&this.ƀah===1&&this.ƀam===1&&this.ƀbp===1?this.ƀbe&&(this.ƀbe.destroy(),this.ƀbe=void 0,this.ƀhp()):(this.ƀbe||(this.ƀbe=new F.ColorMatrixFilter,this.ƀbe.resolution=N,this.ƀhp()),this.ƀbe.matrix=[this.ƀjb*this.ƀbp,0,0,0,this.ƀam-1,0,this.ƀex*this.ƀbp,0,0,this.ƀam-1,0,0,this.ƀah*this.ƀbp,0,this.ƀam-1,0,0,0,1,0]);}ƀhp(){let t=[];this.ƀaj&&t.push(this.ƀaj),this.ƀbe&&t.push(this.ƀbe),this.ƀbl.filters=t;}};var d=class n extends ye{static{h(this,"Container");}static{this.allContainers=new Map;}constructor(){super(),this.addChildTo=this,this.defaultChildOptions={addUnder:false,cropOverflowingParts:false},n.allContainers.set(this.id,this),this.filters=new xe(this.ƀip);}destroy(){this.destroyed||(super.destroy(),n.allContainers.delete(this.id),!this.ƀip.destroyed&&this.ƀip.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(Comparator.isNumber(t)){if(i=n.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.ƀip.addChildAt(this.ƀip,0):i.addChildTo.ƀip.addChild(this.ƀip),r.cropOverflowingParts)if(i)this.ƀip.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}};var Gt=class extends Attachable{static{h(this,"StateAnimation");}onStateChange(t){return this.ƀhr.subscribe(e=>t(e.item,e.nextItem)).attach(this),this}onValueChange(t){return this.ƀht.subscribe(e=>t(e)).attach(this),this}get state(){return {value:this.ƀk.value,item:this.ƀgb,nextItem:this.ƀhj,queuedItem:this.ƀiy,animationState:this.ƀo}}get paused(){return this.ƀp.paused}set paused(t){this.ƀp.paused=t;}constructor(t){super(),this.ƀk={value:0},this.ƀo="idle",this.ƀhr=new Action,this.ƀht=new Action,this.ƀhw={duration:500,animation:x.lineer,...t},this.ƀp=new I(this.ƀk,"value",{duration:this.ƀhw.duration,animation:this.ƀhw.animation,reAnimateHandling:A.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀp.value.subscribe(()=>{this.ƀk.value!==1&&this.ƀk.value!==0&&this.ƀht.trigger(this.ƀk.value);}).attach(this);}setItem(t,e){if(this.ƀgb===void 0)this.ƀgb=t,this.ƀhr.trigger({item:this.ƀgb,nextItem:this.ƀhj}),this.ƀht.trigger(this.ƀk.value);else if(e?.instant)this.ƀp.completeAnimation(),this.ƀo="idle",this.ƀgb=t,this.ƀhj=void 0,this.ƀiy=void 0,this.ƀk.value=0,this.ƀhr.trigger({item:this.ƀgb,nextItem:this.ƀhj}),this.ƀht.trigger(this.ƀk.value);else switch(this.ƀo){case "idle":t!==this.ƀgb&&(this.ƀo="transitioning",this.ƀhj=t,this.ƀk.value=0,this.ƀhr.trigger({item:this.ƀgb,nextItem:this.ƀhj}),this.ƀht.trigger(this.ƀk.value),this.ƀp.animate({value:1}).tap(()=>this.ƀhn()).attach(this));break;case "transitioning":t===this.ƀgb?(this.ƀiy=void 0,this.ƀo="reverting",this.ƀp.animate({value:0},{duration:this.ƀk.value*this.ƀhw.duration}).tap(()=>this.ƀhn()).attach(this)):t===this.ƀhj?this.ƀiy=void 0:this.ƀiy=t;break;case "reverting":t===this.ƀhj?(this.ƀiy=void 0,this.ƀo="transitioning",this.ƀp.animate({value:1},{duration:(1-this.ƀk.value)*this.ƀhw.duration}).tap(()=>this.ƀhn()).attach(this)):t===this.ƀgb?this.ƀiy=void 0:this.ƀiy=t;break;default:{this.ƀo;throw new Error}}}ƀhn(){switch(this.ƀo){case "transitioning":this.ƀk.value===1&&(this.ƀk.value=0,this.ƀiy!==void 0?(this.ƀo="transitioning",this.ƀgb=this.ƀhj,this.ƀhj=this.ƀiy,this.ƀiy=void 0,this.ƀhr.trigger({item:this.ƀgb,nextItem:this.ƀhj}),this.ƀp.animate({value:1}).tap(()=>this.ƀhn()).attach(this)):(this.ƀo="idle",this.ƀgb=this.ƀhj,this.ƀhj=void 0,this.ƀhr.trigger({item:this.ƀgb,nextItem:this.ƀhj})),this.ƀht.trigger(this.ƀk.value));break;case "reverting":if(this.ƀgb===void 0)throw new Error("StateAnimation: item must be defined when reverting!");this.ƀk.value===0&&(this.ƀiy!==void 0?(this.ƀo="transitioning",this.ƀhj=this.ƀiy,this.ƀiy=void 0,this.ƀk.value=0,this.ƀhr.trigger({item:this.ƀgb,nextItem:this.ƀhj}),this.ƀp.animate({value:1}).tap(()=>this.ƀhn()).attach(this)):(this.ƀo="idle",this.ƀhj=void 0,this.ƀk.value=0,this.ƀhr.trigger({item:this.ƀgb,nextItem:this.ƀhj})),this.ƀht.trigger(this.ƀk.value));break;case "idle":break;default:{this.ƀo;throw new Error}}}};var H=Symbol("empty"),ve=class extends Attachable{static{h(this,"ThroughEmptyStateAnimation");}onStateChange(t){return this.ƀhr.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀht.subscribe(e=>t(e)).attach(this),this}get state(){let t=this.ƀkv.state.queuedItem;return {value:this.ƀlu,item:this.ƀgb,nextItem:this.ƀo==="appearing"?this.ƀgb:void 0,queuedItem:t===H?void 0:t,animationState:this.ƀo}}constructor(t){super(),this.ƀlu=0,this.ƀo="hidden",this.ƀhr=new Action,this.ƀht=new Action,this.ƀkv=new Gt(t).onStateChange((e,i)=>this.ƀez(e,i)).onValueChange(e=>this.ƀfe(e)).attach(this),this.ƀkv.setItem(H);}setItem(t,e){if(e?.instant){this.ƀo=t!==void 0?"appearing":"disappearing",this.ƀkv.setItem(t??H,{instant:true});return}switch(this.ƀo){case "hidden":t!==void 0&&(this.ƀo="appearing",this.ƀkv.setItem(t));break;case "visible":t===void 0?(this.ƀo="disappearing",this.ƀkv.setItem(H)):t!==this.ƀgb&&(this.ƀo="disappearToChange",this.ƀkv.setItem(H),this.ƀkv.setItem(t));break;case "appearing":t===void 0?(this.ƀo="disappearing",this.ƀkv.setItem(H)):t!==this.ƀgb&&(this.ƀlu>0?(this.ƀo="disappearToChange",this.ƀkv.setItem(H),this.ƀkv.setItem(t)):(this.ƀkv.setItem(H,{instant:true}),this.ƀkv.setItem(t)));break;case "disappearing":t!==void 0&&t===this.ƀgb?(this.ƀo="appearing",this.ƀkv.setItem(t)):t!==void 0&&(this.ƀo="disappearToChange",this.ƀkv.setItem(t));break;case "disappearToChange":t===void 0?(this.ƀo="disappearing",this.ƀkv.setItem(H)):t===this.ƀgb?(this.ƀo="appearing",this.ƀkv.setItem(t)):this.ƀkv.setItem(t);break;default:{this.ƀo;throw new Error}}}ƀez(t,e){if(e!==void 0){e!==H&&e!==this.ƀgb&&(this.ƀgb=e,this.ƀo="appearing",this.ƀhr.trigger(this.ƀgb),this.ƀlu!==0&&(this.ƀlu=0,this.ƀht.trigger(0)));return}if(t===H)this.ƀo==="disappearing"&&(this.ƀgb=void 0,this.ƀo="hidden",this.ƀlu=0,this.ƀhr.trigger(void 0),this.ƀht.trigger(0));else {let i=t!==this.ƀgb;this.ƀgb=t,this.ƀo="visible",i&&this.ƀhr.trigger(this.ƀgb),(i||this.ƀlu!==1)&&(this.ƀlu=1,this.ƀht.trigger(1));}}ƀfe(t){let e=this.ƀkv.state.nextItem;if(e===void 0)return;let i=e===H?1-t:t;i!==this.ƀlu&&(this.ƀlu=i,i!==0&&i!==1&&this.ƀht.trigger(i));}};var Hi=class extends d{static{h(this,"FadeInContent");}constructor(t,e){super(),this.ƀby=t;let i={duration:200,animation:x.easeInOut,...e};this.alpha=0,this.ƀkv=new ve(i).onStateChange(r=>{this.ƀbm?.destroy(),this.ƀbm=void 0,r!==void 0&&(this.ƀbm=new d().displayParent(this).attach(this),this.ƀby({state:r,container:this.ƀbm}));}).onValueChange(r=>{this.alpha=r;}).attach(this);}setState(t,e){return this.ƀkv.setItem(t,e),this}};var M=class{static{h(this,"GameAssets");}static{this.ƀji=new Map;}static{this.ƀq=0;}static getAsset(t){let e=this.ƀji.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.ƀji.set(i,t),i}static destroyAsset(t){let e=this.ƀji.get(t);e&&(e.source.removeAllListeners("change"),e.destroy(true),this.ƀji.delete(t));}static async loadGameAssets(t){let e=new Map,i=[];t.forEach(s=>{if(!Comparator.isString(s.url))throw new Error(`GameAssets: source url should be a string: ${s.url}`);let o=e.get(s.url),a=s.id;o?o.push(a):(e.set(s.url,[a]),i.push({url:s.url,callback:h(l=>{if(l instanceof F.Texture&&(l.id=a),o=e.get(s.url),o)o.forEach(c=>{this.ƀji.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=>F.Assets.load(s.url))).then(s=>{let o=performance.now();console.info("Asset load completed in: ",Math.round(o-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 Se=class n extends F.Filter{static{h(this,"ExpandWithColorFilter");}static ƀec(t){let e=`
|
|
22
|
+
in vec2 vTextureCoord;
|
|
23
|
+
out vec4 finalColor;
|
|
49
24
|
|
|
50
|
-
|
|
25
|
+
uniform sampler2D uTexture;
|
|
26
|
+
uniform vec4 uInputPixel;
|
|
27
|
+
uniform float uExpandSquared;
|
|
28
|
+
uniform vec3 uColor;
|
|
51
29
|
|
|
52
30
|
void main(void) {
|
|
53
31
|
float highestAlpha = 0.0;`;return t>0?e+=`
|
|
54
32
|
|
|
55
33
|
for (float x = -${NumberHelper.toFloatString(t)}; x <= ${NumberHelper.toFloatString(t)}; x++) {
|
|
56
34
|
for (float y = -${NumberHelper.toFloatString(t)}; y <= ${NumberHelper.toFloatString(t)}; y++) {
|
|
57
|
-
vec4 neighborColor =
|
|
35
|
+
vec4 neighborColor = texture(uTexture, vTextureCoord + vec2(x * uInputPixel.z, y * uInputPixel.w));
|
|
58
36
|
float distance = x * x + y * y;
|
|
59
|
-
highestAlpha = max(highestAlpha, neighborColor.a * step(distance,
|
|
37
|
+
highestAlpha = max(highestAlpha, neighborColor.a * step(distance, uExpandSquared));
|
|
60
38
|
}
|
|
61
39
|
}`:e+=`
|
|
62
40
|
|
|
63
|
-
vec4 centerColor =
|
|
41
|
+
vec4 centerColor = texture(uTexture, vTextureCoord);
|
|
64
42
|
highestAlpha = centerColor.a;`,e+=`
|
|
65
43
|
|
|
66
|
-
|
|
67
|
-
}`,e}constructor(t,e){if(super(o.ƀev(),o.ƀed(t*D)),this.ƀdf=t,this.resolution=D,this.ƀdf=t*D,this.ƀdf<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀdf>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");Comparator.isInteger(this.ƀdf)||(this.ƀdf=Math.floor(this.ƀdf));let i=ColorHelper.normalize(e);this.uniforms.color=new Float32Array([i.red,i.green,i.blue]),this.uniforms.expandSquared=this.ƀdf*this.ƀdf,this.padding=this.ƀdf;}apply(t,e,i,r){this.uniforms.pixelSize=new Float32Array([1/(e.width*D),1/(e.height*D)]),t.applyFilter(this,e,i,r);}};var Ee=class extends N.Filter{static{h(this,"GlowFilter");}constructor(t){super(),this.resolution=D;let e={blurRadius:1,expand:0,color:ColorHelper.white,blendMode:Ot.Screen,...t};this.ƀdg=new Pe(e.expand,e.color);let i=Comparator.isNumber(e.blurRadius)?new Vector(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀai=new Dt(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀai.blendMode=N.BLEND_MODES.SCREEN;}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀdg.apply(t,e,s,N.CLEAR_MODES.CLEAR),this.ƀai.apply(t,s,i,r),t.returnFilterTexture(s);}};var Yt=class o{static{h(this,"GlowSpriteGenerator");}static{this.ƀey=new Map;}static createGlowSpriteFromSprite(t,e,i){let r=this.ƀbh(e),s=Comparator.isNumber(r.blurRadius)?new Vector(r.blurRadius,r.blurRadius):r.blurRadius,n=this.ƀef(t.texture,s,r.expand,r.color,i),a=new N.Sprite(n);return this.ƀjy(a,Vector.fromVec2(t.anchor),Math.max(s.x,s.y)+r.expand),a.alpha=r.glowAlpha,a.blendMode=r.blendMode,a}static ƀef(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.ƀey.has(n))return o.ƀey.get(n);{let a=this.ƀeg(t,e,i,r);return o.ƀey.set(n,a),a}}else return this.ƀeg(t,e,i,r)}static ƀeg(t,e,i,r){let s=new N.Sprite(t);this.ƀdi(s,Math.max(e.x,e.y)+i),s.filters=[new Ee({blurRadius:e,expand:i,color:r})];let n=g.instance.renderer.generateTexture(s);return n.id=M.insertAsset(n),s.destroy(),n}static ƀjy(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 ƀdi(t,e){if(t.isSprite){let s=new N.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 ƀbh(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:ColorHelper.white,blendMode:Ot.Add};return t&&(e={...e,...t}),e}};E.onHardReset.subscribe(()=>{Yt.ƀey.clear();}).attachToRoot();var J=class o extends d{static{h(this,"Sprite");}static createByName(t){let e=g.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.ƀis,i=e.parent;i&&i.removeChild(e);let r=g.instance.renderer.generateTexture(e,{resolution:2,scaleMode:N.SCALE_MODES.LINEAR,multisample:N.MSAA_QUALITY.HIGH});i&&i.addChild(e);let n={id:M.insertAsset(r),scale:t.scale,size:t.size,anchor:Vector.zero,destroyAssetOnDestroy:true};return new o(n,{ignoreAnchor:true})}constructor(t,e={}){if(super(),this.ƀll=1,!t)throw new Error("Sprite: spriteDefinition cannot be nullish!");this.ƀkr=t,this.pixiSprite=new N.Sprite(M.getAsset(t.id)),this.ƀis.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.ƀgu?.destroy(),this.ƀak?.destroy(),this.ƀkr.destroyAssetOnDestroy&&(M.destroyAsset(this.ƀkr.id),this.ƀit&&M.destroyAsset(this.ƀit.texture.id)),this.ƀit&&!this.ƀit.destroyed&&this.ƀit.destroy());}setTextureScale(t){return this.textureScale=t,this}get textureScale(){return this.ƀll}set textureScale(t){this.ƀll=t,this.pixiSprite.scale.set(t);}get size(){return new Vector(this.pixiSprite.width,this.pixiSprite.height)}getMask(){return this.pixiSprite}set interactive(t){super.interactive=t,t&&this.ƀkr.boundingShapes&&!this.ƀis.hitArea&&(this.ƀis.hitArea=new ls(this.ƀkr.boundingShapes,this.size,Vector.fromVec2(this.ƀkr.anchor)));}setMipmap(t){return this.mipmap=t,this}get mipmap(){return this.pixiSprite.texture.baseTexture.mipmap===N.MIPMAP_MODES.ON}set mipmap(t){t?this.pixiSprite.texture.baseTexture.mipmap=N.MIPMAP_MODES.ON:this.pixiSprite.texture.baseTexture.mipmap=N.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 N.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.ƀit)return this.ƀit.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀit)this.ƀit.alpha=t;else throw new Error("Sprite: setGlowFilterAlpha cannot be called before glow filter is added.")}getAlignmentVector(t){let e=Vector.fromVec2(this.ƀkr.anchor).to(t);return new Vector(this.size.x*e.x,this.size.y*e.y)}setGlowEffect(t){return this.ƀit&&(this.ƀit.destroy(),this.ƀit=void 0),t&&(this.ƀit=Yt.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀkr.destroyAssetOnDestroy),this.ƀit.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀit.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.ƀis.addChild(this.ƀit)),this}showBoundingShape(t){return t?this.ƀak||(this.ƀak=this.ƀbw().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀak&&(this.ƀak.destroy(),this.ƀak=void 0),this}getBoundingMask(){if(!this.ƀgu){if(!this.ƀkr.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀgu=this.ƀbw(),this.ƀgu.pixiSprite._maskRefCount=Number.POSITIVE_INFINITY,this.ƀgu.pixiSprite.renderable=false,this.ƀgu.displayParent(this);}return this.ƀgu}ƀbw(){if(!this.ƀkr.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return R.createPolygon(this.ƀkr.boundingShapes,ColorHelper.white).toSprite().attach(this)}download(){let t=g.instance.renderer.extract.canvas(this.ƀis);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}},ls=class{static{h(this,"CompositeHitArea");}constructor(t,e,i){this.ƀkh=t.map(r=>new N.Polygon(r.map(s=>new N.Point(s.x,s.y))));}contains(t,e){return this.ƀkh.some(i=>i.contains(t,e))}};var Te=class{static{h(this,"DashedLineHelper");}static getLines(t,e,i){let r=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,y=Math.floor(c/p),w=c-p*y;y>=1&&w<i.dashLength&&(w+=p,y--);let A=s.normalize(w/2),Tt=s.normalize(i.dashGap);if(a.push({from:l,to:l.add(A)}),l=l.add(A),y>0){let pe=s.normalize(i.dashLength);ArrayHelper.createEmptyArray(y).forEach(()=>{l=l.add(Tt),a.push({from:l,to:l.add(pe)}),l=l.add(pe);});}return l=l.add(Tt),a.push({from:l,to:l.add(A)}),a}};var R=class o extends d{static{h(this,"Graphics");}static{this.ƀcx=new Map;}static createArrow(t,e){let i=new N.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 N.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:ColorHelper.white,...i},s=new N.Graphics;return s.lineStyle(r.width,r.color),Te.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 N.Graphics;return r.lineStyle(2,i),r.moveTo(t.x,t.y),r.lineTo(e.x,e.y),r.lineStyle(1,i),r.beginFill(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 N.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=ColorHelper.white){let i=new N.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 N.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 N.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 N.Graphics,r=JSON.stringify({type:"polygon",polygon:t,color:e});return i.beginFill(e),t.forEach(s=>{i.drawPolygon(s.map(n=>new N.Point(n.x,n.y)));}),i.endFill(),new o(i,r)}static createRegularPolygon(t,e,i){let r=new N.Graphics,s=new Radian(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.ƀis.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.ƀes(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}ƀes(t,e){if(e){let i=o.ƀcx.get(t);return i||(i=this.ƀci(),o.ƀcx.set(t,i)),i}else return this.ƀci()}ƀci(){let t=g.instance.renderer.generateTexture(this.pixiGraphics);t.id=M.insertAsset(t);let e=this.pixiGraphics.getBounds();return {textureID:t.id,bounds:new Vector(e.x,e.y)}}};var si=class{static{h(this,"AnimationEaseInOutFlatter");}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},xt=class o extends d{static{h(this,"ScrollMaskUI");}static{this.ƀcx=new Map;}constructor(t,e,i,r=et.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 d;r===et.Horizontal?this.ƀcc(e,i,s):this.ƀcj(e,i,s),this.ƀgu=J.createSnapshotSprite(s).attach(this),s.destroy(),t.setMask(this.ƀgu);}ƀcj(t,e,i){e>0&&this.ƀbz(new Vector(t.x,e)).displayParent(i).attach(i),R.createRectangle(new Vector(t.x,t.y-e*2),ColorHelper.white).toSprite().setPosition(new Vector(0,e),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbz(new Vector(t.x,e)).setPosition(new Vector(t.x,t.y),{round:false}).setRotation(Radian.get180).displayParent(i).attach(i);}ƀcc(t,e,i){e>0&&this.ƀbz(new Vector(t.y,e)).setPosition(new Vector(0,t.y),{round:false}).setRotation(Radian.get270).displayParent(i).attach(i),R.createRectangle(new Vector(t.x-e*2,t.y),ColorHelper.white).toSprite().setPosition(new Vector(e,0),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbz(new Vector(t.y,e)).setPosition(new Vector(t.x,0),{round:false}).setRotation(Radian.get90).displayParent(i).attach(i);}ƀbz(t){let i={id:this.ƀca(t.y),scale:1,size:t,anchor:{x:0,y:0}};return new J(i,{textureSize:t,ignoreAnchor:true})}ƀca(t){let e=JSON.stringify({type:"gradient",length:t}),i=o.ƀcx.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 si;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=N.Texture.from(r);i=M.insertAsset(a),o.ƀcx.set(e,i);}else throw new Error("Canvas context is null")}return i}};var it;(function(o){o[o.Appear=1]="Appear",o[o.Disappear=2]="Disappear";})(it||(it={}));var Re=class extends Attachable{static{h(this,"SlideStateAnimation");}onStateChange(t){return this.ƀht.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀhv.subscribe(e=>t(e.value,e.index)).attach(this),this}get state(){return {value:this.ƀkz.state.value,item:this.ƀfv,nextItem:this.ƀhk,queuedItem:this.ƀkz.state.queuedItem,animationState:this.ƀo}}constructor(t){super(),this.ƀo="idle",this.ƀht=new Action,this.ƀhv=new Action,this.ƀhy={duration:500,animation:x.easeInOutCubic,...t},this.ƀkz=new Mt({duration:this.ƀhy.duration,animation:this.ƀhy.animation}).onStateChange((e,i)=>this.ƀfb(e,i)).onValueChange(e=>this.ƀfg(e)).attach(this);}setIndex(t,e){if(!Comparator.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfv===void 0?(this.ƀfv=t,this.ƀht.trigger({state:it.Appear,index:t}),this.ƀkz.setItem(t,e)):this.ƀfv!==t?this.ƀhk!==t?this.ƀo==="idle"?(this.ƀo=t>this.ƀfv?"transitionForward":"transitionBackward",this.ƀhk=t,this.ƀht.trigger({state:it.Appear,index:this.ƀhk}),this.ƀkz.setItem(t,e)):this.ƀkz.setItem(t,e):this.ƀo==="reverting"&&this.ƀhk===t&&(this.ƀo=t>this.ƀfv?"transitionForward":"transitionBackward",this.ƀkz.setItem(t,e)):(this.ƀo==="transitionForward"||this.ƀo==="transitionBackward")&&(this.ƀo="reverting",this.ƀkz.setItem(t,e));}ƀfb(t,e){switch(this.ƀfv!==void 0&&this.ƀfv!==t&&this.ƀfv!==e&&this.ƀht.trigger({state:it.Disappear,index:this.ƀfv}),this.ƀhk!==void 0&&this.ƀhk!==t&&this.ƀhk!==e&&this.ƀht.trigger({state:it.Disappear,index:this.ƀhk}),e!==void 0&&e!==this.ƀfv&&e!==this.ƀhk&&this.ƀht.trigger({state:it.Appear,index:e}),this.ƀo){case "idle":break;case "transitionForward":case "transitionBackward":e===void 0?(this.ƀo="idle",this.ƀfv=this.ƀhk,this.ƀhk=void 0):this.ƀfv!==t&&this.ƀfc(t,e);break;case "reverting":e===void 0?(this.ƀo="idle",this.ƀhk=void 0):this.ƀfv!==e&&this.ƀfc(t,e);break;default:{this.ƀo;throw new Error}}}ƀfc(t,e){this.ƀfv=t,this.ƀhk=e,this.ƀhv.trigger({value:0,index:this.ƀfv}),this.ƀo=this.ƀfv<this.ƀhk?"transitionForward":"transitionBackward";}ƀfg(t){let e=1;(this.ƀo==="transitionBackward"||this.ƀo==="reverting"&&this.ƀfv!==void 0&&this.ƀhk!==void 0&&this.ƀfv>this.ƀhk)&&(e=-1),(this.ƀo==="idle"||t!==0)&&this.ƀhv.trigger({value:NumberHelper.ensurePositiveZero(-e*t),index:this.ƀfv}),this.ƀhk!==void 0&&this.ƀhv.trigger({value:NumberHelper.ensurePositiveZero(e*(1-t)),index:this.ƀhk});}};var et;(function(o){o[o.Horizontal=1]="Horizontal",o[o.Vertical=2]="Vertical";})(et||(et={}));var oi=class extends d{static{h(this,"SlideInContentByIndex");}constructor(t,e){super(),this.ƀby=t,this.ƀcs="x",this.ƀbo=new Map,this.ƀhy={duration:300,animation:x.easeInOutCubic,size:new Vector(500,500),margin:20,direction:et.Horizontal,...e};let i=this.ƀhy.direction===et.Horizontal?new Vector(this.ƀhy.size.x+this.ƀhy.margin*2,this.ƀhy.size.y):new Vector(this.ƀhy.size.x,this.ƀhy.size.y+this.ƀhy.margin*2),r=new d().setPosition(this.ƀhy.direction===et.Horizontal?new Vector(-this.ƀhy.margin,0):new Vector(0,-this.ƀhy.margin),{round:false}).displayParent(this).attach(this);this.ƀcd(i,this.ƀhy.margin,this.ƀhy.direction,r),this.ƀcs=this.ƀhy.direction===et.Horizontal?"x":"y",this.ƀkz=new Re({duration:this.ƀhy.duration,animation:this.ƀhy.animation}).onStateChange((s,n)=>{if(s===it.Appear){let a=new d().displayParent(this).attach(this);this.ƀbo.set(n,a),this.ƀby({index:n,container:a});}else {let a=this.ƀbo.get(n);a&&(a.destroy(),this.ƀbo.delete(n));}}).onValueChange((s,n)=>{let a=this.ƀbo.get(n);if(a){let l={x:0,y:0};l[this.ƀcs]=i[this.ƀcs]*s+this.ƀhy.margin,a.setPosition(Vector.fromVec2(l),{round:false});}}).attach(this),this.addChildTo=r;}setIndex(t,e){return this.ƀkz.setIndex(t,e),this}ƀcd(t,e,i,r){new xt(r,new Vector(t.x,t.y),e,i).attach(this);}},Ji=class extends oi{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.ƀly=new Map;}add(t){let e=this.ƀly.get(t.x);e||(e=new Set,this.ƀly.set(t.x,e)),e.add(t.y);}has(t){let e=this.ƀly.get(t.x);return e?e.has(t.y):false}delete(t){let e=this.ƀly.get(t.x);return e?e.delete(t.y):false}};var ni=class{static{h(this,"DeltaTime");}static adjustMultiplier(t,e){return Math.pow(t,e)}};var G=class{static{h(this,"PositionToGridPositionConverter");}static areaToGridArea(t,e){return new 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 Vector(.5,.5)).multiplyNumber(e)}};var Kt=class{static{h(this,"ClosestAvailableSpaceHelper");}static findByConvertingGridSpace(t,e,i){let r=new Vector(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),s=G.areaToGridArea(e,i);if(this.ƀau(t,s))return Vector.zero;let n=t.movePositionInsideGrid(s.topLeft),a=Vector.fromTo(s.topLeft,n),l=this.find(t,n,r);if(l){let c=l.add(a),p=Vector.fromTo(s.topLeft.multiplyNumber(i),e.topLeft);return new 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 Queue(e);for(;s.notEmpty;){let n=s.pop();r.add(n);let a=new Rectangle(n,n.add(i));if(this.ƀau(t,a))return Vector.fromTo(e,n);t.getNeighborPositions(n,"orthogonal").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 Vector(r,i)))return false;return true}};var Yi=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 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)}},Ts=class{static{h(this,"PathfinderGrid");}constructor(t,e){this.ƀfa=t,this.ƀkw=e,this.ƀhx=new BinaryHeap("min"),this.ƀba=[],this.ƀhm=new Grid({size:t.size,defaultValue:void 0});let i=new Yi(this.ƀkw,0,Number.MAX_SAFE_INTEGER);this.ƀhx.add(i.pathLength,i);}get hasOpenNodes(){return this.ƀhx.size>0}getNeighbors(t,e){return this.ƀfa.getNeighborPositions(t.position,e).filter(i=>this.ƀfa.get(i)).map(i=>this.ƀhm.get(i)||this.ƀce(i))}popLowestPathCostNode(){let t=this.ƀhx.pop();return this.ƀhx.delete(t),t.closed=true,this.ƀba.push(t),t}changeNodeCost(t,e,i,r){this.ƀhx.delete(t),t.distanceFromStart=e,t.distanceToEnd=t.getDistance(i),t.parent=r,this.ƀhx.add(t.pathLength,t);}getBestClosedNode(){return this.ƀba.reduce((t,e)=>t.distanceToEnd<e.distanceToEnd?t:e)}ƀce(t){let e=new Yi(t,Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);return this.ƀhm.set(t,e),this.ƀhx.add(e.pathLength,e),e}},Zt=class{static{h(this,"PathFinder");}static findPath(t,e,i,r){let s=new Ts(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 qt=class{static{h(this,"VectorFieldPathFinder");}constructor(t,e){this.ƀlf=t,this.ƀy=e,this.ƀfj=this.ƀei(this.ƀy.size),this.ƀmh=new Grid({size:this.ƀy.size,defaultValue:this.ƀfj}),this.ƀct=new Grid({size:this.ƀy.size,defaultValue:void 0});let i=new bt,r=new Queue;for(this.ƀdv(this.ƀy.cropAreaOutsideOfTheGrid(t)).forEach(n=>{this.ƀmh.set(n,0),r.add(n);});r.notEmpty;){let n=r.pop();if(!i.has(n)){i.add(n);let a=this.ƀmh.getOrFail(n);this.ƀen(n,this.ƀy).forEach(l=>{if(!i.has(l.position)){let c=this.ƀmh.getOrFail(l.position),p=a+l.distance;this.ƀy.getOrFail(l.position)&&p<c&&(this.ƀmh.set(l.position,p),r.add(l.position));}});}}}getDirectionToTarget(t){if(!t.isInsideRectangle(this.ƀlf)){if(t=this.ƀmh.movePositionInsideGrid(t),this.ƀct.has(t))return this.ƀct.get(t);{let e=this.ƀen(t,this.ƀy),i;return this.ƀmh.getOrFail(t)>=this.ƀfj?e.some(s=>this.ƀy.get(s.position))&&(e.some(n=>!this.ƀy.get(n.position))?i=this.ƀec(e):i=this.ƀdx(t,e)):i=this.ƀdx(t,e),this.ƀct.set(t,i),i}}}ƀec(t){let e=t.filter(i=>this.ƀy.get(i.position)).map(i=>i.direction.radian);return Radian.getAverage(...e)}ƀdx(t,e){let i=e.filter(r=>this.ƀmh.getOrFail(r.position)<this.ƀfj).reduce((r,s)=>{let n=this.ƀmh.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.ƀfj}).bestDirections;return this.ƀet(i,t)}ƀet(t,e){if(t.length>0){let i=t.reduce((r,s)=>r.add(s),Vector.zero);if(i.isZero()||!this.ƀgb(e,i))return Random.pickRandomElement(t).radian;if(t.length>=1)return i.radian}}ƀgb(t,e){let i=t.add(this.ƀlz(e));return this.ƀy.isPointWithinBounds(i)&&this.ƀy.getOrFail(i)}ƀen(t,e){return this.ƀmh.getNeighborDirections(t,"all").map(i=>({position:t.add(i),direction:i,distance:i.x!==0&&i.y!==0?14:10}))}ƀdv(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 Vector(r,i));return e}ƀlz(t){let e=t.normalize().round();return new Vector(e.x,e.y)}ƀei(t){return (t.x+t.y)*20}};var P=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.ƀdw(t),i=o.context.createBufferSource();return i.buffer=e,i}static ƀdw(t){let e=this.ƀam.get(t);if(!e)throw new Error(`Audio: Sound with id ${t} was not loaded.`);return e}};E.onHardReset.subscribe(()=>{P.context=new AudioContext,P.ƀam.clear();}).attachToRoot();var X=1e3,Y=class o{static{h(this,"Audio");}static ƀkb(){return this.ƀfy=new o,this.ƀfy}constructor(){this.ƀgx=P.context.createGain(),this.ƀgw=P.context.createGain(),this.ƀhj=P.context.createGain(),this.ƀkk=P.context.createGain(),this.ƀgx.connect(P.context.destination),this.ƀgw.connect(this.ƀgx),this.ƀhj.connect(this.ƀgw),this.ƀkk.connect(this.ƀgw),this.ƀgy=new I(this.ƀgx.gain,"value",{duration:500*2,animation:x.easeIn,reAnimateHandling:C.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀgy.set({value:0});}setVolumes(t){this.ƀgw.gain.value=t.master,this.ƀhj.gain.value=t.music,this.ƀkk.gain.value=t.sound;}appear(t,e="ease"){switch(e){case "ease":return this.ƀgy.set({value:t?0:1}),this.ƀgy.animate({value:t?1:0}).chainToRoot();case "instant":return this.ƀgy.set({value:t?1:0}),SingleEvent.instant();default:{throw new Error}}}};E.onHardReset.subscribe(()=>{Y.ƀkb();}).attachToRoot();var Os=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},ot=class extends Q(){static{h(this,"CameraGateway");}};ot=Os([u()],ot);var Ds=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=Ds([u()],Pt);var Ki;(function(o){o.BackgroundScreen="backgroundScreen",o.Background="background",o.Main="main",o.Foreground="foreground",o.ForegroundScreen="foregroundScreen";})(Ki||(Ki={}));var nt;(function(o){o[o.Instant=1]="Instant",o[o.EaseInOut=2]="EaseInOut",o[o.EaseOut=3]="EaseOut";})(nt||(nt={}));var Qt=class{static{h(this,"Camera");}get position(){return this.ƀap.getCameraPosition()}constructor(){this.ƀap=S.get(ot),this.ƀat=S.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",i=0){return this.ƀat.appear(t,e,i)}screenPositonToStagePosition(t){return this.ƀat.screenPositonToStagePosition(t)}};var g=class o{static{h(this,"Game");}static get instance(){return this.ƀfy}static{this.pause=Reducer.createOr();}static{this.freeze=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 ActionLib.all([this.audio.appear(t,i),this.camera.appear(t,r,i!=="instant"?0:500)]).mapToVoid().chainToRoot()}static get time(){return m.ƀlm}static get setupOptions(){return this.ƀke}constructor(t){if(this.ƀjq=new Variable(Vector.zero),this.screenSize=this.ƀjq.notifier,this.ƀjr=new Variable(Vector.zero),this.screenSizeCenter=this.ƀjr.notifier,this.devMode=false,o.ƀfy)throw new Error("There can be only one Game instance!");this.ƀbk={screenResolution:void 0,maxScreenResolution:void 0,devMode:false,backgroundColor:ColorHelper.black,antialias:false,resolution:1,...t},this.devMode=this.ƀbk.devMode||false;let e=JsonHelper.removeUndefinedProperties({backgroundColor:this.ƀbk.backgroundColor,autoStart:false,antialias:this.ƀbk.antialias,resolution:this.ƀbk.resolution,width:this.ƀbk.screenResolution?.width,height:this.ƀbk.screenResolution?.height});this.ƀir=new N.Application(e);let i=o.pause.effect(false).attachToRoot();o.freeze.subscribe(r=>{i.update(r),r?P.context.suspend():P.context.resume();}).attachToRoot();}async setup(t){o.ƀke=t;let e=document.body.appendChild(this.ƀir.view);this.ƀka(e),await Promise.all([M.loadGameAssets(t.spriteAssetDefinitions),M.loadGameAssets(t.fontAssetDefinitions),P.load(t.soundAssetDefinitions)]),o.ƀfy=this,this.renderer=this.ƀir.renderer,globalThis.ƀa=this.ƀir,this.ƀfe(),o.ƀao=new Qt,o.ƀx=Y.ƀkb(),this.ƀir.start(),this.ƀir.ticker.add(()=>{o.freeze.value||m.triggerUpdateTick(this.ƀir.ticker.deltaMS);});}setResolution(t){if(this.ƀir.renderer.resolution!==t){this.ƀir.renderer.resolution=t;let e=this.ƀer();this.ƀir.renderer.resize(e.x,e.y);}}ƀfe(){this.ƀdb(),this.ƀjz(),window.addEventListener("resize",t=>{this.ƀdb(),this.ƀjz();});}ƀdb(){let t=this.ƀer();(t.x!==this.ƀir.screen.width||t.y!==this.ƀir.screen.height)&&this.ƀir.renderer.resize(t.x,t.y);}ƀjz(){let t=new Vector(this.ƀir.screen.width,this.ƀir.screen.height);this.ƀjq.value=t,this.ƀjr.value=t.multiplyNumber(.5).round();}ƀer(){let t=this.ƀbk.screenResolution?.width??window.innerWidth,e=this.ƀbk.screenResolution?.height??window.innerHeight;return this.ƀbk.maxScreenResolution&&(t=Math.min(t,this.ƀbk.maxScreenResolution.width),e=Math.min(e,this.ƀbk.maxScreenResolution.height)),new Vector(t,e)}ƀka(t){this.ƀbk.maxScreenResolution&&(t.style.maxWidth=`${this.ƀbk.maxScreenResolution?.width}px`,t.style.maxHeight=`${this.ƀbk.maxScreenResolution?.height}px`),t.style.width="100%",t.style.height="100%";}};var te=class o extends IDAttachable{static{h(this,"Sound");}static createByName(t,e){let i=g.setupOptions.soundDefinitions[t];if(!i)throw new Error(`Sound: Could not find sound definition with name ${t}.`);return new o(i,e)}get volume(){return this.ƀdr.gain.value}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀdr.gain.value=t,this}constructor(t,e){super(),this.ƀkl=t,this.ƀdr=P.context.createGain(),this.ƀdr.connect(Y.ƀfy.ƀkk),this.ƀfi=this.ƀdr,e?.volume!==void 0&&(this.volume=e.volume),this.ƀix(e?.time??0);}destroy(){this.destroyed||(super.destroy(),this.ƀlb(),this.ƀdr?.disconnect());}ƀlw(){this.ƀfi.disconnect(),this.ƀfi.connect(Y.ƀfy.ƀhj);}ƀix(t){this.ƀlb();let e=this.ƀkl.loop;if(this.ƀku=NumberHelper.clamp(t,0,e?e.to:this.ƀkl.duration),e){let i=e.from,r=e.to;this.ƀiy({soundID:this.ƀkl.id,start:this.ƀku,end:this.ƀku<i?i:r,loop:false,onComplete:h(()=>{this.ƀko.disconnect(),this.ƀiy({soundID:this.ƀkl.id,start:i,end:r,loop:true});},"onComplete")});}else this.ƀiy({soundID:this.ƀkl.id,start:this.ƀku,end:void 0,loop:false,onComplete:h(()=>this.destroy(),"onComplete")});}ƀlb(){this.ƀko&&(this.ƀko.onended=null,this.ƀko.stop(),this.ƀko.disconnect());}ƀiy(t){this.ƀko=P.createSource(t.soundID),this.ƀko.connect(this.ƀdr),t.onComplete&&(this.ƀko.onended=t.onComplete),t.loop?(this.ƀko.loop=true,this.ƀko.loopStart=t.start,this.ƀko.loopEnd=t.end??this.ƀko.buffer.duration,this.ƀko.start(0,t.start)):this.ƀko.start(0,t.start,t.end?t.end-t.start:void 0);}};var Ns=800,Ce=-128,at=class o extends te{static{h(this,"AdvancedSound");}static createByName(t,e){let i=g.setupOptions.soundDefinitions[t];if(!i)throw new Error(`AdvancedSound: Could not find sound definition with name ${t}.`);return new o(i,e)}constructor(t,e){super(t,e),this.ƀlm=new Variable(0),this.time=this.ƀlm.notifier,this.ƀkx=P.context.currentTime-this.ƀku,this.ƀlm.value=this.ƀku,m.beforeSceneUpdateAction.subscribe(()=>{this.ƀlm.value=P.context.currentTime-this.ƀkx;}).attach(this),this.ƀfi.disconnect(),this.ƀkc(e?.fade?NumberHelper.clamp(e.fade,0,1):0),this.ƀkd(e?.muffle?NumberHelper.clamp(e.muffle,0,1):0),this.ƀfi.connect(Y.ƀfy.ƀkk);}ƀkc(t=0){this.ƀdk=P.context.createGain(),this.ƀdk.gain.value=1-t,this.ƀdj=new I(this.ƀdk.gain,"value",{duration:500,animation:x.lineer,reAnimateHandling:C.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀfi.connect(this.ƀdk),this.ƀfi=this.ƀdk;}ƀkd(t=0){this.ƀhh=P.context.createBiquadFilter(),this.ƀhh.type="highshelf",this.ƀhh.frequency.value=Ns,this.ƀhh.gain.value=t*Ce,this.ƀhi=new I(this.ƀhh.gain,"value",{duration:500,animation:x.lineer,reAnimateHandling:C.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀfi.connect(this.ƀhh),this.ƀfi=this.ƀhh;}close(){return this.ƀbb?this.onDestroy():(this.ƀbb=true,this.fade(1,X).notIdle().chain(this).tap(()=>this.destroy()).chainToRoot())}notifyOnTime(t){return this.time.value>t?SingleEvent.createDestroyed():SingleEvent.create(e=>{let i=this.time.filter(r=>r>=t).tap(()=>e()).attach(this);return ()=>i.destroy()})}setFade(t){t=NumberHelper.clamp(t,0,1),this.ƀdj.set({value:1-t});}fade(t,e=500){t=NumberHelper.clamp(t,0,1);let i=t>1-this.ƀdk.gain.value;return e===0?(this.ƀdj.set({value:1-t}),SingleEvent.instant()):this.ƀdj.animate({value:1-t},{duration:e,animation:i?x.easeOut:x.easeIn}).chain(this)}setMuffle(t){t=NumberHelper.clamp(t,0,1),this.ƀhi.set({value:t*Ce});}muffle(t,e=500){return t=NumberHelper.clamp(t,0,1),e===0?(this.ƀhi.set({value:t*Ce}),SingleEvent.instant()):this.ƀhi.animate({value:t*Ce},{duration:e}).chain(this)}destroy(){this.destroyed||(this.ƀdk.disconnect(),this.ƀhh.disconnect()),super.destroy();}};var ee=class o extends IDAttachable{static{h(this,"Music");}static createByName(t,e){let i=g.setupOptions.soundDefinitions[t];if(!i)throw new Error(`AdvancedSound: Could not find sound definition with name ${t}.`);return new o(i,e)}get time(){switch(this.ƀkn.value.type){case "paused":return this.ƀkn.value.value.time;case "playing":return this.ƀkn.value.value.time.value;default:{this.ƀkn.value;throw new Error}}}get volume(){return this.ƀkn.value.value.volume}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀkn.value.value.volume=t,this}constructor(t,e){super(),this.ƀhy={stopPlayingOnPause:true,...e},this.ƀkm=t.id;let i;if(this.ƀhy.stopPlayingOnPause&&g.pause.value)i={type:"paused",value:{time:0,volume:1}};else {let r=new at(t,this.ƀhy).attach(this);r.ƀlw(),i={type:"playing",value:r};}this.ƀkn=new Variable(i),this.ƀhy.stopPlayingOnPause&&(this.ƀie=g.pause.subscribe(r=>this.ƀfd(r)).attach(this));}notifyOnTime(t){return SingleEvent.create(e=>{let i=this.ƀkn.asyncDropOngoing((r,s)=>{switch(r.type){case "paused":s.drop();break;case "playing":return r.value.notifyOnTime(t);default:{throw new Error}}}).toSingleEvent().tap(()=>e()).attach(this);return ()=>i.destroy()})}close(){return this.ƀbb?this.onDestroy():(this.ƀbb=true,this.ƀie?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀkn.value.type==="playing"?this.ƀkn.value.value.close():SingleEvent.instant(),this.ƀdl?.onDestroy()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀfd(t){if(t){if(this.ƀkn.value.type==="playing"){let e=this.ƀkn.value.value;this.ƀkn.value={type:"paused",value:{time:e.time.value,volume:e.volume}},this.ƀdl=e,ActionLib.all([e.fade(1,X),e.muffle(1,X)]).tap(()=>{this.ƀdl=void 0,e.destroy();}).attach(this);}}else if(this.ƀkn.value.type==="paused"){let{volume:e,time:i}=this.ƀkn.value.value,r=at.createByName(this.ƀkm,{volume:e,time:i,fade:1,muffle:1}).attach(this);r.ƀlw(),ActionLib.all([r.fade(0,X),r.muffle(0,X)]).attach(this),this.ƀkn.value={type:"playing",value:r};}}};var li=class extends IDAttachable{static{h(this,"MusicPlayer");}get time(){return this.ƀiz?this.ƀiz.time:0}get volume(){return this.ƀmg}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀmg=t,this.ƀiz&&(this.ƀiz.volume=t),this.ƀid&&(this.ƀid.volume=t),this}constructor(t){super(),this.ƀmg=1,this.ƀhy={stopPlayingOnPause:true,playWhenPaused:void 0,volume:1,...t},this.ƀmg=this.ƀhy.volume,this.ƀhy.playWhenPaused&&this.ƀkf(this.ƀhy.playWhenPaused);}play(t){if(this.ƀbb)throw new Error("Play is called while music player is destroyed.");return this.ƀco=t,SingleEvent.instant().async(()=>{let e=this.ƀiz;if(e)return this.ƀiz=void 0,e.close()}).map(()=>{if(this.ƀco===t)return this.ƀiz=ee.createByName(t,{stopPlayingOnPause:this.ƀhy.stopPlayingOnPause,volume:this.ƀmg}).attach(this),this.ƀiz}).chain(this)}stop(){return SingleEvent.instant().async(()=>{let t=this.ƀiz;if(t)return t.close().tap(()=>{t===this.ƀiz&&(this.ƀiz=void 0);})}).chain(this)}close(){return this.ƀbb?this.onDestroy():(this.ƀbb=true,this.ƀie?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀiz?.close()??SingleEvent.instant(),this.ƀid?.close()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀkf(t){this.ƀie=g.pause.toSequence().asyncDropOngoing(e=>e&&m.wait(X).map(()=>e)).tap(e=>{if(e)this.ƀid=at.createByName(t,{fade:1,volume:this.ƀmg}).attach(this),this.ƀid.fade(0);else if(this.ƀid){let i=this.ƀid;this.ƀid.fade(1).tap(()=>i.destroy()).attach(this),this.ƀid=void 0;}}).attach(this);}};var ci=class extends d{static{h(this,"Placeholder");}constructor(t){super(),this.ƀiu=new N.Graphics,this.ƀiu.beginFill(0,1e-9),this.ƀiu.drawRect(0,0,t.x,t.y),this.ƀiu.endFill(),this.ƀis.addChild(this.ƀiu);}destroy(){this.destroyed||(super.destroy(),this.ƀiu.destroy());}};var _t=class{static{h(this,"TextStyleConverter");}static getPixiTextStyle(t){let e={color: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:Radian.get60,distance:10,color:ColorHelper.black,alpha:.5,...i};r={dropShadow:true,dropShadowBlur:s.blur,dropShadowAngle:s.angle.value,dropShadowDistance:s.distance,dropShadowColor:ColorHelper.rgbToHex(s.color),dropShadowAlpha:s.alpha};}return JsonHelper.removeUndefinedProperties({fontFamily:e.fontFamily,fill: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 Me=class{static{h(this,"RichTextDataInConverter");}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),r=RichTextSeparator.process(t,i),s=this.ƀfu(r,e),n=this.ƀs(s);return this.ƀkp(n)}static ƀfu(t,e){let i=new Map,r=new Map,s=h((a,l)=>{if(r.has(l))return r.get(l);let c=_t.getPixiTextStyle(a);return r.set(l,c),c},"GetPixiStyle");return t.map(a=>{let{style:l,cacheKey:c}=this.ƀea(a.tags,e,i),p=s(l,c),y=N.TextMetrics.measureText(" ",new N.TextStyle(p),false);return {text:a.text,cacheKey:c,style:l,pixiStyle:p,spaceWidth:y.width}})}static ƀea(t,e,i){let r=t.join("+");if(i.has(r))return {style:i.get(r),cacheKey:r};let s=this.ƀbf(t,e);return i.set(r,s),{style:s,cacheKey:r}}static ƀbf(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 ƀkp(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.ƀkq(s.text).map(a=>{let l=new N.TextStyle(s.pixiStyle),c=N.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 ƀkq(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 Be=class{static{h(this,"RichTextTypewriter");}get lineIsEmpty(){return this.ƀcm.length===0}get remainingWidth(){return this.ƀmi-this.ƀcp}constructor(t,e){this.ƀmi=t,this.ƀgm=[],this.ƀcm=[],this.ƀcp=0,this.ƀgl=new Vector(0,0),this.ƀcn=0;let i={rectangleCutOption:void 0,horizontalAlignment:"left",verticalAlignment:"bottom",...e};if(this.ƀfm=i.horizontalAlignment,this.ƀma=i.verticalAlignment,i.rectangleCutOption){if(i.rectangleCutOption.position.x<0||i.rectangleCutOption.position.x>=this.ƀmi||i.rectangleCutOption.position.y<0)throw new Error("Rectangle cut position is out of bounds");this.ƀcq={direction:i.rectangleCutOption.direction,rectangle:this.ƀbs(i.rectangleCutOption)};}}isSpaceAvailable(t){let e=Math.max(this.ƀcn,t.y),i=this.ƀej(this.ƀgl.y,this.ƀgl.y+e);return this.ƀcp+t.x<=i}insertWord(t){let e=Math.max(this.ƀcn,t.style.height);if(this.ƀcm.length===0){let i=this.ƀek(this.ƀgl.y,this.ƀgl.y+e);this.ƀgl=new Vector(i,this.ƀgl.y),this.ƀcp=this.ƀgl.x;}this.ƀcm.push({chunk:t,position:new Vector(this.ƀcp,this.ƀgl.y)}),this.ƀcn=e,this.ƀcp+=t.style.width;}newLine(){let t=this.ƀgl.y+this.ƀcn,e=this.ƀek(t,t);this.ƀdn(),this.ƀgl=new Vector(e,t),this.ƀcp=this.ƀgl.x,this.ƀcn=0;}print(){return this.ƀdn(),this.ƀgm}ƀdn(){this.ƀcm.length>0&&(this.ƀgm.push(this.ƀg(this.ƀcm)),this.ƀcm=[]);}ƀg(t){return t=this.ƀmc(t),t=this.ƀfo(t),t}ƀfo(t){if(this.ƀfm==="left")return t;let e=this.ƀgl.y+this.ƀcn,i=this.ƀek(this.ƀgl.y,e),s=this.ƀej(this.ƀgl.y,e)-i,n=Math.min(s,t.reduce((l,c)=>l+c.chunk.style.width,0)),a;return this.ƀfm==="center"?a=(s-n)/2:a=s-n,t.map(l=>(l={chunk:l.chunk,position:new Vector(l.position.x+a,l.position.y)},l))}ƀmc(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.ƀma){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.ƀma;throw new Error}}return r={chunk:r.chunk,position:new Vector(r.position.x,r.position.y+s)},r})}ƀek(t,e){return this.ƀcq&&(this.ƀcq.direction==="topLeft"||this.ƀcq.direction==="bottomLeft")&&(this.ƀcq.rectangle.isPointInside(new Vector(0,t),{includeEdges:false})||this.ƀcq.rectangle.isPointInside(new Vector(0,e),{includeEdges:false}))?this.ƀcq.rectangle.bottomRight.x:0}ƀej(t,e){return this.ƀcq&&(this.ƀcq.direction==="topRight"||this.ƀcq.direction==="bottomRight")&&(this.ƀcq.rectangle.isPointInside(new Vector(this.ƀmi,t),{includeEdges:false})||this.ƀcq.rectangle.isPointInside(new Vector(this.ƀmi,e),{includeEdges:false}))?this.ƀcq.rectangle.topLeft.x:this.ƀmi}ƀbs(t){let e,i;switch(t.direction){case "topRight":e=new Vector(t.position.x,-1/0),i=new Vector(1/0,t.position.y);break;case "topLeft":e=new Vector(-1/0,-1/0),i=t.position;break;case "bottomRight":e=t.position,i=new Vector(1/0,1/0);break;case "bottomLeft":e=new Vector(-1/0,t.position.y),i=new Vector(t.position.x,1/0);break;default:{t.direction;throw new Error}}return new Rectangle(e,i)}};var Ge=class{static{h(this,"ConsistentSpaceTextWrapper");}static wrapText(t,e){return t.forEach(i=>{i.forEach((r,s)=>{if(e.isSpaceAvailable(new Vector(r.style.width,r.style.height)))if(r.whitespace&&s===i.length-2){let n=i[i.length-1];e.isSpaceAvailable(new Vector(n.style.width+r.style.width,n.style.height))?e.insertWord(r):this.ƀmj(r,e);}else e.insertWord(r);else e.lineIsEmpty?e.insertWord(r):r.whitespace?this.ƀmj(r,e):(e.newLine(),e.insertWord(r));}),e.newLine();}),e.print()}static ƀmj(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 _e=class{static{h(this,"RichTextDataOutConverter");}static process(t){return t=this.ƀhc(t),t=this.ƀlq(t),this.ƀaw(t)}static ƀhc(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 ƀlq(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 re=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=Me.process(t,e),r=JsonHelper.removeUndefinedProperties({rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),s=new Be(e.default.wordWrapWidth??1/0,r),n=Ge.wrapText(i,s);return _e.process(n)}};var Ks=1,ir=1/Ks,se=class extends d{static{h(this,"Text");}get ƀlj(){if(!this.ƀlk){let t=new N.TextStyle(this.ƀiw);this.ƀlk=N.TextMetrics.measureText(this.ƀli,t);}return this.ƀlk}get ascent(){return this.ƀlj.fontProperties.ascent}constructor(t,e){super(),this.ƀiw=_t.getPixiTextStyle(e),this.setText(t);}destroy(){this.destroyed||(super.destroy(),!this.ƀiv.destroyed&&this.ƀiv.destroy());}setAnchor(t){return this.anchor=t,this}get anchor(){return new Vector(this.ƀiv.anchor.x,this.ƀiv.anchor.y)}set anchor(t){this.ƀi=t,this.ƀiv.anchor.set(t.x,t.y);}setText(t){return this.ƀli!==t&&(this.ƀli=t,this.ƀjg()),this}setColor(t){let e=ColorHelper.rgbToHex(t);return this.ƀiw.fill!==e&&(this.ƀiw.fill=e,this.ƀjg()),this}ƀjg(){this.ƀiv?.destroy(),this.ƀld?.destroy(),this.ƀld=void 0,this.ƀlk=void 0;let t=new N.TextStyle(this.ƀiw);this.ƀiv=new N.Text(this.ƀli,t),this.ƀjj(),this.ƀi&&this.ƀiv.anchor.set(this.ƀi.x,this.ƀi.y),this.ƀiv.scale.set(ir,ir),this.ƀis.addChild(this.ƀiv),this.ƀiw.lineThrough&&(this.ƀld=this.ƀe(this.ƀiv,this.ƀiw.fill),this.ƀis.addChild(this.ƀld));}ƀjj(){let t=N.TextMetrics.measureText(this.ƀli,new N.TextStyle({...this.ƀiw,dropShadow:false,dropShadowAlpha:0,dropShadowBlur:0,dropShadowDistance:0}));this.ƀiv.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=N.TextMetrics.measureText(t.text,t.style),r=Math.max(1,Math.round(i.lineHeight*.07)),s=r%2*.5,n=new N.Graphics;n.lineStyle(r,e);let a=0;return i.lines.forEach((l,c)=>{let p=N.TextMetrics.measureText(l,t.style),y=Math.round(a+(p.fontProperties.ascent-p.fontProperties.descent)*.6+p.fontProperties.descent)+s,w=0;t.style.align==="center"?w=0+(t.width-p.width)*.5:t.style.align==="right"&&(w=0+t.width-p.width),w=Math.floor(w),n.moveTo(Math.floor(w),y),n.lineTo(Math.floor(w+p.width),y),a+=p.lineHeight;}),n.endFill(),n}};var pi=class extends d{static{h(this,"RichText");}constructor(t,e){super(),re.process(t,e).forEach(r=>new se(r.text,r.style).setPosition(r.position).displayParent(this).attach(this));}};var ui=class extends d{static{h(this,"UpdatableContainer");}},di=class extends d{static{h(this,"DisplayObjectArray");}constructor(t,e){super(),this.ƀby=t,this.ƀcu=new Map,this.ƀhy={trackBy:h((i,r)=>r,"trackBy"),positioning:{direction:"vertical",spacing:0},...e};}set(t){let e=new Set(this.ƀcu.keys()),i=0;t.forEach((r,s)=>{let n=this.ƀhy.trackBy(r,s),a;this.ƀcu.has(n)?(a=this.ƀcu.get(n),e.delete(n),a.update(r)):(a=this.ƀby(r).displayParent(this).attach(this),this.ƀcu.set(n,a)),this.ƀhy.positioning.direction==="horizontal"?(a.x=i,i+=a.size.x+this.ƀhy.positioning.spacing):(a.y=i,i+=a.size.y+this.ƀhy.positioning.spacing);}),e.forEach(r=>{this.ƀcu.get(r).destroy(),this.ƀcu.delete(r);});}};var oe=class o extends d{static{h(this,"MenuUI");}static{this.ƀga=Reducer.createExistenceChecker();}static{this.isAnyMenuTransitioning=this.ƀga.notifier;}constructor(t,e){super(),this.ƀhq=new SingleAction,this.onCreate=this.ƀhq.notifier,this.ƀhs=new SingleAction,this.onOpen=this.ƀhs.notifier,this.ƀhn=new SingleAction,this.onClose=this.ƀhn.notifier,this.ƀbb=false;let i={closeOnBackgroundClick:true,appearAnimationDuration:150,backgroundDarkeningRatio:.3,...e};this.setAlpha(0),this.ƀp=new I(this,"alpha",{animation:x.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:C.CompletePrevious,completionHandling:T.StayInCurrentState});let r=R.createRectangle(new Vector(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(i.backgroundDarkeningRatio).setInteractive(true).displayParent(this).attach(this);this.ƀha=J.createByName(t).setPosition(new Vector(0,0)).setInteractive(true).displayParent(this).attach(this),g.instance.screenSize.subscribe(n=>{r.aspectRatio=n.x/n.y,r.scale=Math.max(n.x,n.y),r.setPosition(Vector.zero,{holdFrom:Vector.half}),this.setPosition(n.multiplyNumber(.5));}).attach(this),this.ƀhq.resolve();let s=o.ƀga.effect().attach(this);this.ƀp.animate({alpha:1}).chain(this).tap(()=>{this.ƀhs.resolve(),s.destroy(),i.closeOnBackgroundClick&&r.on(Ct.Click).take(1).tap(()=>this.close()).attach(this);}).attachToRoot();}getBoundingMask(){return this.ƀha.getBoundingMask()}close(){if(!this.ƀbb){this.ƀbb=true;let t=o.ƀga.effect().attach(this);this.ƀp.animate({alpha:0}).chain(this).map(()=>{this.ƀhn.resolve(),t.destroy(),this.destroy();}).chainToRoot();}return this.onClose.toSingleEvent()}};var mi=class extends gt{static{h(this,"MenuEntity");}static subscribeIsOpen(){return ActionLib.merge(this.continuesSubscription().map(t=>t.type==="open"),SingleEvent.instant(this.getInstance()!==void 0))}constructor(t){super(),this.ƀhy=t,queueMicrotask(()=>{if(!this.ƀhb)throw new Error("MenuEntity: MenuEntity has to have a MenuView.")});}ƀji(t){this.ƀhb=t,this.ƀhb.onClose.subscribe(()=>this.destroy()).attach(this);}onCreate(){return this.ƀhb.onCreate.toSingleEvent()}onOpen(){return this.ƀhb.onOpen.toSingleEvent()}onClose(){return this.ƀhb.onClose.toSingleEvent()}close(){return this.ƀhb.close()}};var yi=class extends U{static{h(this,"MenuView");}constructor(t,e,i){super();let r=JsonHelper.removeUndefinedProperties({appearAnimationDuration:i.appearAnimationDuration,backgroundDarkeningRatio:i.backgroundDarkeningRatio,closeOnBackgroundClick:t.ƀhy.closeOnBackgroundClick}),s=new oe(e,r).displayParent(g.camera.layers.foregroundScreen).attach(this);t.ƀji(s);let n=new SingleAction;s.onCreate.subscribe(()=>n.resolve(s)).attach(this),this.onCreate=n.notifier,this.onOpen=s.onOpen.notifier,this.onClose=s.onClose.notifier;}};var so=.65,oo=.01,Ve=class{static{h(this,"SmoothScroller");}get scrollHeight(){return this.ƀjs}get contentSize(){return this.ƀbm.size.ceil()}constructor(t,e,i,r){this.ƀbm=t,this.ƀv=e,this.ƀib=i,this.ƀkj=r,this.ƀfx=false,this.ƀjs=e-i*2,this.ƀbm.y=i,this.ƀle=i;}onWheel(t){this.setTarget(this.ƀle-t*so);}scrollToTop(){this.setTarget(1/0);}scrollToBottom(){this.setTarget(-1/0);}setTarget(t){this.ƀle=NumberHelper.clamp(t,this.ƀv-this.ƀib-this.contentSize.y,this.ƀib);}jumpToTarget(){this.ƀbm.y=this.ƀle;}update(t){let e=this.contentSize;if(e.y<=this.ƀjs){switch(this.ƀkj){case "start":this.ƀle=this.ƀib;break;case "center":this.ƀle=(this.ƀv-e.y)*.5;break;case "end":this.ƀle=this.ƀv-e.y-this.ƀib;break;default:{this.ƀkj;throw new Error}}this.ƀfx||(this.ƀbm.y=this.ƀle);}this.ƀfx=true;let i=this.ƀle-this.ƀbm.y;this.ƀbm.y=this.ƀbm.y+i*oo*t;}};var ao=15,gi=class extends d{static{h(this,"ScrollAreaUI");}get contentAreaSize(){return this.ƀbn}get contentSize(){return this.ƀjt.contentSize}constructor(t,e={}){super();let i={padding:ao,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 d().displayParent(this).attach(this);new xt(r,t,i.padding).attach(this);let s=new N.Graphics;s.beginFill(0,1e-9),s.drawRect(0,0,t.x,t.y),s.endFill(),r.ƀis.addChild(s);let n=new d().displayParent(r).attach(this);this.ƀjt=new Ve(n,t.y,i.padding,i.smallContentAlign),this.ƀbn=new Vector(t.x,this.ƀjt.scrollHeight),s.eventMode="dynamic",s.addEventListener("wheel",a=>{this.ƀjt.onWheel(a.deltaY);}),n.setInteractive(true),n.ƀis.addEventListener("wheel",a=>{this.ƀjt.onWheel(a.deltaY);}),m.afterSceneUpdateAction.subscribe(a=>this.ƀjt.update(a.delta)).attach(this),this.addChildTo=n;}scrollToTop(t){this.ƀjt.scrollToTop(),t?.instant&&this.ƀjt.jumpToTarget();}scrollToBottom(t){this.ƀjt.scrollToBottom(),t?.instant&&this.ƀjt.jumpToTarget();}};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},F=class extends gt{static{h(this,"CameraEntity");}constructor(){super(...arguments),this.position=new Variable(Vector.zero),this.offset=new Variable(Vector.zero),this.targetPosition=new Variable(void 0),this.focusingNewTargetInfo=new Variable(void 0);}};F=ho([yt()],F);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},co=1500,Le=class{static{h(this,"CameraService");}createCamera(){return new F().attachToRoot()}getCameraPosition(){let t=F.getInstanceOrFail();return Vector.fromTo(t.offset.value,t.position.value)}setPosition(t){let e=F.getInstanceOrFail();e.targetPosition.value=t;}setTransition(t){let e=F.getInstanceOrFail();e.focusingNewTargetInfo.value={time:g.time,duration:t?.duration??co,position:e.position.value,roundPosition:t?.roundPosition??false,roundPositionThreshold:t?.roundPositionThreshold??0,focusingAnimation:t?.animation??nt.Instant};}update(t,e){let i=F.getInstanceOrFail(),r=i.targetPosition.value;r&&(i.focusingNewTargetInfo.value?this.ƀgf(i,r,t):i.position.value=r);}ƀgf(t,e,i){let r=t.focusingNewTargetInfo.value;if(r.focusingAnimation===nt.Instant)this.ƀbg(t,e);else {let s=(i-r.time)/r.duration;if(s>=1)this.ƀbg(t,e);else {let n;r.focusingAnimation===nt.EaseInOut?n=V.easeInOut(s):r.focusingAnimation===nt.EaseOut?n=V.easeOut(s):n=1;let a=r.position.lerp(e,n);r.roundPosition&&(Math.abs(a.x-r.position.x)>=r.roundPositionThreshold&&(a=new Vector(Math.round(a.x),a.y)),Math.abs(a.y-r.position.y)>=r.roundPositionThreshold&&(a=new Vector(a.x,Math.round(a.y)))),t.position.value=a;}}}ƀbg(t,e){t.position.value=e,t.focusingNewTargetInfo.value=void 0;}};Le=lo([u()],Le);var po=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},uo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},xi=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()}};xi=po([tt(ot),uo("design:paramtypes",[Le])],xi);var He=class{static{h(this,"PositionConversionHelper");}static includeScaleInScreenPosition(t,e,i){if(e!==1){let r=Vector.fromTo(i,t).multiplyNumber(1/e);return i.add(r)}else return t}};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},yo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Et=class extends U{static{h(this,"CameraView");}constructor(t){super(),this.ƀdd=t,this.ƀks=(()=>{let e=new d().attach(this);return e.ƀis=g.instance.ƀir.stage,e})(),this.ƀjn=new d().setAlpha(0).displayParent(this.ƀks).attach(this),this.ƀae=R.createRectangle(new Vector(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(0).displayParent(this.ƀks).attach(this),this.ƀac=new d().displayParent(this.ƀjn).attach(this),this.ƀar=new d().displayParent(this.ƀjn).attach(this),this.ƀdq=new d().setSortableChildren(true).displayParent(this.ƀjn).attach(this),this.ƀaq=new d().setSortableChildren(true).displayParent(this.ƀar).attach(this),this.ƀdp=new d().setSortableChildren(true).setZIndex(20).displayParent(this.ƀaq).attach(this),this.ƀgs=new d().setSortableChildren(true).setZIndex(10).displayParent(this.ƀaq).attach(this),this.ƀab=new d().setZIndex(0).displayParent(this.ƀaq).attach(this),this.ƀh=new I(this.ƀjn,"alpha",{duration:500,animation:x.easeInOutCubic,reAnimateHandling:C.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀaf=new I(this.ƀae,"alpha",{duration:500,animation:x.easeInOutCubic,reAnimateHandling:C.CompletePrevious,completionHandling:T.StayInCurrentState}),g.instance.screenSize.subscribe(e=>{this.ƀae.aspectRatio=e.x/e.y,this.ƀae.scale=Math.max(e.x,e.y),this.ƀae.setPosition(Vector.zero,{holdFrom:Vector.zero});}).attach(this),this.ƀdd.position.subscribe(e=>{this.ƀaq.position=this.ƀbt(e);}).attach(this),this.ƀdd.offset.subscribe(e=>{this.ƀar.position=e;}).attach(this),this.ƀaf.set({alpha:0}),this.ƀh.set({alpha:0});}screenPositonToStagePosition(t){let e=He.includeScaleInScreenPosition(t,this.ƀks.scale,g.instance.screenSizeCenter.value);return new 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.ƀgs.id,foreground:this.ƀdp.id,foregroundScreen:this.ƀdq.id}}appear(t,e,i){switch(e){case "alpha":return this.ƀaf.set({alpha:0}),this.ƀh.set({alpha:t?0:1}),SingleEvent.instant().async(()=>i>0&&m.wait(i),"tap").async(()=>this.ƀh.animate({alpha:t?1:0})).chain(this);case "pureBlack":return this.ƀh.set({alpha:1}),this.ƀaf.set({alpha:t?1:0}),SingleEvent.instant().async(()=>i>0&&m.wait(i),"tap").async(()=>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}),SingleEvent.instant();default:{throw new Error}}}ƀbt(t){return Vector.fromTo(t,g.instance.screenSizeCenter.value)}};Et=mo([Qe({entity:F}),yo("design:paramtypes",[F])],Et);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},bi=class{static{h(this,"CameraViewController");}getLayers(){let t=F.getInstanceOrFail().id;return Et.getInstanceOrFail(t).getLayers()}appear(t,e,i){let r=F.getInstanceOrFail().id;return Et.getInstanceOrFail(r).appear(t,e,i)}screenPositonToStagePosition(t){let e=F.getInstanceOrFail().id;return Et.getInstanceOrFail(e).screenPositonToStagePosition(t)}};bi=wo([tt(Pt)],bi);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)},Si=class{static{h(this,"KeyboardService");}constructor(){this.ƀgh=new Action,this.keyPressed=this.ƀgh.notifier,this.ƀgi=new Action,this.keyReleased=this.ƀgi.notifier,this.ƀgo=new Set,this.ƀgn=new Set,window.addEventListener("keydown",t=>{this.ƀgo.add(t.code),this.ƀgn.add(t.code),!t.repeat&&this.ƀgh.trigger({key:t.key,code:t.code});}),window.addEventListener("keyup",t=>{this.ƀgo.delete(t.code),this.ƀgi.trigger({key:t.key,code:t.code});}),window.addEventListener("blur",()=>{this.ƀgo.clear();}),m.afterSceneUpdateAction.subscribe(()=>this.ƀgn.clear()).attachToRoot();}isKeyDown(t,e){return (e?.onlyPressedThisFrame?this.ƀgn:this.ƀgo).has(t)}};Si=xo([u(),vo("design:paramtypes",[])],Si);var bo=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},So=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},he=class{static{h(this,"MouseService");}constructor(){this.ƀfw=new Variable(false),this.initialMouseMovementHappened=this.ƀfw.notifier,this.ƀkt=new Variable(Vector.zero,{notifyOnChange:true}),this.stagePosition=this.ƀkt.notifier,this.ƀjp=new Variable(Vector.zero,{notifyOnChange:true}),this.screenPosition=this.ƀjp.notifier,this.ƀgr=new Variable(false),this.mainButtonState=this.ƀgr.notifier,this.ƀju=new Variable(false),this.secondaryButtonState=this.ƀju.notifier,this.ƀkv(),window.addEventListener("pointerdown",t=>{t.button===0?this.ƀgr.value=true:t.button===2&&(this.ƀju.value=true);},{capture:true}),window.addEventListener("pointerup",t=>{t.button===0?this.ƀgr.value=false:t.button===2&&(this.ƀju.value=false);},{capture:true}),window.addEventListener("blur",()=>{this.ƀgr.value=false,this.ƀju.value=false;},{capture:true});}ƀkv(){let t=Vector.zero;window.addEventListener("pointermove",e=>{t=new Vector(e.clientX,e.clientY),this.ƀfw.value=true;},{capture:true}),m.beforeSceneUpdateAction.subscribe(()=>{this.ƀjp.value=this.ƀaz(t);}).attachToRoot(),m.afterSceneUpdateAction.subscribe(()=>{let e=g.camera.screenPositonToStagePosition(this.ƀjp.value);e.isEqual(this.ƀkt.value)?g.instance.renderer.events.onPointerMove(new PointerEvent("pointermove",{clientX:t.x,clientY:t.y,pointerType:"mouse"})):this.ƀkt.value=e;}).attachToRoot();}ƀaz(t){let i=g.instance.renderer.view.getBoundingClientRect(),r=i.width,s=i.height;if(r<=0||s<=0)return Vector.zero;let n=g.instance.renderer,a=(t.x-i.left)/r*n.screen.width,l=(t.y-i.top)/s*n.screen.height;return a=NumberHelper.clamp(a,0,n.screen.width),l=NumberHelper.clamp(l,0,n.screen.height),new Vector(a,l)}};he=bo([u(),So("design:paramtypes",[])],he);var Po=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},Eo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Pi=class{static{h(this,"MouseTargetFocusService");}get focusedInLastFrame(){return this.ƀdo}get lastFocusedPosition(){return this.ƀgk}constructor(t){this.ƀhf=t,this.ƀhu=new Action,this.onTargetFocus=this.ƀhu.notifier,this.ƀlo=0,this.ƀlp=false,this.ƀdo=false,this.ƀgk=void 0,m.beforeSceneUpdateAction.subscribe(e=>this.ƀls(e.delta)).attachToRoot();}ƀls(t){if(this.ƀhg){let e=this.ƀeq(this.ƀhf.stagePosition.value,this.ƀhg);this.ƀig===void 0?this.ƀig=e:this.ƀav(e,t);}this.ƀhg=this.ƀhf.stagePosition.value;}ƀav(t,e){this.ƀig-t>10?(this.ƀlo=Math.max(250,this.ƀlo),this.ƀlp=true):this.ƀlo>1e3&&(this.ƀlp=true);let i=this.ƀlo>=300&&this.ƀlp;this.ƀgg(i,t,e);}ƀgg(t,e,i){(t||e>this.ƀig)&&(this.ƀig=e),t?(this.ƀlp=false,this.ƀlo=0,this.ƀdo=true,this.ƀgk=this.ƀhf.stagePosition.value,this.ƀhu.trigger(this.ƀgk)):(this.ƀlo+=i,this.ƀdo=false);}ƀeq(t,e){let i=Vector.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};Pi=Po([u(),Eo("design:paramtypes",[he])],Pi);var Ei=10.8,Ti=10.01,rt;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle";})(rt||(rt={}));var f=class o{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return 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 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.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};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},le=class extends Q(){static{h(this,"PhysicsGateway");}};le=Oo([u()],le);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},lt=class extends Q(){static{h(this,"PhysicsInternalGateway");}};lt=Do([u()],lt);var b=class o extends ${static{h(this,"PhysicsEntity");}static{this.ƀia=new Map;}static{this.ƀik=new Map;}static getFromP2BodyID(t){return o.ƀia.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀia.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀik.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀik.values())}get area(){return this.ƀu}get mass(){return this.ƀgv}get collisions(){return this.ƀbc}constructor(t,e,i){super(),this.ƀho=new Action,this.onCollision=this.ƀho.notifier,this.type="dynamic",this.ƀu=0,this.ƀgv=0,this.ƀbc=[],this.physicsWorldID=t,this.ƀim=S.get(lt);let r=this.ƀim.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀim.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀil=this.ƀim.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀin=this.ƀim.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀim.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀu=this.p2Body.getArea(),this.ƀgv=this.p2Body.mass,this.p2Body.position=f.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀim.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.ƀia.set(this.p2Body.id,this),o.ƀik.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀim.removeBody(this.physicsWorldID,this.p2Body),o.ƀia.delete(this.p2Body.id),o.ƀik.delete(this.id));}canCollideWith(t){return f.arePhysicsGroupsCollidable(this.ƀil,this.ƀin,t.ƀil,t.ƀin)}ƀjw(t){this.ƀbc=t,t.length>0&&this.ƀho.trigger(t);}};var ce=class extends b{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=f.arrayToVector(this.p2Body.position),this.rotation=new Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:Vector.zero,rotationalSpeed:0}}};var Ri=class extends ${static{h(this,"MovableEntity");}constructor(){super(),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),m.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀla(t,e);}).attach(this);}ƀla(t,e){this.position.value=this.position.value.add(this.velocity.value.multiplyNumber(e)),this.rotation.value=new Radian(this.rotation.value.value+this.rotationalSpeed.value*e);}};var Ii=class extends b{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),this.ƀfp=false,this.ƀfq=false,this.ƀfs=false,this.ƀfr=false,this.ƀih(),this.ƀgp(),S.get(lt).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀla(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}}ƀla(t,e){this.ƀfp=true,this.ƀfq=true,this.ƀfs=true,this.ƀfr=true,this.ƀih();}ƀih(){this.position.value=f.arrayToVector(this.p2Body.position),this.rotation.value=new Radian(this.p2Body.angle),this.velocity.value=f.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀgp(){this.position.subscribe(t=>{this.ƀfp?this.ƀfp=false:this.p2Body.position=[t.x,t.y];}).attach(this),this.rotation.subscribe(t=>{this.ƀfq?this.ƀfq=false:this.p2Body.angle=t.value;}).attach(this),this.velocity.subscribe(t=>{this.ƀfs?this.ƀfs=false:this.p2Body.velocity=[t.x,t.y];}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀfr?this.ƀfr=false:this.p2Body.angularVelocity=t;}).attach(this);}};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},Fo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},v=class extends ${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 Variable(false),this.lastP2Time=new Variable(0),this.onPhysicsStep=new 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=_o([yt(),Fo("design:paramtypes",[Vector,Boolean,W.World,Map,Map,Map,Map])],v);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},K=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}};K=Ho([u()],K);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},Wo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Ue=class{static{h(this,"AvailabilityGridCacheService");}constructor(t){this.ƀij=t;}getCollidableGrids(t,e){let i=[];return t.availabilityGridCache.forEach((r,s)=>{r.forEach((n,a)=>{this.ƀij.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();}};Ue=jo([u(),Wo("design:paramtypes",[K])],Ue);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},$o=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},ct=class{static{h(this,"AvailabilityGridService");}constructor(t,e){this.ƀij=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=G.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),f.aabbToBoundingBox(e.aabb),r)}getAvilabilityGrid(t,e,i){let r=this.ƀz.get(t,e,i);return r||(r=this.ƀcb(t,e,i),this.ƀz.set(t,e,i,r)),r}ƀcb(t,e,i){let r=new Grid({size:new 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.ƀij.canCollide(t,n.physicsBodyGroup,i)){let a=this.ƀeh(s,e);r.setArea(a,false);}}),r}ƀeh(t,e){let i=f.aabbToBoundingBox(t.aabb);return G.areaToGridArea(i,e)}};ct=Uo([u(),$o("design:paramtypes",[K,Ue])],ct);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)},Lt=class{static{h(this,"PathFinderService");}constructor(t){this.ƀii=t;}findPathAStar(t,e,i,r,s){s||(s={}),s.neighborType===void 0&&(s.neighborType="orthogonal"),s.gridCellSize===void 0&&(s.gridCellSize=50);let n=v.getInstanceByIDOrFail(t),a,l;Comparator.isNumber(i)?(l=b.getPhysicsInstanceOrFail(i).p2Body,a=f.arrayToVector(l.position)):a=i;let c=G.positionToGridPosition(e,s.gridCellSize),p=G.positionToGridPosition(a,s.gridCellSize),y=this.ƀii.getAvilabilityGrid(n,s.gridCellSize,r);if(l){let A=f.aabbToBoundingBox(l.aabb),Tt=G.areaToGridArea(A,s.gridCellSize);y.setArea(Tt,true);}let w=Zt.findPath(y,c,p,s.neighborType);return w.path=w.path.map(A=>G.gridPositionToPosition(A,s.gridCellSize)),w}findPathDirection(t,e,i,r,s=50){let n=v.getInstanceByIDOrFail(t),a;if(Comparator.isNumber(i)){let w=b.getPhysicsInstanceOrFail(i);a=f.aabbToBoundingBox(w.p2Body.aabb);}else a=new Rectangle(i,i);let l=G.areaToGridArea(a,s),c=JSON.stringify({targetGridArea:l,collidableWithGroup:r}),p=n.vectorFieldCache.get(c);if(!p){let w=this.ƀii.getAvilabilityGrid(n,s,r);p=new qt(l,w),n.vectorFieldCache.set(c,p);}let y=G.positionToGridPosition(e,s);return p.getDirectionToTarget(y)}};Lt=Jo([u(),Yo("design:paramtypes",[ct])],Lt);var Ko=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},Zo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},q=class{static{h(this,"TestVisualsService");}constructor(t,e){this.ƀaa=t,this.ƀic=e;}printPathfindingTestGrid(t,e,i,r,s,n){let a=v.getInstanceByIDOrFail(t);this.ƀaa.getAvilabilityGrid(a,n,r).map((c,p)=>({position:G.gridPositionToPosition(p,n),availability:c})).forEach(c=>{if(c.position.isInsideRectangle(s)){let p=this.ƀic.findPathDirection(t,c.position,i,r),y;p===void 0?y=R.createRectangleBorders(new Vector(8,8),2,ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).attach(a):y=R.createArrow(25,c.availability?ColorHelper.green:ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).setRotation(p).attach(a),new I(y,"alpha",{duration:1e3,animation:x.easeIn}).animate({alpha:0}).tap(()=>y.destroy()).attach(y);}});}createExplosionDebugVisual(t,e,i,r,s,n=300){let a=new d().displayParent(e).setAlpha(.5).attach(t);R.createCircle(s,ColorHelper.blue).toSprite().displayParent(a).setPosition(r,{round:false}).setAlpha(.5).attach(t),i.forEach(c=>{let p=c.hits.length>0?ColorHelper.red:ColorHelper.white;R.createVector(r,c.line.to,p).toSprite().displayParent(a).attach(t);}),new I(a,"alpha",{duration:n,animation:x.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}createElipticExplosionDebugVisual(t,e,i,r,s,n,a=300){let l=new d().displayParent(e).setAlpha(.5).attach(t);R.createElipse(n,ColorHelper.blue).toSprite().displayParent(l).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attach(t),i.forEach(p=>{let y=p.hits.length>0?ColorHelper.red:ColorHelper.white;R.createVector(p.line.from,p.line.to,y).toSprite().displayParent(l).attach(t);}),new I(l,"alpha",{duration:a,animation:x.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 Radian(t.angle),n=i?.color??ColorHelper.blue,a=new d().displayParent(e).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attachToRoot();t.shapes.forEach(c=>{this.ƀcw(c,n).displayParent(a).attachToRoot();}),new I(a,"alpha",{duration:1e3,animation:x.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}ƀcw(t,e){switch(t.type){case W.Shape.PARTICLE:throw new Error("Not implemented");case W.Shape.LINE:throw new Error("Not implemented");case W.Shape.PLANE:throw new Error("Not implemented");case W.Shape.CIRCLE:throw new Error("Not implemented");case W.Shape.CAPSULE:throw new Error("Not implemented");case W.Shape.BOX:throw new Error("Not implemented");case W.Shape.HEIGHTFIELD:throw new Error("Not implemented");case W.Shape.CONVEX:return this.ƀcv(t,e);default:{t.type;throw new Error}}}ƀcv(t,e){let i=[t.vertices.map(r=>({x:r[0],y:r[1]}))];return R.createPolygon(i,e).toSprite()}};q=Ko([u(),Zo("design:paramtypes",[ct,Lt])],q);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},en=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},$e=class{static{h(this,"HitTestService");}constructor(t){this.ƀlh=t;}hitTest(t,e){let i=t.world,r=b.getFromP2BodyIDOrFail(t.id),s=f.cloneP2Body(t);this.ƀt(s,e);let n=i.broadphase.aabbQuery(i,this.ƀdt(s)).map(l=>b.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 W.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?ColorHelper.red:ColorHelper.green;this.ƀlh.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);}ƀdt(t){return t.aabbNeedsUpdate=true,t.updateAABB(),t.aabb}};$e=tn([u(),en("design:paramtypes",[q])],$e);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},ze=class{static{h(this,"CollisionsService");}registerPhysicsWorld(t){t.p2World.on("beginContact",e=>{e.contactEquations.forEach(i=>{this.ƀjh(t,i);});});}step(t,e,i){b.getPhysicsEntities().forEach(r=>{r.ƀbc=[];}),t.p2World.narrowphase.contactEquations.forEach(r=>{this.ƀjh(t,r);}),t.bodiesInContactWith.forEach((r,s)=>{this.ƀff(r.p2Body),r.entity.ƀjw(t.collisionReports.get(s)||[]);}),t.bodiesInContactWith.clear(),t.collisionReports.clear();}ƀff(t){let e=f.arrayToVector(t.velocity);e.length>Ei&&(e=e.normalize(Ei),t.velocity=f.vectorToArray(e)),t.angularVelocity=Math.min(Math.max(t.angularVelocity,-Ti),Ti);}ƀjh(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.ƀdz(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);}ƀdz(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.ƀeo(i);return {collisionDetailsA:this.ƀdy(r,i.bodyA.mass,n,l,t.area),collisionDetailsB:this.ƀdy(s,i.bodyB.mass,a,c,e.area)}}ƀdy(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}}ƀeo(t){let e=f.arrayToVector(t.normalA),i=e.multiplyNumber(-1);return {normalA:e,normalB:i}}};ze=sn([u()],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},nn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},ke=class extends ce{static{h(this,"BorderEntity");}constructor(t,e){super(t,e);}};ke=on([yt(),nn("design:paramtypes",[Number,Object])],ke);var an=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=1e4,Je=class{static{h(this,"BorderService");}createBorders(t,e,i){this.ƀbv(t,new Vector(e.x/2,-j/2),new Vector(e.x+j*2,j),i),this.ƀbv(t,new Vector(e.x/2,e.y+j/2),new Vector(e.x+j*2,j),i),this.ƀbv(t,new Vector(-j/2,e.y/2),new Vector(j,e.y+j*2),i),this.ƀbv(t,new Vector(e.x+j/2,e.y/2),new Vector(j,e.y+j*2),i);}ƀbv(t,e,i,r){return new ke(t,{shapeDefinition:{materialName:ht,group:r,shapeType:rt.Rectangle,shapeData:i},position:e,rotation:Radian.get0,addInEmptySpace:false,includeOnPathfinding:true}).attachByID(t)}};Je=an([u()],Je);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},fr=new W.Material,cn={id:ht,density:Number.MAX_SAFE_INTEGER,velocityDrag:1,rotationalDrag:1},Ht=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.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,fr),n.set(ht,cn),this.ƀc(t,e,i,r,s),{materials:s,materialDefinitions:n}}getMaterial(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀem(e,i.materials)}getMaterialDefinition(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀel(e,i.materialDefinitions)}ƀem(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material with name ${t}.`);return i}ƀel(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.ƀee(i.map(n=>n.id),r).forEach(n=>{let a=this.ƀem(n.materialA,s),l=this.ƀem(n.materialB,s);t.addContactMaterial(new W.ContactMaterial(a,l,{friction:n.friction,restitution:n.bounciness,stiffness:n.stiffness,relaxation:n.relaxation}));}),this.ƀd(t,e,i,s);}ƀee(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.ƀem(s.id,r);t.addContactMaterial(new W.ContactMaterial(n,fr,{friction:e.friction,restitution:e.bounciness,stiffness:e.stiffness,relaxation:e.relaxation}));});}};Ht=ln([u()],Ht);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},un=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},jt=class{static{h(this,"PhysicsWorldService");}constructor(t,e,i,r,s){this.ƀgz=t,this.ƀaj=e,this.ƀaa=i,this.ƀbd=r,this.ƀij=s;}createPhysicsWorld(t){let e=new W.World({gravity:[0,0]}),{materials:i,materialDefinitions:r}=this.ƀgz.createMaterials(e,t.borderProperties,t.materialDefinitions,t.materialContactDefinitions),{physicsBodyGroupToP2Group:s,physicsBodyGroupToP2Mask:n}=this.ƀij.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&&m.cleanUpdateModifier();}).attachToRoot(),this.ƀaj.createBorders(a.id,t.mapSize,t.borderProperties.borderBodyGroup),this.ƀbd.registerPhysicsWorld(a),t.modifyUpdateCycle?m.registerUpdateModifier((l,c)=>this.ƀla(a,l,c)):m.beforeSceneUpdateAction.subscribe(({time:l,delta:c})=>{this.ƀla(a,l,c);}).attach(a),a.id}addBody(t,e,i,r,s){let n=v.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){v.getInstanceByID(t)?.p2World.removeBody(e);}ƀla(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.ƀbd.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);}};jt=pn([u(),un("design:paramtypes",[Ht,Je,ct,ze,K])],jt);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},Ut=class{static{h(this,"RayCastingService");}castClosest(t,e,i){let r=new W.RaycastResult,s=new W.Ray({mode:W.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.ƀbq(r,e)}castAllFirstContacts(t,e,i){let r=new Map,s=new W.Ray({mode:W.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.ƀbq(n,e)):n.fraction===a.fraction&&a.isExternal()&&r.set(n.body,this.ƀbq(n,e));},"callback")});return t.p2World.raycast(new W.RaycastResult,s),Array.from(r.values())}ƀbq(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}}};Ut=fn([u()],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},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=mn([u()],dt);var yn=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},$t=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.ƀbr(r,t.length))}ƀbr(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=f.arrayToVector(t.closestRaycastHit.body.position);return {body:b.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:false,normal:Vector.fromTo(s,t.explosionCenter).normalize(),fraction:0,ratioOfHits:i,raycastResults:r,getHitPosition:h(()=>t.explosionCenter,"getHitPosition"),getHitDistance:h(()=>0,"getHitDistance")}}}};$t=yn([u()],$t);var wn=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},xn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Sn=15,Xe=class{static{h(this,"ElipticExplosionService");}constructor(t,e,i,r){this.ƀjd=t,this.ƀlh=e,this.ƀjc=i,this.ƀft=r;}createElipticExplosion(t,e,i,r,s,n,a){let l=v.getInstanceByIDOrFail(t),c=this.ƀcg(e,i,r,s,a?.hitOnlyClosest===true,l),p=this.ƀjc.toExplosionHits(c,false);return this.ƀr(p,n),a?.testLayerID&&this.ƀlh.createElipticExplosionDebugVisual(l,a.testLayerID,c,e,i,r,a.debugRayDuration),p.map(y=>{let{p2Body:w,...A}=y;return A})}ƀcg(t,e,i,r,s,n){let a=[],l=e.vector,c=e.add(Radian.get90).vector,p=c.normalize(i.x);a.push(new Line(t,t.add(p))),a.push(new Line(t,t.add(p.multiplyNumber(-1))));let y=l.normalize(i.y);a.push(new Line(t,t.add(y))),a.push(new Line(t,t.add(y.multiplyNumber(-1))));let w=Math.round(i.y/Sn),A=i.y/(w*2+1)*2,Tt=l.normalize(A),pe=i.x,yr=Math.pow(i.y,2);return ArrayHelper.createIntegerArray(w).forEach(mt=>{let Rt=A*(mt+1),Oi=Tt.multiplyNumber(mt+1),ue=c.normalize(this.ƀex(pe,yr,Rt)),de=t.add(Oi);a.push(new Line(de,de.add(ue))),a.push(new Line(de,de.add(ue.multiplyNumber(-1))));let fe=t.add(Oi.multiplyNumber(-1));a.push(new Line(fe,fe.add(ue))),a.push(new Line(fe,fe.add(ue.multiplyNumber(-1))));}),a.map(mt=>{if(s){let Rt=this.ƀjd.castClosest(n,mt,r);return {line:mt,hits:Rt?[Rt]:[]}}else {let Rt=this.ƀjd.castAllFirstContacts(n,mt,r);return {line:mt,hits:Rt}}})}ƀex(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.ƀft.applyImpulse(r.body,r.hitPosition(),s,n);});});}};Xe=wn([u(),xn("design:paramtypes",[Ut,q,$t,dt])],Xe);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},En=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Ke=class{static{h(this,"ExplosionService");}constructor(t,e,i,r){this.ƀjd=t,this.ƀlh=e,this.ƀjc=i,this.ƀft=r;}createExplosion(t,e,i,r,s,n){let a=v.getInstanceByIDOrFail(t),l=this.ƀeu(i),c=this.ƀcg(e,i,r,l,n?.hitOnlyClosest===true,a),p=this.ƀjc.toExplosionHits(c);return this.ƀr(e,i,s,l,p),n?.testLayerID&&this.ƀlh.createExplosionDebugVisual(a,n.testLayerID,c,e,i,n.debugRayDuration),p}ƀcg(t,e,i,r,s,n){let a=new Radian(PI_360/r),l=new Vector(0,-e),c=a.vector;return ArrayHelper.createEmptyArray(r).map(()=>{let p=t.add(l);return l=l.rotate(c),new Line(t,p)}).map(p=>{if(s){let y=this.ƀjd.castClosest(n,p,i);return {line:p,hits:y?[y]:[]}}else {let y=this.ƀjd.castAllFirstContacts(n,p,i);return {line:p,hits:y}}})}ƀr(t,e,i,r,s){s.forEach(n=>{if(n.isExternal)n.raycastResults.forEach(a=>{let l=i*(1-a.fraction);this.ƀft.applyImpulse(a.body,a.hitPosition(),a.line.fromTo,l);});else {let a=Vector.fromTo(t,f.arrayToVector(n.p2Body.position)),l=a.length/e,c=i*r*l/2;this.ƀft.applyImpulse(n.p2Body,n.getHitPosition(),a,c);}});}ƀeu(t){return t>100?Math.floor(t*.3):Math.floor(t*.26+4)}};Ke=Pn([u(),En("design:paramtypes",[Ut,q,$t,dt])],Ke);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},zt=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)}};zt=Cn([u()],zt);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)},Ai=class{static{h(this,"PhysicsController");}constructor(t,e,i,r,s,n,a,l){this.ƀiq=t,this.ƀic=e,this.ƀlh=i,this.ƀdh=r,this.ƀda=s,this.ƀfk=n,this.ƀip=a,this.ƀft=l;}createPhysicsWorld(t){return this.ƀiq.createPhysicsWorld(t)}getMapSize(t){return this.ƀip.getMapSize(t)}setPaused(t,e){this.ƀiq.setPaused(t,e);}hitTest(t,e){let i=b.getPhysicsInstanceOrFail(t);return this.ƀfk.hitTest(i.p2Body,e)}findPath(t,e,i,r,s){return this.ƀic.findPathAStar(t,e,i,r,{neighborType:s})}findPathDirection(t,e,i,r){return this.ƀic.findPathDirection(t,e,i,r)}applyImpulse(t,e,i,r){let s=b.getPhysicsInstanceOrFail(t);this.ƀft.applyImpulse(s.p2Body,e,i,r);}createExplosion(t,e,i,r,s,n){return this.ƀdh.createExplosion(t,e,i,r,s,n)}createElipticExplosion(t,e,i,r,s,n,a){return this.ƀda.createElipticExplosion(t,e,i,r,s,n,a)}printPathfindingTestGrid(t,e,i,r,s,n=50){this.ƀlh.printPathfindingTestGrid(t,e,i,r,s,n);}};Ai=On([tt(le),Dn("design:paramtypes",[jt,Lt,q,Ke,Xe,$e,zt,dt])],Ai);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},Ze=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 rt.Point:return this.ƀbx(n,void 0,i,r,e.shapeDefinition.group,s);case rt.Circle:return this.ƀbx(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case rt.Polygon:return this.ƀcf(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case rt.Rectangle:return this.ƀch(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);default:{e.shapeDefinition.shapeType;throw new Error}}}ƀbx(t,e,i,r,s,n){let a=new W.Circle({collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s),radius:e});a.material=i;let l=new W.Body({type:n==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:r.density,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return l.addShape(a),l}ƀcf(t,e,i,r,s,n){let a=t.physicsBodyGroupToP2Group.get(s),l=t.physicsBodyGroupToP2Mask.get(s),c=e.map(w=>new W.Convex({vertices:w.map(A=>[A.x,A.y]),collisionGroup:a,collisionMask:l})).map(w=>(w.material=i,w)),p=c.reduce((w,A)=>w+A.area,0),y=new W.Body({type:n==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:p,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.forEach(w=>y.addShape(w)),y.setDensity(r.density),y}ƀch(t,e,i,r,s,n){let a=new W.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.Body({type:n==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:l,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.addShape(a),c.setDensity(r.density),c}};Ze=Mn([u()],Ze);var Bn=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)},Ci=class{static{h(this,"PhysicsInternalController");}constructor(t,e,i,r,s){this.ƀiq=t,this.ƀio=e,this.ƀkg=i,this.ƀip=r,this.ƀij=s;}createBody(t,e,i,r,s){return this.ƀkg.createBody(t,e,i,r,s)}getMaterial(t,e){return this.ƀio.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀio.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀij.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀij.getMaskConstant(t,e)}addBody(t,e,i,r,s){return this.ƀiq.addBody(t,e,i,r,s)}removeBody(t,e){this.ƀiq.removeBody(t,e);}subscribeToPhysicsStep(t,e){return this.ƀip.subscribeToPhysicsStep(t,e)}};Ci=Bn([tt(lt),Gn("design:paramtypes",[jt,Ht,Ze,zt,K])],Ci);export{at as AdvancedSound,Bi as AnimationFlicker,V as AnimationInterpolationFunctions,x as Animations,T as AnimationsCompletionHandlingType,I as Animator,ht as BORDER_MATERIAL_NAME,E as BardLegendsHardReset,Ot as BlendMode,Qt as Camera,ot as CameraGateway,Kt as ClosestAvailableSpaceHelper,d as Container,Ct as ContainerEventType,tt as ControllerDecorator,ti as Cursor,D as DEFAULT_SHADER_RESOLUTION,ni as DeltaTime,di as DisplayObjectArray,$ as Entity,yt as EntityDecorator,Hi as FadeInContent,nt as FocusingAnimation,g as Game,Q as Gateway,R as Graphics,ce as ImmovablePhysicsEntity,Si as KeyboardService,mi as MenuEntity,oe as MenuUI,yi as MenuView,he as MouseService,Pi as MouseTargetFocusService,Ri as MovableEntity,Ii as MovablePhysicsEntity,ee as Music,li as MusicPlayer,Zt as PathFinder,b as PhysicsEntity,le as PhysicsGateway,rt as PhysicsShapeType,ci as Placeholder,Ti as ROTATIONAL_SPEED_LIMIT,C as ReAnimateHandlingType,pi as RichText,X as SOUND_TRANSITION_DURATION,Ei as SPEED_LIMIT,It as Scene,Cr as SceneDecorator,gi as ScrollAreaUI,et as ScrollDirection,xt as ScrollMaskUI,S as Service,u as ServiceDecorator,gt as SingletonEntity,Ji as SlideInContent,oi as SlideInContentByIndex,Re as SlideStateAnimation,it as SlideStateAnimationState,te as Sound,J as Sprite,Mt as StateAnimation,se as Text,ve as ThroughEmptyStateAnimation,ui as UpdatableContainer,m as UpdateCycle,qt as VectorFieldPathFinder,bt as VectorSet,U as View,Qe as ViewDecorator};
|
|
44
|
+
finalColor = vec4(uColor, 1.0) * highestAlpha;
|
|
45
|
+
}`,e}constructor(t,e){if(super({glProgram:F.GlProgram.from({vertex:F.defaultFilterVert,fragment:n.ƀec(t*N)}),resources:{expandUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uExpandSquared:{value:0,type:"f32"}}},resolution:N}),this.ƀdf=t,this.ƀdf=t*N,this.ƀdf<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀdf>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");Comparator.isInteger(this.ƀdf)||(this.ƀdf=Math.floor(this.ƀdf));let i=ColorHelper.normalize(e);this.resources.expandUniforms.uniforms.uColor=new Float32Array([i.red,i.green,i.blue]),this.resources.expandUniforms.uniforms.uExpandSquared=this.ƀdf*this.ƀdf,this.padding=this.ƀdf;}};var Ee=class extends F.Filter{static{h(this,"GlowFilter");}constructor(t){super({resolution:N,compatibleRenderers:F.RendererType.WEBGL});let e={blurRadius:1,expand:0,color:ColorHelper.white,...t};this.ƀdg=new Se(e.expand,e.color);let i=Comparator.isNumber(e.blurRadius)?new Vector(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀaj=new Bt(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀaj.blendMode="screen";}apply(t,e,i,r){let s=F.TexturePool.getSameSizeTexture(e);this.ƀdg.apply(t,e,s,true),this.ƀaj.apply(t,s,i,r),F.TexturePool.returnTexture(s);}};var Yt=class n{static{h(this,"GlowSpriteGenerator");}static{this.ƀew=new Map;}static createGlowSpriteFromSprite(t,e,i){let r=this.ƀbh(e),s=Comparator.isNumber(r.blurRadius)?new Vector(r.blurRadius,r.blurRadius):r.blurRadius,o=this.ƀee(t.texture,s,r.expand,r.color,i),a=new F.Sprite(o);return this.ƀjv(a,Vector.fromVec2(t.anchor),Math.max(s.x,s.y)+r.expand),a.alpha=r.glowAlpha,a.blendMode=r.blendMode,a}static ƀee(t,e,i,r,s){if(!t.id)throw new Error("GlowSpriteGenerator: baseTexture should have an id");if(s){let o=`${t.id}-${i}-${e.x}-${e.y}-${r.r}-${r.g}-${r.b}`;if(n.ƀew.has(o))return n.ƀew.get(o);{let a=this.ƀef(t,e,i,r);return n.ƀew.set(o,a),a}}else return this.ƀef(t,e,i,r)}static ƀef(t,e,i,r){let s=new F.Sprite(t);s.filters=[new Ee({blurRadius:e,expand:i,color:r})];let o=new F.Container;o.addChild(s);let a=Math.max(e.x,e.y)+i,l=g.instance.renderer.generateTexture({target:o,frame:new F.Rectangle(-a,-a,s.width+a*2,s.height+a*2)});return l.id=M.insertAsset(l),o.destroy({children:true}),l}static ƀjv(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 ƀbh(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:ColorHelper.white,blendMode:"add"};return t&&(e={...e,...t}),e}};E.onHardReset.subscribe(()=>{Yt.ƀew.clear();}).attachToRoot();var J=class n extends d{static{h(this,"Sprite");}static createByName(t){let e=g.setupOptions.spriteDefinitions[t];if(!e)throw new Error(`Sprite: Could not find sprite definition with name ${t}.`);return new n(e)}static createSnapshotSprite(t){let e=t.ƀip,i=e.parent;i&&i.removeChild(e);let r=g.instance.renderer.generateTexture({target:e,resolution:2,antialias:true,textureSourceOptions:{scaleMode:"linear"}});i&&i.addChild(e);let o={id:M.insertAsset(r),scale:t.scale,size:t.size,anchor:Vector.zero,destroyAssetOnDestroy:true};return new n(o,{ignoreAnchor:true})}constructor(t,e={}){if(super(),this.ƀli=1,!t)throw new Error("Sprite: spriteDefinition cannot be nullish!");this.ƀko=t,this.pixiSprite=new F.Sprite(M.getAsset(t.id)),this.ƀip.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.ƀko.destroyAssetOnDestroy&&(M.destroyAsset(this.ƀko.id),this.ƀiq&&M.destroyAsset(this.ƀiq.texture.id)),this.ƀgr?.destroy(),this.ƀal?.destroy(),this.ƀiq&&!this.ƀiq.destroyed&&this.ƀiq.destroy());}setTextureScale(t){return this.textureScale=t,this}get textureScale(){return this.ƀli}set textureScale(t){this.ƀli=t,this.pixiSprite.scale.set(t);}get size(){return new Vector(this.pixiSprite.width,this.pixiSprite.height)}getMask(){return this.pixiSprite}set interactive(t){super.interactive=t,t&&this.ƀko.boundingShapes&&!this.ƀip.hitArea&&(this.ƀip.hitArea=new hs(this.ƀko.boundingShapes,this.size,Vector.fromVec2(this.ƀko.anchor)));}setMipmap(t){return this.mipmap=t,this}get mipmap(){return this.pixiSprite.texture.source.autoGenerateMipmaps}set mipmap(t){this.pixiSprite.texture.source.autoGenerateMipmaps=t;}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 F.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.ƀiq)return this.ƀiq.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀiq)this.ƀiq.alpha=t;else throw new Error("Sprite: setGlowFilterAlpha cannot be called before glow filter is added.")}getAlignmentVector(t){let e=Vector.fromVec2(this.ƀko.anchor).to(t);return new Vector(this.size.x*e.x,this.size.y*e.y)}setGlowEffect(t){return this.ƀiq&&(this.ƀiq.destroy(),this.ƀiq=void 0),t&&(this.ƀiq=Yt.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀko.destroyAssetOnDestroy),this.ƀiq.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀiq.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.ƀip.addChild(this.ƀiq)),this}showBoundingShape(t){return t?this.ƀal||(this.ƀal=this.ƀbw().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀal&&(this.ƀal.destroy(),this.ƀal=void 0),this}getBoundingMask(){if(!this.ƀgr){if(!this.ƀko.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀgr=this.ƀbw(),this.ƀgr.displayParent(this);}return this.ƀgr}ƀbw(){if(!this.ƀko.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return R.createPolygon(this.ƀko.boundingShapes,ColorHelper.white).toSprite().attach(this)}download(){let t=g.instance.renderer.extract.canvas(this.ƀip);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}},hs=class{static{h(this,"CompositeHitArea");}constructor(t,e,i){this.ƀke=t.map(r=>new F.Polygon(r.map(s=>new F.Point(s.x,s.y))));}contains(t,e){return this.ƀke.some(i=>i.contains(t,e))}};var Te=class{static{h(this,"DashedLineHelper");}static getLines(t,e,i){let r=Vector.fromTo(t,e),s=r.normalize(),o=r.length-i.lineStartGap-i.lineEndGap,a=[];if(o<=0)return a;let l=t.add(s.normalize(i.lineStartGap));if(o<=i.dashGap+i.dashLength*.5)return a.push({from:l,to:l.add(s.normalize(o))}),a;let c=o-i.dashGap,p=i.dashLength+i.dashGap,y=Math.floor(c/p),w=c-p*y;y>=1&&w<i.dashLength&&(w+=p,y--);let C=s.normalize(w/2),Ct=s.normalize(i.dashGap);if(a.push({from:l,to:l.add(C)}),l=l.add(C),y>0){let pe=s.normalize(i.dashLength);ArrayHelper.createEmptyArray(y).forEach(()=>{l=l.add(Ct),a.push({from:l,to:l.add(pe)}),l=l.add(pe);});}return l=l.add(Ct),a.push({from:l,to:l.add(C)}),a}};var R=class n extends d{static{h(this,"Graphics");}static{this.ƀcx=new Map;}static createArrow(t,e){let i=new F.Graphics;return [[{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}]].forEach(s=>{i.poly(s.map(o=>new F.Point(o.x,o.y))).fill(e);}),new n(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:ColorHelper.white,...i},s=new F.Graphics;return Te.getLines(t,e,r).forEach(a=>{s.moveTo(a.from.x,a.from.y).lineTo(a.to.x,a.to.y);}),s.stroke({width:r.width,color:r.color}),new n(s,JSON.stringify({type:"dashedLine",from:t,to:e,options:r}))}static createVector(t,e,i){let r=new F.Graphics;return r.moveTo(t.x,t.y),r.lineTo(e.x,e.y),r.stroke({width:2,color:i}),r.circle(t.x,t.y,3),r.fill(ColorHelper.white),r.stroke({width:1,color:i}),new n(r,JSON.stringify({type:"line",start:t,end:e,color:i}))}static createRectangleBorders(t,e,i){let r=new F.Graphics;return r.rect(0,0,t.x,e),r.rect(0,e,e,t.y-e*2),r.rect(t.x-e,e,e,t.y-e*2),r.rect(0,t.y-e,t.x,e),r.fill(i),new n(r,JSON.stringify({type:"rectangle-borders",size:t,borderSize:e,color:i}))}static createRectangle(t,e=ColorHelper.white){let i=new F.Graphics;return i.rect(0,0,t.x,t.y).fill(e),new n(i,JSON.stringify({type:"rectangle",size:t,color:e}))}static createCircle(t,e){let i=new F.Graphics;return i.circle(0,0,t).fill(e),new n(i,JSON.stringify({type:"circle",radius:t,color:e}))}static createElipse(t,e){let i=new F.Graphics;return i.ellipse(0,0,t.x,t.y).fill(e),new n(i,JSON.stringify({type:"elipse",size:t,color:e}))}static createPolygon(t,e){let i=new F.Graphics,r=JSON.stringify({type:"polygon",polygon:t,color:e});return t.forEach(s=>{i.poly(s.map(o=>new F.Point(o.x,o.y))).fill(e);}),new n(i,r)}static createRegularPolygon(t,e,i){let r=new F.Graphics,s=new Radian(PI_360/t);r.moveTo(e,0);for(let o=1;o<=t;o++){let l=s.multiply(o).vector.normalize(e),c=e+l.x,p=e+l.y;r.lineTo(c,p);}return r.fill(i),new n(r,JSON.stringify({type:"regular-polygon",sides:t,radius:e,color:i}))}constructor(t,e){super(),this.ƀip.addChild(t),this.pixiGraphics=t,this.ƀao=e;}destroy(){this.destroyed||(super.destroy(),!this.pixiGraphics.destroyed&&this.pixiGraphics.destroy());}toSprite(t){let e={cacheName:this.ƀao,cache:false,...t},i=this.ƀer(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}ƀer(t,e){if(e){let i=n.ƀcx.get(t);return i||(i=this.ƀci(),n.ƀcx.set(t,i)),i}else return this.ƀci()}ƀci(){let t=g.instance.renderer.generateTexture(this.pixiGraphics);t.id=M.insertAsset(t);let e=this.pixiGraphics.getBounds();return {textureID:t.id,bounds:new Vector(e.x,e.y)}}};var ri=class{static{h(this,"AnimationEaseInOutFlatter");}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},Pt=class n extends d{static{h(this,"ScrollMaskUI");}static{this.ƀcx=new Map;}constructor(t,e,i,r=et.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 d;r===et.Horizontal?this.ƀcc(e,i,s):this.ƀcj(e,i,s),this.ƀgr=J.createSnapshotSprite(s).attach(this),s.destroy(),t.setMask(this.ƀgr);}ƀcj(t,e,i){e>0&&this.ƀbz(new Vector(t.x,e)).displayParent(i).attach(i),R.createRectangle(new Vector(t.x,t.y-e*2),ColorHelper.white).toSprite().setPosition(new Vector(0,e),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbz(new Vector(t.x,e)).setPosition(new Vector(t.x,t.y),{round:false}).setRotation(Radian.get180).displayParent(i).attach(i);}ƀcc(t,e,i){e>0&&this.ƀbz(new Vector(t.y,e)).setPosition(new Vector(0,t.y),{round:false}).setRotation(Radian.get270).displayParent(i).attach(i),R.createRectangle(new Vector(t.x-e*2,t.y),ColorHelper.white).toSprite().setPosition(new Vector(e,0),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbz(new Vector(t.y,e)).setPosition(new Vector(t.x,0),{round:false}).setRotation(Radian.get90).displayParent(i).attach(i);}ƀbz(t){let i={id:this.ƀca(t.y),scale:1,size:t,anchor:{x:0,y:0}};return new J(i,{textureSize:t,ignoreAnchor:true})}ƀca(t){let e=JSON.stringify({type:"gradient",length:t}),i=n.ƀcx.get(e);if(!i){let r=document.createElement("canvas");r.width=1,r.height=t;let s=r.getContext("2d");if(s){let o=new ri;ArrayHelper.createIntegerArray(t).forEach(l=>{let c=`rgba(255, 255, 255, ${o.multiplierFunction(l/t)})`;s.fillStyle=c,s.fillRect(0,l,1,1);});let a=F.Texture.from(r);i=M.insertAsset(a),n.ƀcx.set(e,i);}else throw new Error("Canvas context is null")}return i}};var it;(function(n){n[n.Appear=1]="Appear",n[n.Disappear=2]="Disappear";})(it||(it={}));var Re=class extends Attachable{static{h(this,"SlideStateAnimation");}onStateChange(t){return this.ƀhr.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀht.subscribe(e=>t(e.value,e.index)).attach(this),this}get state(){return {value:this.ƀkv.state.value,item:this.ƀfs,nextItem:this.ƀhi,queuedItem:this.ƀkv.state.queuedItem,animationState:this.ƀo}}constructor(t){super(),this.ƀo="idle",this.ƀhr=new Action,this.ƀht=new Action,this.ƀhw={duration:500,animation:x.easeInOutCubic,...t},this.ƀkv=new Gt({duration:this.ƀhw.duration,animation:this.ƀhw.animation}).onStateChange((e,i)=>this.ƀez(e,i)).onValueChange(e=>this.ƀfe(e)).attach(this);}setIndex(t,e){if(!Comparator.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfs===void 0?(this.ƀfs=t,this.ƀhr.trigger({state:it.Appear,index:t}),this.ƀkv.setItem(t,e)):this.ƀfs!==t?this.ƀhi!==t?this.ƀo==="idle"?(this.ƀo=t>this.ƀfs?"transitionForward":"transitionBackward",this.ƀhi=t,this.ƀhr.trigger({state:it.Appear,index:this.ƀhi}),this.ƀkv.setItem(t,e)):this.ƀkv.setItem(t,e):this.ƀo==="reverting"&&this.ƀhi===t&&(this.ƀo=t>this.ƀfs?"transitionForward":"transitionBackward",this.ƀkv.setItem(t,e)):(this.ƀo==="transitionForward"||this.ƀo==="transitionBackward")&&(this.ƀo="reverting",this.ƀkv.setItem(t,e));}ƀez(t,e){switch(this.ƀfs!==void 0&&this.ƀfs!==t&&this.ƀfs!==e&&this.ƀhr.trigger({state:it.Disappear,index:this.ƀfs}),this.ƀhi!==void 0&&this.ƀhi!==t&&this.ƀhi!==e&&this.ƀhr.trigger({state:it.Disappear,index:this.ƀhi}),e!==void 0&&e!==this.ƀfs&&e!==this.ƀhi&&this.ƀhr.trigger({state:it.Appear,index:e}),this.ƀo){case "idle":break;case "transitionForward":case "transitionBackward":e===void 0?(this.ƀo="idle",this.ƀfs=this.ƀhi,this.ƀhi=void 0):this.ƀfs!==t&&this.ƀfa(t,e);break;case "reverting":e===void 0?(this.ƀo="idle",this.ƀhi=void 0):this.ƀfs!==e&&this.ƀfa(t,e);break;default:{this.ƀo;throw new Error}}}ƀfa(t,e){this.ƀfs=t,this.ƀhi=e,this.ƀht.trigger({value:0,index:this.ƀfs}),this.ƀo=this.ƀfs<this.ƀhi?"transitionForward":"transitionBackward";}ƀfe(t){let e=1;(this.ƀo==="transitionBackward"||this.ƀo==="reverting"&&this.ƀfs!==void 0&&this.ƀhi!==void 0&&this.ƀfs>this.ƀhi)&&(e=-1),(this.ƀo==="idle"||t!==0)&&this.ƀht.trigger({value:NumberHelper.ensurePositiveZero(-e*t),index:this.ƀfs}),this.ƀhi!==void 0&&this.ƀht.trigger({value:NumberHelper.ensurePositiveZero(e*(1-t)),index:this.ƀhi});}};var et;(function(n){n[n.Horizontal=1]="Horizontal",n[n.Vertical=2]="Vertical";})(et||(et={}));var si=class extends d{static{h(this,"SlideInContentByIndex");}constructor(t,e){super(),this.ƀby=t,this.ƀcs="x",this.ƀbo=new Map,this.ƀhw={duration:300,animation:x.easeInOutCubic,size:new Vector(500,500),margin:20,direction:et.Horizontal,...e};let i=this.ƀhw.direction===et.Horizontal?new Vector(this.ƀhw.size.x+this.ƀhw.margin*2,this.ƀhw.size.y):new Vector(this.ƀhw.size.x,this.ƀhw.size.y+this.ƀhw.margin*2),r=new d().setPosition(this.ƀhw.direction===et.Horizontal?new Vector(-this.ƀhw.margin,0):new Vector(0,-this.ƀhw.margin),{round:false}).displayParent(this).attach(this);this.ƀcd(i,this.ƀhw.margin,this.ƀhw.direction,r),this.ƀcs=this.ƀhw.direction===et.Horizontal?"x":"y",this.ƀkv=new Re({duration:this.ƀhw.duration,animation:this.ƀhw.animation}).onStateChange((s,o)=>{if(s===it.Appear){let a=new d().displayParent(this).attach(this);this.ƀbo.set(o,a),this.ƀby({index:o,container:a});}else {let a=this.ƀbo.get(o);a&&(a.destroy(),this.ƀbo.delete(o));}}).onValueChange((s,o)=>{let a=this.ƀbo.get(o);if(a){let l={x:0,y:0};l[this.ƀcs]=i[this.ƀcs]*s+this.ƀhw.margin,a.setPosition(Vector.fromVec2(l),{round:false});}}).attach(this),this.addChildTo=r;}setIndex(t,e){return this.ƀkv.setIndex(t,e),this}ƀcd(t,e,i,r){new Pt(r,new Vector(t.x,t.y),e,i).attach(this);}},zi=class extends si{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 Et=class{static{h(this,"VectorSet");}constructor(){this.ƀlv=new Map;}add(t){let e=this.ƀlv.get(t.x);e||(e=new Set,this.ƀlv.set(t.x,e)),e.add(t.y);}has(t){let e=this.ƀlv.get(t.x);return e?e.has(t.y):false}delete(t){let e=this.ƀlv.get(t.x);return e?e.delete(t.y):false}};var oi=class{static{h(this,"DeltaTime");}static adjustMultiplier(t,e){return Math.pow(t,e)}};var D=class{static{h(this,"PositionToGridPositionConverter");}static areaToGridArea(t,e){return new 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 Vector(.5,.5)).multiplyNumber(e)}};var Xt=class{static{h(this,"ClosestAvailableSpaceHelper");}static findByConvertingGridSpace(t,e,i){let r=new Vector(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),s=D.areaToGridArea(e,i);if(this.ƀav(t,s))return Vector.zero;let o=t.movePositionInsideGrid(s.topLeft),a=Vector.fromTo(s.topLeft,o),l=this.find(t,o,r);if(l){let c=l.add(a),p=Vector.fromTo(s.topLeft.multiplyNumber(i),e.topLeft);return new 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 Et,s=new Queue(e);for(;s.notEmpty;){let o=s.pop();r.add(o);let a=new Rectangle(o,o.add(i));if(this.ƀav(t,a))return Vector.fromTo(e,o);t.getNeighborPositions(o,"orthogonal").forEach(l=>{r.has(l)||s.add(l);});}}static ƀav(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 Vector(r,i)))return false;return true}};var Ji=Math.SQRT2-1,Ss=class{static{h(this,"PathfinderNode");}constructor(t,e){this.position=t,this.distanceToEnd=e,this.closed=false,this.distanceFromStart=Number.MAX_SAFE_INTEGER,this.parent=void 0;}get pathLength(){return this.distanceFromStart+this.distanceToEnd}getStepCost(t){return this.position.x!==t.position.x&&this.position.y!==t.position.y?Math.SQRT2:1}createSolutionPath(t){let e=[],i=this;for(;i!==void 0;)e.push(i.position),i=i.parent;return e.reverse(),{directPathAvailable:t,path:e}}},Es=class{static{h(this,"PathfinderGrid");}constructor(t,e,i,r){this.ƀey=t,this.ƀlc=i,this.ƀhh=r,this.ƀhv=new BinaryHeap("min"),this.ƀhk=new Grid({size:t.size,defaultValue:void 0});let s=this.ƀce(e);s.distanceFromStart=0,this.ƀhv.add(s.pathLength,s),this.ƀae=s;}get hasOpenNodes(){return this.ƀhv.size>0}getNeighbors(t){let e=[];for(let i of this.ƀey.getNeighborPositions(t.position,this.ƀhh))if(this.ƀey.get(i)){let r=this.ƀhk.get(i)??this.ƀce(i);r.closed||e.push(r);}return e}popLowestPathCostNode(){let t=this.ƀhv.pop();return t.closed=true,t.distanceToEnd<this.ƀae.distanceToEnd&&(this.ƀae=t),t}changeNodeCost(t,e,i){t.distanceFromStart=e,t.parent=i,this.ƀhv.updatePriority(t,t.pathLength)||this.ƀhv.add(t.pathLength,t);}getBestClosedNode(){return this.ƀae}ƀce(t){let e=Math.abs(t.x-this.ƀlc.x),i=Math.abs(t.y-this.ƀlc.y),r=this.ƀhh==="orthogonal"?e+i:e>i?e+Ji*i:i+Ji*e,s=new Ss(t,r);return this.ƀhk.isPointWithinBounds(t)&&this.ƀhk.set(t,s),s}},Zt=class{static{h(this,"PathFinder");}static findPath(t,e,i,r){let s=new Es(t,e,i,r);for(;s.hasOpenNodes;){let o=s.popLowestPathCostNode();if(o.position.isEqual(i))return o.createSolutionPath(true);for(let a of s.getNeighbors(o)){let l=o.distanceFromStart+o.getStepCost(a);l<a.distanceFromStart&&s.changeNodeCost(a,l,o);}}return s.getBestClosedNode().createSolutionPath(false)}};var Qt=class{static{h(this,"VectorFieldPathFinder");}constructor(t,e){this.ƀlb=t,this.ƀy=e,this.ƀfh=this.ƀeh(this.ƀy.size),this.ƀme=new Grid({size:this.ƀy.size,defaultValue:this.ƀfh}),this.ƀct=new Grid({size:this.ƀy.size,defaultValue:void 0});let i=new Et,r=new Queue;for(this.ƀdu(this.ƀy.cropAreaOutsideOfTheGrid(t)).forEach(o=>{this.ƀme.set(o,0),r.add(o);});r.notEmpty;){let o=r.pop();if(!i.has(o)){i.add(o);let a=this.ƀme.getOrFail(o);this.ƀem(o,this.ƀy).forEach(l=>{if(!i.has(l.position)){let c=this.ƀme.getOrFail(l.position),p=a+l.distance;this.ƀy.getOrFail(l.position)&&p<c&&(this.ƀme.set(l.position,p),r.add(l.position));}});}}}getDirectionToTarget(t){if(!t.isInsideRectangle(this.ƀlb)){if(t=this.ƀme.movePositionInsideGrid(t),this.ƀct.has(t))return this.ƀct.get(t);{let e=this.ƀem(t,this.ƀy),i;return this.ƀme.getOrFail(t)>=this.ƀfh?e.some(s=>this.ƀy.get(s.position))&&(e.some(o=>!this.ƀy.get(o.position))?i=this.ƀeb(e):i=this.ƀdw(t,e)):i=this.ƀdw(t,e),this.ƀct.set(t,i),i}}}ƀeb(t){let e=t.filter(i=>this.ƀy.get(i.position)).map(i=>i.direction.radian);return Radian.getAverage(...e)}ƀdw(t,e){let i=e.filter(r=>this.ƀme.getOrFail(r.position)<this.ƀfh).reduce((r,s)=>{let o=this.ƀme.getOrFail(s.position)+s.distance;return o<r.bestWeight?(r.bestDirections=[s.direction],r.bestWeight=o):o===r.bestWeight&&r.bestDirections.push(s.direction),r},{bestDirections:[],bestWeight:this.ƀfh}).bestDirections;return this.ƀes(i,t)}ƀes(t,e){if(t.length>0){let i=t.reduce((r,s)=>r.add(s),Vector.zero);if(i.isZero()||!this.ƀfy(e,i))return Random.pickRandomElement(t).radian;if(t.length>=1)return i.radian}}ƀfy(t,e){let i=t.add(this.ƀlw(e));return this.ƀy.isPointWithinBounds(i)&&this.ƀy.getOrFail(i)}ƀem(t,e){return this.ƀme.getNeighborDirections(t,"all").map(i=>({position:t.add(i),direction:i,distance:i.x!==0&&i.y!==0?14:10}))}ƀdu(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 Vector(r,i));return e}ƀlw(t){let e=t.normalize().round();return new Vector(e.x,e.y)}ƀeh(t){return (t.x+t.y)*20}};var S=class n{static{h(this,"AudioAssets");}static{this.ƀan=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.ƀan.set(e.id,i))));}static createSource(t){let e=n.ƀdv(t),i=n.context.createBufferSource();return i.buffer=e,i}static ƀdv(t){let e=this.ƀan.get(t);if(!e)throw new Error(`Audio: Sound with id ${t} was not loaded.`);return e}};E.onHardReset.subscribe(()=>{S.context=new AudioContext,S.ƀan.clear();}).attachToRoot();var K=1e3,Y=class n{static{h(this,"Audio");}static ƀjy(){return this.ƀfv=new n,this.ƀfv}constructor(){this.ƀgu=S.context.createGain(),this.ƀgt=S.context.createGain(),this.ƀhg=S.context.createGain(),this.ƀkh=S.context.createGain(),this.ƀgu.connect(S.context.destination),this.ƀgt.connect(this.ƀgu),this.ƀhg.connect(this.ƀgt),this.ƀkh.connect(this.ƀgt),this.ƀgv=new I(this.ƀgu.gain,"value",{duration:500*2,animation:x.easeIn,reAnimateHandling:A.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀgv.set({value:0});}setVolumes(t){this.ƀgt.gain.value=t.master,this.ƀhg.gain.value=t.music,this.ƀkh.gain.value=t.sound;}appear(t,e="ease"){switch(e){case "ease":return this.ƀgv.set({value:t?0:1}),this.ƀgv.animate({value:t?1:0}).chainToRoot();case "instant":return this.ƀgv.set({value:t?1:0}),SingleEvent.instant();default:{throw new Error}}}};E.onHardReset.subscribe(()=>{Y.ƀjy();}).attachToRoot();var As=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},nt=class extends q(){static{h(this,"CameraGateway");}};nt=As([u()],nt);var Os=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Rt=class extends q(){static{h(this,"CameraViewGateway");}};Rt=Os([u()],Rt);var Ki;(function(n){n.BackgroundScreen="backgroundScreen",n.Background="background",n.Main="main",n.Foreground="foreground",n.ForegroundScreen="foregroundScreen";})(Ki||(Ki={}));var at;(function(n){n[n.Instant=1]="Instant",n[n.EaseInOut=2]="EaseInOut",n[n.EaseOut=3]="EaseOut";})(at||(at={}));var qt=class{static{h(this,"Camera");}get position(){return this.ƀaq.getCameraPosition()}constructor(){this.ƀaq=P.get(nt),this.ƀau=P.get(Rt),this.ƀaq.createCamera(),this.layers=this.ƀau.getLayers();}setPosition(t){this.ƀaq.setPosition(t);}setTransition(t){this.ƀaq.setTransition(t);}appear(t,e="alpha",i=0){return this.ƀau.appear(t,e,i)}screenPositonToStagePosition(t){return this.ƀau.screenPositonToStagePosition(t)}};var g=class n{static{h(this,"Game");}static get instance(){return this.ƀfv}static{this.pause=Reducer.createOr();}static{this.freeze=Reducer.createOr();}static get camera(){return this.ƀap}static get audio(){return this.ƀx}static appear(t,e){let i=e?.audio??"ease",r=e?.camera??"alpha";return ActionLib.all([this.audio.appear(t,i),this.camera.appear(t,r,i!=="instant"?0:500)]).mapToVoid().chainToRoot()}static get time(){return m.ƀlj}static get setupOptions(){return this.ƀkb}constructor(t){if(this.ƀjn=new Variable(Vector.zero),this.screenSize=this.ƀjn.notifier,this.ƀjo=new Variable(Vector.zero),this.screenSizeCenter=this.ƀjo.notifier,this.devMode=false,n.ƀfv)throw new Error("There can be only one Game instance!");this.ƀbk={screenResolution:void 0,maxScreenResolution:void 0,devMode:false,backgroundColor:ColorHelper.black,antialias:false,resolution:1,...t},this.devMode=this.ƀbk.devMode||false,this.ƀio=new F.Application;let e=n.pause.effect(false).attachToRoot();n.freeze.subscribe(i=>{e.update(i),i?S.context.suspend():S.context.resume();}).attachToRoot();}async setup(t){n.ƀkb=t;let e=JsonHelper.removeUndefinedProperties({backgroundColor:this.ƀbk.backgroundColor,autoStart:false,antialias:this.ƀbk.antialias,resolution:this.ƀbk.resolution,width:this.ƀbk.screenResolution?.width,height:this.ƀbk.screenResolution?.height,useBackBuffer:true,powerPreference:"high-performance",eventFeatures:{globalMove:false}});await this.ƀio.init(e);let i=document.body.appendChild(this.ƀio.canvas);this.ƀjx(i),await Promise.all([M.loadGameAssets(t.spriteAssetDefinitions),M.loadGameAssets(t.fontAssetDefinitions),S.load(t.soundAssetDefinitions)]),n.ƀfv=this,this.renderer=this.ƀio.renderer,globalThis.ƀa=this.ƀio,this.ƀfc(),n.ƀap=new qt,n.ƀx=Y.ƀjy(),this.ƀio.start(),this.ƀio.ticker.add(()=>{n.freeze.value||m.triggerUpdateTick(this.ƀio.ticker.deltaMS);});}setResolution(t){if(this.ƀio.renderer.resolution!==t){this.ƀio.renderer.resolution=t;let e=this.ƀeq();this.ƀio.renderer.resize(e.x,e.y);}}ƀfc(){this.ƀdb(),this.ƀjw(),window.addEventListener("resize",t=>{this.ƀdb(),this.ƀjw();});}ƀdb(){let t=this.ƀeq();(t.x!==this.ƀio.screen.width||t.y!==this.ƀio.screen.height)&&this.ƀio.renderer.resize(t.x,t.y);}ƀjw(){let t=new Vector(this.ƀio.screen.width,this.ƀio.screen.height);this.ƀjn.value=t,this.ƀjo.value=t.multiplyNumber(.5).round();}ƀeq(){let t=this.ƀbk.screenResolution?.width??window.innerWidth,e=this.ƀbk.screenResolution?.height??window.innerHeight;return this.ƀbk.maxScreenResolution&&(t=Math.min(t,this.ƀbk.maxScreenResolution.width),e=Math.min(e,this.ƀbk.maxScreenResolution.height)),new Vector(t,e)}ƀjx(t){this.ƀbk.maxScreenResolution&&(t.style.maxWidth=`${this.ƀbk.maxScreenResolution?.width}px`,t.style.maxHeight=`${this.ƀbk.maxScreenResolution?.height}px`),t.style.width="100%",t.style.height="100%";}};var te=class n extends IDAttachable{static{h(this,"Sound");}static createByName(t,e){let i=g.setupOptions.soundDefinitions[t];if(!i)throw new Error(`Sound: Could not find sound definition with name ${t}.`);return new n(i,e)}get volume(){return this.ƀdq.gain.value}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀdq.gain.value=t,this}constructor(t,e){super(),this.ƀki=t,this.ƀdq=S.context.createGain(),this.ƀdq.connect(Y.ƀfv.ƀkh),this.ƀfg=this.ƀdq,e?.volume!==void 0&&(this.volume=e.volume),this.ƀiu(e?.time??0);}destroy(){this.destroyed||(super.destroy(),this.ƀkx(),this.ƀdq?.disconnect());}ƀlt(){this.ƀfg.disconnect(),this.ƀfg.connect(Y.ƀfv.ƀhg);}ƀiu(t){this.ƀkx();let e=this.ƀki.loop;if(this.ƀkr=NumberHelper.clamp(t,0,e?e.to:this.ƀki.duration),e){let i=e.from,r=e.to;this.ƀiv({soundID:this.ƀki.id,start:this.ƀkr,end:this.ƀkr<i?i:r,loop:false,onComplete:h(()=>{this.ƀkl.disconnect(),this.ƀiv({soundID:this.ƀki.id,start:i,end:r,loop:true});},"onComplete")});}else this.ƀiv({soundID:this.ƀki.id,start:this.ƀkr,end:void 0,loop:false,onComplete:h(()=>this.destroy(),"onComplete")});}ƀkx(){this.ƀkl&&(this.ƀkl.onended=null,this.ƀkl.stop(),this.ƀkl.disconnect());}ƀiv(t){this.ƀkl=S.createSource(t.soundID),this.ƀkl.connect(this.ƀdq),t.onComplete&&(this.ƀkl.onended=t.onComplete),t.loop?(this.ƀkl.loop=true,this.ƀkl.loopStart=t.start,this.ƀkl.loopEnd=t.end??this.ƀkl.buffer.duration,this.ƀkl.start(0,t.start)):this.ƀkl.start(0,t.start,t.end?t.end-t.start:void 0);}};var Fs=800,Ae=-128,ht=class n extends te{static{h(this,"AdvancedSound");}static createByName(t,e){let i=g.setupOptions.soundDefinitions[t];if(!i)throw new Error(`AdvancedSound: Could not find sound definition with name ${t}.`);return new n(i,e)}constructor(t,e){super(t,e),this.ƀlj=new Variable(0),this.time=this.ƀlj.notifier,this.ƀkt=S.context.currentTime-this.ƀkr,this.ƀlj.value=this.ƀkr,m.beforeSceneUpdateAction.subscribe(()=>{this.ƀlj.value=S.context.currentTime-this.ƀkt;}).attach(this),this.ƀfg.disconnect(),this.ƀjz(e?.fade?NumberHelper.clamp(e.fade,0,1):0),this.ƀka(e?.muffle?NumberHelper.clamp(e.muffle,0,1):0),this.ƀfg.connect(Y.ƀfv.ƀkh);}ƀjz(t=0){this.ƀdj=S.context.createGain(),this.ƀdj.gain.value=1-t,this.ƀdi=new I(this.ƀdj.gain,"value",{duration:500,animation:x.lineer,reAnimateHandling:A.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀfg.connect(this.ƀdj),this.ƀfg=this.ƀdj;}ƀka(t=0){this.ƀhe=S.context.createBiquadFilter(),this.ƀhe.type="highshelf",this.ƀhe.frequency.value=Fs,this.ƀhe.gain.value=t*Ae,this.ƀhf=new I(this.ƀhe.gain,"value",{duration:500,animation:x.lineer,reAnimateHandling:A.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀfg.connect(this.ƀhe),this.ƀfg=this.ƀhe;}close(){return this.ƀbb?this.onDestroy():(this.ƀbb=true,this.fade(1,K).notIdle().chain(this).tap(()=>this.destroy()).chainToRoot())}notifyOnTime(t){return this.time.value>t?SingleEvent.createDestroyed():SingleEvent.create(e=>{let i=this.time.filter(r=>r>=t).tap(()=>e()).attach(this);return ()=>i.destroy()})}setFade(t){t=NumberHelper.clamp(t,0,1),this.ƀdi.set({value:1-t});}fade(t,e=500){t=NumberHelper.clamp(t,0,1);let i=t>1-this.ƀdj.gain.value;return e===0?(this.ƀdi.set({value:1-t}),SingleEvent.instant()):this.ƀdi.animate({value:1-t},{duration:e,animation:i?x.easeOut:x.easeIn}).chain(this)}setMuffle(t){t=NumberHelper.clamp(t,0,1),this.ƀhf.set({value:t*Ae});}muffle(t,e=500){return t=NumberHelper.clamp(t,0,1),e===0?(this.ƀhf.set({value:t*Ae}),SingleEvent.instant()):this.ƀhf.animate({value:t*Ae},{duration:e}).chain(this)}destroy(){this.destroyed||(this.ƀdj.disconnect(),this.ƀhe.disconnect()),super.destroy();}};var ee=class n extends IDAttachable{static{h(this,"Music");}static createByName(t,e){let i=g.setupOptions.soundDefinitions[t];if(!i)throw new Error(`AdvancedSound: Could not find sound definition with name ${t}.`);return new n(i,e)}get time(){switch(this.ƀkk.value.type){case "paused":return this.ƀkk.value.value.time;case "playing":return this.ƀkk.value.value.time.value;default:{this.ƀkk.value;throw new Error}}}get volume(){return this.ƀkk.value.value.volume}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀkk.value.value.volume=t,this}constructor(t,e){super(),this.ƀhw={stopPlayingOnPause:true,...e},this.ƀkj=t.id;let i;if(this.ƀhw.stopPlayingOnPause&&g.pause.value)i={type:"paused",value:{time:0,volume:1}};else {let r=new ht(t,this.ƀhw).attach(this);r.ƀlt(),i={type:"playing",value:r};}this.ƀkk=new Variable(i),this.ƀhw.stopPlayingOnPause&&(this.ƀib=g.pause.subscribe(r=>this.ƀfb(r)).attach(this));}notifyOnTime(t){return SingleEvent.create(e=>{let i=this.ƀkk.asyncDropOngoing((r,s)=>{switch(r.type){case "paused":s.drop();break;case "playing":return r.value.notifyOnTime(t);default:{throw new Error}}}).toSingleEvent().tap(()=>e()).attach(this);return ()=>i.destroy()})}close(){return this.ƀbb?this.onDestroy():(this.ƀbb=true,this.ƀib?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀkk.value.type==="playing"?this.ƀkk.value.value.close():SingleEvent.instant(),this.ƀdk?.onDestroy()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀfb(t){if(t){if(this.ƀkk.value.type==="playing"){let e=this.ƀkk.value.value;this.ƀkk.value={type:"paused",value:{time:e.time.value,volume:e.volume}},this.ƀdk=e,ActionLib.all([e.fade(1,K),e.muffle(1,K)]).tap(()=>{this.ƀdk=void 0,e.destroy();}).attach(this);}}else if(this.ƀkk.value.type==="paused"){let{volume:e,time:i}=this.ƀkk.value.value,r=ht.createByName(this.ƀkj,{volume:e,time:i,fade:1,muffle:1}).attach(this);r.ƀlt(),ActionLib.all([r.fade(0,K),r.muffle(0,K)]).attach(this),this.ƀkk.value={type:"playing",value:r};}}};var hi=class extends IDAttachable{static{h(this,"MusicPlayer");}get time(){return this.ƀiw?this.ƀiw.time:0}get volume(){return this.ƀmd}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀmd=t,this.ƀiw&&(this.ƀiw.volume=t),this.ƀia&&(this.ƀia.volume=t),this}constructor(t){super(),this.ƀmd=1,this.ƀhw={stopPlayingOnPause:true,playWhenPaused:void 0,volume:1,...t},this.ƀmd=this.ƀhw.volume,this.ƀhw.playWhenPaused&&this.ƀkc(this.ƀhw.playWhenPaused);}play(t){if(this.ƀbb)throw new Error("Play is called while music player is destroyed.");return this.ƀco=t,SingleEvent.instant().async(()=>{let e=this.ƀiw;if(e)return this.ƀiw=void 0,e.close()}).map(()=>{if(this.ƀco===t)return this.ƀiw=ee.createByName(t,{stopPlayingOnPause:this.ƀhw.stopPlayingOnPause,volume:this.ƀmd}).attach(this),this.ƀiw}).chain(this)}stop(){return SingleEvent.instant().async(()=>{let t=this.ƀiw;if(t)return t.close().tap(()=>{t===this.ƀiw&&(this.ƀiw=void 0);})}).chain(this)}close(){return this.ƀbb?this.onDestroy():(this.ƀbb=true,this.ƀib?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀiw?.close()??SingleEvent.instant(),this.ƀia?.close()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀkc(t){this.ƀib=g.pause.toSequence().asyncDropOngoing(e=>e&&m.wait(K).map(()=>e)).tap(e=>{if(e)this.ƀia=ht.createByName(t,{fade:1,volume:this.ƀmd}).attach(this),this.ƀia.fade(0);else if(this.ƀia){let i=this.ƀia;this.ƀia.fade(1).tap(()=>i.destroy()).attach(this),this.ƀia=void 0;}}).attach(this);}};var li=class extends d{static{h(this,"Placeholder");}constructor(t){super(),this.ƀir=new F.Graphics,this.ƀir.rect(0,0,t.x,t.y).fill({color:0,alpha:1e-9}),this.ƀip.addChild(this.ƀir);}destroy(){this.destroyed||(super.destroy(),this.ƀir.destroy());}};var Ft=class{static{h(this,"TextStyleConverter");}static getPixiTextStyle(t){let e={color: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:Radian.get60,distance:10,color:ColorHelper.black,alpha:.5,...i};r={dropShadow:{blur:s.blur,angle:s.angle.value,distance:s.distance,color:ColorHelper.rgbToHex(s.color),alpha:s.alpha}};}return JsonHelper.removeUndefinedProperties({fontFamily:e.fontFamily,fill: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 De=class{static{h(this,"RichTextDataInConverter");}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),r=RichTextSeparator.process(t,i),s=this.ƀfr(r,e),o=this.ƀs(s);return this.ƀkm(o)}static ƀfr(t,e){let i=new Map,r=new Map,s=h((a,l)=>{if(r.has(l))return r.get(l);let c=Ft.getPixiTextStyle(a);return r.set(l,c),c},"GetPixiStyle");return t.map(a=>{let{style:l,cacheKey:c}=this.ƀdz(a.tags,e,i),p=s(l,c),y=F.CanvasTextMetrics.measureText(" ",new F.TextStyle(p),void 0,false);return {text:a.text,cacheKey:c,style:l,pixiStyle:p,spaceWidth:y.width}})}static ƀdz(t,e,i){let r=t.join("+");if(i.has(r))return {style:i.get(r),cacheKey:r};let s=this.ƀbf(t,e);return i.set(r,s),{style:s,cacheKey:r}}static ƀbf(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:o,...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 ƀkm(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.ƀkn(s.text).map(a=>{let l=new F.TextStyle(s.pixiStyle),c=F.CanvasTextMetrics.measureText(a,l,void 0,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 ƀkn(t){if(t==="")return [""];let e=[],i="",r=t[0]===" ";for(let s=0;s<t.length;s++){let o=t[s],a=o===" ";a===r?i+=o:(e.push(i),i=o,r=a);}return i&&e.push(i),e}};var Be=class{static{h(this,"RichTextTypewriter");}get lineIsEmpty(){return this.ƀcm.length===0}get remainingWidth(){return this.ƀmf-this.ƀcp}constructor(t,e){this.ƀmf=t,this.ƀgj=[],this.ƀcm=[],this.ƀcp=0,this.ƀgi=new Vector(0,0),this.ƀcn=0;let i={rectangleCutOption:void 0,horizontalAlignment:"left",verticalAlignment:"bottom",...e};if(this.ƀfj=i.horizontalAlignment,this.ƀlx=i.verticalAlignment,i.rectangleCutOption){if(i.rectangleCutOption.position.x<0||i.rectangleCutOption.position.x>=this.ƀmf||i.rectangleCutOption.position.y<0)throw new Error("Rectangle cut position is out of bounds");this.ƀcq={direction:i.rectangleCutOption.direction,rectangle:this.ƀbs(i.rectangleCutOption)};}}isSpaceAvailable(t){let e=Math.max(this.ƀcn,t.y),i=this.ƀei(this.ƀgi.y,this.ƀgi.y+e);return this.ƀcp+t.x<=i}insertWord(t){let e=Math.max(this.ƀcn,t.style.height);if(this.ƀcm.length===0){let i=this.ƀej(this.ƀgi.y,this.ƀgi.y+e);this.ƀgi=new Vector(i,this.ƀgi.y),this.ƀcp=this.ƀgi.x;}this.ƀcm.push({chunk:t,position:new Vector(this.ƀcp,this.ƀgi.y)}),this.ƀcn=e,this.ƀcp+=t.style.width;}newLine(){let t=this.ƀgi.y+this.ƀcn,e=this.ƀej(t,t);this.ƀdm(),this.ƀgi=new Vector(e,t),this.ƀcp=this.ƀgi.x,this.ƀcn=0;}print(){return this.ƀdm(),this.ƀgj}ƀdm(){this.ƀcm.length>0&&(this.ƀgj.push(this.ƀg(this.ƀcm)),this.ƀcm=[]);}ƀg(t){return t=this.ƀlz(t),t=this.ƀfl(t),t}ƀfl(t){if(this.ƀfj==="left")return t;let e=this.ƀgi.y+this.ƀcn,i=this.ƀej(this.ƀgi.y,e),s=this.ƀei(this.ƀgi.y,e)-i,o=Math.min(s,t.reduce((l,c)=>l+c.chunk.style.width,0)),a;return this.ƀfj==="center"?a=(s-o)/2:a=s-o,t.map(l=>(l={chunk:l.chunk,position:new Vector(l.position.x+a,l.position.y)},l))}ƀlz(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.ƀlx){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.ƀlx;throw new Error}}return r={chunk:r.chunk,position:new Vector(r.position.x,r.position.y+s)},r})}ƀej(t,e){return this.ƀcq&&(this.ƀcq.direction==="topLeft"||this.ƀcq.direction==="bottomLeft")&&(this.ƀcq.rectangle.isPointInside(new Vector(0,t),{includeEdges:false})||this.ƀcq.rectangle.isPointInside(new Vector(0,e),{includeEdges:false}))?this.ƀcq.rectangle.bottomRight.x:0}ƀei(t,e){return this.ƀcq&&(this.ƀcq.direction==="topRight"||this.ƀcq.direction==="bottomRight")&&(this.ƀcq.rectangle.isPointInside(new Vector(this.ƀmf,t),{includeEdges:false})||this.ƀcq.rectangle.isPointInside(new Vector(this.ƀmf,e),{includeEdges:false}))?this.ƀcq.rectangle.topLeft.x:this.ƀmf}ƀbs(t){let e,i;switch(t.direction){case "topRight":e=new Vector(t.position.x,-1/0),i=new Vector(1/0,t.position.y);break;case "topLeft":e=new Vector(-1/0,-1/0),i=t.position;break;case "bottomRight":e=t.position,i=new Vector(1/0,1/0);break;case "bottomLeft":e=new Vector(-1/0,t.position.y),i=new Vector(t.position.x,1/0);break;default:{t.direction;throw new Error}}return new Rectangle(e,i)}};var Ge=class{static{h(this,"ConsistentSpaceTextWrapper");}static wrapText(t,e){return t.forEach(i=>{i.forEach((r,s)=>{if(e.isSpaceAvailable(new Vector(r.style.width,r.style.height)))if(r.whitespace&&s===i.length-2){let o=i[i.length-1];e.isSpaceAvailable(new Vector(o.style.width+r.style.width,o.style.height))?e.insertWord(r):this.ƀmg(r,e);}else e.insertWord(r);else e.lineIsEmpty?e.insertWord(r):r.whitespace?this.ƀmg(r,e):(e.newLine(),e.insertWord(r));}),e.newLine();}),e.print()}static ƀmg(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 o={text:" ".repeat(r),whitespace:true,style:{...t.style,width:r*t.style.spaceWidth}};e.insertWord(o);}e.newLine();let s=t.text.length-r-1;if(s>0){let o={text:" ".repeat(s),whitespace:true,style:{...t.style,width:s*t.style.spaceWidth}};e.insertWord(o);}}};var _e=class{static{h(this,"RichTextDataOutConverter");}static process(t){return t=this.ƀgz(t),t=this.ƀln(t),this.ƀax(t)}static ƀgz(t){return t.map(e=>{let i=[],r,s=true;return e.forEach(o=>{if(!r||r.chunk.style.cacheKey!==o.chunk.style.cacheKey)r&&i.push(r),r=o,s=o.chunk.whitespace;else {let a=r.chunk.text+o.chunk.text;s=o.chunk.whitespace&&s,r={chunk:{text:a,whitespace:s,style:{...r.chunk.style,width:r.chunk.style.width+o.chunk.style.width}},position:r.position};}}),r&&i.push(r),i})}static ƀln(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 ƀax(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 re=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=De.process(t,e),r=JsonHelper.removeUndefinedProperties({rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),s=new Be(e.default.wordWrapWidth??1/0,r),o=Ge.wrapText(i,s);return _e.process(o)}};var Ks=1,er=1/Ks,se=class extends d{static{h(this,"Text");}get ƀlg(){if(!this.ƀlh){let t=new F.TextStyle(this.ƀit);this.ƀlh=F.CanvasTextMetrics.measureText(this.ƀlf,t);}return this.ƀlh}get ascent(){return this.ƀlg.fontProperties.ascent}constructor(t,e){super(),this.ƀit=Ft.getPixiTextStyle(e),this.setText(t);}destroy(){this.destroyed||(super.destroy(),!this.ƀis.destroyed&&this.ƀis.destroy());}setAnchor(t){return this.anchor=t,this}get anchor(){return new Vector(this.ƀis.anchor.x,this.ƀis.anchor.y)}set anchor(t){this.ƀi=t,this.ƀis.anchor.set(t.x,t.y),this.ƀjg();}setText(t){return this.ƀlf!==t&&(this.ƀlf=t,this.ƀjd()),this}setColor(t){let e=ColorHelper.rgbToHex(t);return this.ƀit.fill!==e&&(this.ƀit.fill=e,this.ƀjd()),this}ƀjd(){this.ƀis?.destroy(),this.ƀkz?.destroy(),this.ƀkz=void 0,this.ƀlh=void 0;let t=new F.TextStyle(this.ƀit);this.ƀis=new F.Text({text:this.ƀlf,style:t}),this.ƀi&&this.ƀis.anchor.set(this.ƀi.x,this.ƀi.y),this.ƀjg(),this.ƀis.scale.set(er,er),this.ƀip.addChild(this.ƀis),this.ƀit.lineThrough&&(this.ƀkz=this.ƀe(this.ƀis,this.ƀit.fill),this.ƀip.addChild(this.ƀkz));}ƀjg(){let t=F.CanvasTextMetrics.measureText(this.ƀlf,new F.TextStyle({...this.ƀit,dropShadow:false})),e=-this.ƀis.anchor.x*t.width,i=-this.ƀis.anchor.y*t.height;this.ƀis.boundsArea=new F.Rectangle(e,i,t.width,t.height);}ƀe(t,e){let i=F.CanvasTextMetrics.measureText(t.text,t.style),r=Math.max(1,Math.round(i.lineHeight*.07)),s=r%2*.5,o=new F.Graphics,a=0;return i.lines.forEach((l,c)=>{let p=F.CanvasTextMetrics.measureText(l,t.style),y=Math.round(a+(p.fontProperties.ascent-p.fontProperties.descent)*.6+p.fontProperties.descent)+s,w=0;t.style.align==="center"?w=0+(t.width-p.width)*.5:t.style.align==="right"&&(w=0+t.width-p.width),w=Math.floor(w),o.moveTo(Math.floor(w),y),o.lineTo(Math.floor(w+p.width),y),a+=p.lineHeight;}),o.stroke({width:r,color:e}),o}};var ci=class extends d{static{h(this,"RichText");}constructor(t,e){super(),re.process(t,e).forEach(r=>new se(r.text,r.style).setPosition(r.position).displayParent(this).attach(this));}};var pi=class extends d{static{h(this,"UpdatableContainer");}},ui=class extends d{static{h(this,"DisplayObjectArray");}constructor(t,e){super(),this.ƀby=t,this.ƀcu=new Map,this.ƀhw={trackBy:h((i,r)=>r,"trackBy"),positioning:{direction:"vertical",spacing:0},...e};}set(t){let e=new Set(this.ƀcu.keys()),i=0;t.forEach((r,s)=>{let o=this.ƀhw.trackBy(r,s),a;this.ƀcu.has(o)?(a=this.ƀcu.get(o),e.delete(o),a.update(r)):(a=this.ƀby(r).displayParent(this).attach(this),this.ƀcu.set(o,a)),this.ƀhw.positioning.direction==="horizontal"?(a.x=i,i+=a.size.x+this.ƀhw.positioning.spacing):(a.y=i,i+=a.size.y+this.ƀhw.positioning.spacing);}),e.forEach(r=>{this.ƀcu.get(r).destroy(),this.ƀcu.delete(r);});}};var oe=class n extends d{static{h(this,"MenuUI");}static{this.ƀfx=Reducer.createExistenceChecker();}static{this.isAnyMenuTransitioning=this.ƀfx.notifier;}constructor(t,e){super(),this.ƀho=new SingleAction,this.onCreate=this.ƀho.notifier,this.ƀhq=new SingleAction,this.onOpen=this.ƀhq.notifier,this.ƀhl=new SingleAction,this.onClose=this.ƀhl.notifier,this.ƀbb=false;let i={closeOnBackgroundClick:true,appearAnimationDuration:150,backgroundDarkeningRatio:.3,...e};this.setAlpha(0),this.ƀp=new I(this,"alpha",{animation:x.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:A.CompletePrevious,completionHandling:T.StayInCurrentState});let r=R.createRectangle(new Vector(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(i.backgroundDarkeningRatio).setInteractive(true).displayParent(this).attach(this);this.ƀgx=J.createByName(t).setPosition(new Vector(0,0)).setInteractive(true).displayParent(this).attach(this),g.instance.screenSize.subscribe(o=>{r.aspectRatio=o.x/o.y,r.scale=Math.max(o.x,o.y),r.setPosition(Vector.zero,{holdFrom:Vector.half}),this.setPosition(o.multiplyNumber(.5));}).attach(this),this.ƀho.resolve();let s=n.ƀfx.effect().attach(this);this.ƀp.animate({alpha:1}).chain(this).tap(()=>{this.ƀhq.resolve(),s.destroy(),i.closeOnBackgroundClick&&r.on(Dt.Click).take(1).tap(()=>this.close()).attach(this);}).attachToRoot();}getBoundingMask(){return this.ƀgx.getBoundingMask()}close(){if(!this.ƀbb){this.ƀbb=true;let t=n.ƀfx.effect().attach(this);this.ƀp.animate({alpha:0}).chain(this).map(()=>{this.ƀhl.resolve(),t.destroy(),this.destroy();}).chainToRoot();}return this.onClose.toSingleEvent()}};var fi=class extends wt{static{h(this,"MenuEntity");}static subscribeIsOpen(){return ActionLib.merge(this.continuesSubscription().map(t=>t.type==="open"),SingleEvent.instant(this.getInstance()!==void 0))}constructor(t){super(),this.ƀhw=t,queueMicrotask(()=>{if(!this.ƀgy)throw new Error("MenuEntity: MenuEntity has to have a MenuView.")});}ƀjf(t){this.ƀgy=t,this.ƀgy.onClose.subscribe(()=>this.destroy()).attach(this);}onCreate(){return this.ƀgy.onCreate.toSingleEvent()}onOpen(){return this.ƀgy.onOpen.toSingleEvent()}onClose(){return this.ƀgy.onClose.toSingleEvent()}close(){return this.ƀgy.close()}};var mi=class extends U{static{h(this,"MenuView");}constructor(t,e,i){super();let r=JsonHelper.removeUndefinedProperties({appearAnimationDuration:i.appearAnimationDuration,backgroundDarkeningRatio:i.backgroundDarkeningRatio,closeOnBackgroundClick:t.ƀhw.closeOnBackgroundClick}),s=new oe(e,r).displayParent(g.camera.layers.foregroundScreen).attach(this);t.ƀjf(s);let o=new SingleAction;s.onCreate.subscribe(()=>o.resolve(s)).attach(this),this.onCreate=o.notifier,this.onOpen=s.onOpen.notifier,this.onClose=s.onClose.notifier;}};var ro=.65,so=.01,Fe=class{static{h(this,"SmoothScroller");}get scrollHeight(){return this.ƀjp}get contentSize(){return this.ƀbm.size.ceil()}constructor(t,e,i,r){this.ƀbm=t,this.ƀv=e,this.ƀhy=i,this.ƀkg=r,this.ƀfu=false,this.ƀjp=e-i*2,this.ƀbm.y=i,this.ƀla=i;}onWheel(t){this.setTarget(this.ƀla-t*ro);}scrollToTop(){this.setTarget(1/0);}scrollToBottom(){this.setTarget(-1/0);}setTarget(t){this.ƀla=NumberHelper.clamp(t,this.ƀv-this.ƀhy-this.contentSize.y,this.ƀhy);}jumpToTarget(){this.ƀbm.y=this.ƀla;}update(t){let e=this.contentSize;if(e.y<=this.ƀjp){switch(this.ƀkg){case "start":this.ƀla=this.ƀhy;break;case "center":this.ƀla=(this.ƀv-e.y)*.5;break;case "end":this.ƀla=this.ƀv-e.y-this.ƀhy;break;default:{this.ƀkg;throw new Error}}this.ƀfu||(this.ƀbm.y=this.ƀla);}this.ƀfu=true;let i=this.ƀla-this.ƀbm.y;this.ƀbm.y=this.ƀbm.y+i*so*t;}};var no=15,yi=class extends d{static{h(this,"ScrollAreaUI");}get contentAreaSize(){return this.ƀbn}get contentSize(){return this.ƀjq.contentSize}constructor(t,e={}){super();let i={padding:no,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 d().displayParent(this).attach(this);new Pt(r,t,i.padding).attach(this);let s=new F.Graphics;s.rect(0,0,t.x,t.y).fill({color:0,alpha:1e-9}),r.ƀip.addChild(s);let o=new d().displayParent(r).attach(this);this.ƀjq=new Fe(o,t.y,i.padding,i.smallContentAlign),this.ƀbn=new Vector(t.x,this.ƀjq.scrollHeight),s.eventMode="dynamic",s.addEventListener("wheel",a=>{this.ƀjq.onWheel(a.deltaY);}),o.setInteractive(true),o.ƀip.addEventListener("wheel",a=>{this.ƀjq.onWheel(a.deltaY);}),m.afterSceneUpdateAction.subscribe(a=>this.ƀjq.update(a.delta)).attach(this),this.addChildTo=o;}scrollToTop(t){this.ƀjq.scrollToTop(),t?.instant&&this.ƀjq.jumpToTarget();}scrollToBottom(t){this.ƀjq.scrollToBottom(),t?.instant&&this.ƀjq.jumpToTarget();}};var ao=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},_=class extends wt{static{h(this,"CameraEntity");}constructor(){super(...arguments),this.position=new Variable(Vector.zero),this.offset=new Variable(Vector.zero),this.targetPosition=new Variable(void 0),this.focusingNewTargetInfo=new Variable(void 0);}};_=ao([gt()],_);var ho=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},lo=1500,Le=class{static{h(this,"CameraService");}createCamera(){return new _().attachToRoot()}getCameraPosition(){let t=_.getInstanceOrFail();return Vector.fromTo(t.offset.value,t.position.value)}setPosition(t){let e=_.getInstanceOrFail();e.targetPosition.value=t;}setTransition(t){let e=_.getInstanceOrFail();e.focusingNewTargetInfo.value={time:g.time,duration:t?.duration??lo,position:e.position.value,roundPosition:t?.roundPosition??false,roundPositionThreshold:t?.roundPositionThreshold??0,focusingAnimation:t?.animation??at.Instant};}update(t,e){let i=_.getInstanceOrFail(),r=i.targetPosition.value;r&&(i.focusingNewTargetInfo.value?this.ƀgc(i,r,t):i.position.value=r);}ƀgc(t,e,i){let r=t.focusingNewTargetInfo.value;if(r.focusingAnimation===at.Instant)this.ƀbg(t,e);else {let s=(i-r.time)/r.duration;if(s>=1)this.ƀbg(t,e);else {let o;r.focusingAnimation===at.EaseInOut?o=V.easeInOut(s):r.focusingAnimation===at.EaseOut?o=V.easeOut(s):o=1;let a=r.position.lerp(e,o);r.roundPosition&&(Math.abs(a.x-r.position.x)>=r.roundPositionThreshold&&(a=new Vector(Math.round(a.x),a.y)),Math.abs(a.y-r.position.y)>=r.roundPositionThreshold&&(a=new Vector(a.x,Math.round(a.y)))),t.position.value=a;}}}ƀbg(t,e){t.position.value=e,t.focusingNewTargetInfo.value=void 0;}};Le=ho([u()],Le);var co=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},po=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},wi=class{static{h(this,"CameraController");}constructor(t){this.ƀat=t;}createCamera(){return this.ƀat.createCamera().id}update(t,e){this.ƀat.update(t,e);}setPosition(t){this.ƀat.setPosition(t);}setTransition(t){this.ƀat.setTransition(t);}getCameraPosition(){return this.ƀat.getCameraPosition()}};wi=co([tt(nt),po("design:paramtypes",[Le])],wi);var He=class{static{h(this,"PositionConversionHelper");}static includeScaleInScreenPosition(t,e,i){if(e!==1){let r=Vector.fromTo(i,t).multiplyNumber(1/e);return i.add(r)}else return t}};var fo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},mo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},It=class extends U{static{h(this,"CameraView");}constructor(t){super(),this.ƀdd=t,this.ƀkp=(()=>{let e=new d().attach(this);return e.ƀip=g.instance.ƀio.stage,e})(),this.ƀjk=new d().setAlpha(0).displayParent(this.ƀkp).attach(this),this.ƀaf=R.createRectangle(new Vector(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(0).displayParent(this.ƀkp).attach(this),this.ƀac=new d().displayParent(this.ƀjk).attach(this),this.ƀas=new d().displayParent(this.ƀjk).attach(this),this.ƀdp=new d().setSortableChildren(true).displayParent(this.ƀjk).attach(this),this.ƀar=new d().setSortableChildren(true).displayParent(this.ƀas).attach(this),this.ƀdo=new d().setSortableChildren(true).setRenderGroup().setZIndex(20).displayParent(this.ƀar).attach(this),this.ƀgp=new d().setSortableChildren(true).setRenderGroup().setZIndex(10).displayParent(this.ƀar).attach(this),this.ƀab=new d().setRenderGroup().setZIndex(0).displayParent(this.ƀar).attach(this),this.ƀh=new I(this.ƀjk,"alpha",{duration:500,animation:x.easeInOutCubic,reAnimateHandling:A.CompletePrevious,completionHandling:T.StayInCurrentState}),this.ƀag=new I(this.ƀaf,"alpha",{duration:500,animation:x.easeInOutCubic,reAnimateHandling:A.CompletePrevious,completionHandling:T.StayInCurrentState}),g.instance.screenSize.subscribe(e=>{this.ƀaf.aspectRatio=e.x/e.y,this.ƀaf.scale=Math.max(e.x,e.y),this.ƀaf.setPosition(Vector.zero,{holdFrom:Vector.zero});}).attach(this),this.ƀdd.position.subscribe(e=>{this.ƀar.position=this.ƀbt(e);}).attach(this),this.ƀdd.offset.subscribe(e=>{this.ƀas.position=e;}).attach(this),this.ƀag.set({alpha:0}),this.ƀh.set({alpha:0});}screenPositonToStagePosition(t){let e=He.includeScaleInScreenPosition(t,this.ƀkp.scale,g.instance.screenSizeCenter.value);return new Vector(e.x-this.ƀar.position.x-this.ƀas.position.x,e.y-this.ƀar.position.y-this.ƀas.position.y)}getLayers(){return {backgroundScreen:this.ƀac.id,background:this.ƀab.id,main:this.ƀgp.id,foreground:this.ƀdo.id,foregroundScreen:this.ƀdp.id}}appear(t,e,i){switch(e){case "alpha":return this.ƀag.set({alpha:0}),this.ƀh.set({alpha:t?0:1}),SingleEvent.instant().async(()=>i>0&&m.wait(i),"tap").async(()=>this.ƀh.animate({alpha:t?1:0})).chain(this);case "pureBlack":return this.ƀh.set({alpha:1}),this.ƀag.set({alpha:t?1:0}),SingleEvent.instant().async(()=>i>0&&m.wait(i),"tap").async(()=>this.ƀag.animate({alpha:t?0:1})).chain(this);case "instant":return this.ƀh.set({alpha:t?1:0}),this.ƀag.set({alpha:t?0:1}),SingleEvent.instant();default:{throw new Error}}}ƀbt(t){return Vector.fromTo(t,g.instance.screenSizeCenter.value)}};It=fo([qe({entity:_}),mo("design:paramtypes",[_])],It);var go=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},vi=class{static{h(this,"CameraViewController");}getLayers(){let t=_.getInstanceOrFail().id;return It.getInstanceOrFail(t).getLayers()}appear(t,e,i){let r=_.getInstanceOrFail().id;return It.getInstanceOrFail(r).appear(t,e,i)}screenPositonToStagePosition(t){let e=_.getInstanceOrFail().id;return It.getInstanceOrFail(e).screenPositonToStagePosition(t)}};vi=go([tt(Rt)],vi);var wo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},xo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},bi=class{static{h(this,"KeyboardService");}constructor(){this.ƀge=new Action,this.keyPressed=this.ƀge.notifier,this.ƀgf=new Action,this.keyReleased=this.ƀgf.notifier,this.ƀgl=new Set,this.ƀgk=new Set,window.addEventListener("keydown",t=>{this.ƀgl.add(t.code),this.ƀgk.add(t.code),!t.repeat&&this.ƀge.trigger({key:t.key,code:t.code});}),window.addEventListener("keyup",t=>{this.ƀgl.delete(t.code),this.ƀgf.trigger({key:t.key,code:t.code});}),window.addEventListener("blur",()=>{this.ƀgl.clear();}),m.afterSceneUpdateAction.subscribe(()=>this.ƀgk.clear()).attachToRoot();}isKeyDown(t,e){return (e?.onlyPressedThisFrame?this.ƀgk:this.ƀgl).has(t)}};bi=wo([u(),xo("design:paramtypes",[])],bi);var vo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},bo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},he=class{static{h(this,"MouseService");}constructor(){this.ƀft=new Variable(false),this.initialMouseMovementHappened=this.ƀft.notifier,this.ƀkq=new Variable(Vector.zero,{notifyOnChange:true}),this.stagePosition=this.ƀkq.notifier,this.ƀjm=new Variable(Vector.zero,{notifyOnChange:true}),this.screenPosition=this.ƀjm.notifier,this.ƀgo=new Variable(false),this.mainButtonState=this.ƀgo.notifier,this.ƀjr=new Variable(false),this.secondaryButtonState=this.ƀjr.notifier,this.ƀks(),window.addEventListener("pointerdown",t=>{t.button===0?this.ƀgo.value=true:t.button===2&&(this.ƀjr.value=true);},{capture:true}),window.addEventListener("pointerup",t=>{t.button===0?this.ƀgo.value=false:t.button===2&&(this.ƀjr.value=false);},{capture:true}),window.addEventListener("blur",()=>{this.ƀgo.value=false,this.ƀjr.value=false;},{capture:true});}ƀks(){let t=Vector.zero;window.addEventListener("pointermove",e=>{t=new Vector(e.clientX,e.clientY),this.ƀft.value=true;},{capture:true}),m.beforeSceneUpdateAction.subscribe(()=>{this.ƀjm.value=this.ƀba(t);}).attachToRoot(),m.afterSceneUpdateAction.subscribe(()=>{this.ƀkq.value=g.camera.screenPositonToStagePosition(this.ƀjm.value);}).attachToRoot();}ƀba(t){let i=g.instance.renderer.canvas.getBoundingClientRect(),r=i.width,s=i.height;if(r<=0||s<=0)return Vector.zero;let o=g.instance.renderer.screen,a=(t.x-i.left)/r*o.width,l=(t.y-i.top)/s*o.height;return a=NumberHelper.clamp(a,0,o.width),l=NumberHelper.clamp(l,0,o.height),new Vector(a,l)}};he=vo([u(),bo("design:paramtypes",[])],he);var Po=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},So=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Pi=class{static{h(this,"MouseTargetFocusService");}get focusedInLastFrame(){return this.ƀdn}get lastFocusedPosition(){return this.ƀgh}constructor(t){this.ƀhc=t,this.ƀhs=new Action,this.onTargetFocus=this.ƀhs.notifier,this.ƀll=0,this.ƀlm=false,this.ƀdn=false,this.ƀgh=void 0,m.beforeSceneUpdateAction.subscribe(e=>this.ƀlp(e.delta)).attachToRoot();}ƀlp(t){if(this.ƀhd){let e=this.ƀep(this.ƀhc.stagePosition.value,this.ƀhd);this.ƀid===void 0?this.ƀid=e:this.ƀaw(e,t);}this.ƀhd=this.ƀhc.stagePosition.value;}ƀaw(t,e){this.ƀid-t>10?(this.ƀll=Math.max(250,this.ƀll),this.ƀlm=true):this.ƀll>1e3&&(this.ƀlm=true);let i=this.ƀll>=300&&this.ƀlm;this.ƀgd(i,t,e);}ƀgd(t,e,i){(t||e>this.ƀid)&&(this.ƀid=e),t?(this.ƀlm=false,this.ƀll=0,this.ƀdn=true,this.ƀgh=this.ƀhc.stagePosition.value,this.ƀhs.trigger(this.ƀgh)):(this.ƀll+=i,this.ƀdn=false);}ƀep(t,e){let i=Vector.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};Pi=Po([u(),So("design:paramtypes",[he])],Pi);var Si=10.8,Ei=10.01,rt;(function(n){n[n.Point=1]="Point",n[n.Circle=2]="Circle",n[n.Polygon=3]="Polygon",n[n.Rectangle=4]="Rectangle";})(rt||(rt={}));var f=class n{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return 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 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=>n.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new W.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};var lt="border";var Ao=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},le=class extends q(){static{h(this,"PhysicsGateway");}};le=Ao([u()],le);var Oo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ct=class extends q(){static{h(this,"PhysicsInternalGateway");}};ct=Oo([u()],ct);var b=class n extends ${static{h(this,"PhysicsEntity");}static{this.ƀhx=new Map;}static{this.ƀih=new Map;}static getFromP2BodyID(t){return n.ƀhx.get(t)}static getFromP2BodyIDOrFail(t){let e=n.ƀhx.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=n.ƀih.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(n.ƀih.values())}get area(){return this.ƀu}get mass(){return this.ƀgs}get collisions(){return this.ƀbc}constructor(t,e,i){super(),this.ƀhm=new Action,this.onCollision=this.ƀhm.notifier,this.type="dynamic",this.ƀu=0,this.ƀgs=0,this.ƀbc=[],this.physicsWorldID=t,this.ƀij=P.get(ct);let r=this.ƀij.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀij.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀii=this.ƀij.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀik=this.ƀij.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀij.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀu=this.p2Body.getArea(),this.ƀgs=this.p2Body.mass,this.p2Body.position=f.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀij.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!");n.ƀhx.set(this.p2Body.id,this),n.ƀih.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀij.removeBody(this.physicsWorldID,this.p2Body),n.ƀhx.delete(this.p2Body.id),n.ƀih.delete(this.id));}canCollideWith(t){return f.arePhysicsGroupsCollidable(this.ƀii,this.ƀik,t.ƀii,t.ƀik)}ƀjt(t){this.ƀbc=t,t.length>0&&this.ƀhm.trigger(t);}};var ce=class extends b{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=f.arrayToVector(this.p2Body.position),this.rotation=new Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:Vector.zero,rotationalSpeed:0}}};var Ti=class extends ${static{h(this,"MovableEntity");}constructor(){super(),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),m.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀkw(t,e);}).attach(this);}ƀkw(t,e){this.position.value=this.position.value.add(this.velocity.value.multiplyNumber(e)),this.rotation.value=new Radian(this.rotation.value.value+this.rotationalSpeed.value*e);}};var Ri=class extends b{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),this.ƀfm=false,this.ƀfn=false,this.ƀfp=false,this.ƀfo=false,this.ƀie(),this.ƀgm(),P.get(ct).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀkw(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}}ƀkw(t,e){this.ƀfm=true,this.ƀfn=true,this.ƀfp=true,this.ƀfo=true,this.ƀie();}ƀie(){this.position.value=f.arrayToVector(this.p2Body.position),this.rotation.value=new Radian(this.p2Body.angle),this.velocity.value=f.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀgm(){this.position.subscribe(t=>{this.ƀfm?this.ƀfm=false:this.p2Body.position=[t.x,t.y];}).attach(this),this.rotation.subscribe(t=>{this.ƀfn?this.ƀfn=false:this.p2Body.angle=t.value;}).attach(this),this.velocity.subscribe(t=>{this.ƀfp?this.ƀfp=false:this.p2Body.velocity=[t.x,t.y];}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀfo?this.ƀfo=false:this.p2Body.angularVelocity=t;}).attach(this);}};var Go=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},_o=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},v=class extends ${static{h(this,"PhysicsWorldEntity");}constructor(t,e,i,r,s,o,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 Variable(false),this.lastP2Time=new Variable(0),this.onPhysicsStep=new Action,this.mapSize=t,this.mapSizeCenter=this.mapSize.multiplyNumber(.5),this.modifyUpdateCycle=e,this.p2World=i,this.materials=r,this.materialDefinitions=s,this.physicsBodyGroupToP2Group=o,this.physicsBodyGroupToP2Mask=a;}};v=Go([gt(),_o("design:paramtypes",[Vector,Boolean,W.World,Map,Map,Map,Map])],v);var Lo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(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,o)=>{if(o>31)return console.error("Cannot have more than 32 physics body groups"),{};i.set(s,1<<o),r.set(s,0);}),e.map(([s,o])=>{if(!i.has(s))throw new Error(`Physics body group "${s}" not found`);if(!i.has(o))throw new Error(`Physics body group "${o}" not found`);let a=r.get(s),l=r.get(o),c=i.get(s),p=i.get(o);r.set(s,a|p),r.set(o,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),o=t.physicsBodyGroupToP2Group.get(i),a=t.physicsBodyGroupToP2Mask.get(i);return (s&o)!==0&&(a&r)!==0}};X=Lo([u()],X);var Ho=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},jo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ue=class{static{h(this,"AvailabilityGridCacheService");}constructor(t){this.ƀig=t;}getCollidableGrids(t,e){let i=[];return t.availabilityGridCache.forEach((r,s)=>{r.forEach((o,a)=>{this.ƀig.canCollide(t,a,e)&&i.push({grid:o,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();}};Ue=Ho([u(),jo("design:paramtypes",[X])],Ue);var Wo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Uo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},pt=class{static{h(this,"AvailabilityGridService");}constructor(t,e){this.ƀig=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 o=D.areaToGridArea(r,s.cellSize);s.grid.setArea(o,false);});}findClosestAvailableSpace(t,e,i,r=50){return e.aabbNeedsUpdate=true,e.updateAABB(),Xt.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.ƀcb(t,e,i),this.ƀz.set(t,e,i,r)),r}ƀcb(t,e,i){let r=new Grid({size:new Vector(Math.floor(t.mapSize.x/e),Math.floor(t.mapSize.y/e)),defaultValue:true});return t.p2World.bodies.forEach(s=>{let o=b.getFromP2BodyIDOrFail(s.id);if(o.includeInPathfinding&&this.ƀig.canCollide(t,o.physicsBodyGroup,i)){let a=this.ƀeg(s,e);r.setArea(a,false);}}),r}ƀeg(t,e){let i=f.aabbToBoundingBox(t.aabb);return D.areaToGridArea(i,e)}};pt=Wo([u(),Uo("design:paramtypes",[X,Ue])],pt);var zo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Jo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},jt=class{static{h(this,"PathFinderService");}constructor(t){this.ƀif=t;}findPathAStar(t,e,i,r,s){s||(s={}),s.neighborType===void 0&&(s.neighborType="orthogonal"),s.gridCellSize===void 0&&(s.gridCellSize=50);let o=v.getInstanceByIDOrFail(t),a,l;Comparator.isNumber(i)?(l=b.getPhysicsInstanceOrFail(i).p2Body,a=f.arrayToVector(l.position)):a=i;let c=D.positionToGridPosition(e,s.gridCellSize),p=D.positionToGridPosition(a,s.gridCellSize),y=this.ƀif.getAvilabilityGrid(o,s.gridCellSize,r);if(l){let C=f.aabbToBoundingBox(l.aabb),Ct=D.areaToGridArea(C,s.gridCellSize);y.setArea(Ct,true);}let w=Zt.findPath(y,c,p,s.neighborType);return w.path=w.path.map(C=>D.gridPositionToPosition(C,s.gridCellSize)),w}findPathDirection(t,e,i,r,s=50){let o=v.getInstanceByIDOrFail(t),a;if(Comparator.isNumber(i)){let w=b.getPhysicsInstanceOrFail(i);a=f.aabbToBoundingBox(w.p2Body.aabb);}else a=new Rectangle(i,i);let l=D.areaToGridArea(a,s),c=JSON.stringify({targetGridArea:l,collidableWithGroup:r}),p=o.vectorFieldCache.get(c);if(!p){let w=this.ƀif.getAvilabilityGrid(o,s,r);p=new Qt(l,w),o.vectorFieldCache.set(c,p);}let y=D.positionToGridPosition(e,s);return p.getDirectionToTarget(y)}};jt=zo([u(),Jo("design:paramtypes",[pt])],jt);var Ko=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Xo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Q=class{static{h(this,"TestVisualsService");}constructor(t,e){this.ƀaa=t,this.ƀhz=e;}printPathfindingTestGrid(t,e,i,r,s,o){let a=v.getInstanceByIDOrFail(t);this.ƀaa.getAvilabilityGrid(a,o,r).map((c,p)=>({position:D.gridPositionToPosition(p,o),availability:c})).forEach(c=>{if(c.position.isInsideRectangle(s)){let p=this.ƀhz.findPathDirection(t,c.position,i,r),y;p===void 0?y=R.createRectangleBorders(new Vector(8,8),2,ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).attach(a):y=R.createArrow(25,c.availability?ColorHelper.green:ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).setRotation(p).attach(a),new I(y,"alpha",{duration:1e3,animation:x.easeIn}).animate({alpha:0}).tap(()=>y.destroy()).attach(y);}});}createExplosionDebugVisual(t,e,i,r,s,o=300){let a=new d().displayParent(e).setAlpha(.5).attach(t);R.createCircle(s,ColorHelper.blue).toSprite().displayParent(a).setPosition(r,{round:false}).setAlpha(.5).attach(t),i.forEach(c=>{let p=c.hits.length>0?ColorHelper.red:ColorHelper.white;R.createVector(r,c.line.to,p).toSprite().displayParent(a).attach(t);}),new I(a,"alpha",{duration:o,animation:x.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}createElipticExplosionDebugVisual(t,e,i,r,s,o,a=300){let l=new d().displayParent(e).setAlpha(.5).attach(t);R.createElipse(o,ColorHelper.blue).toSprite().displayParent(l).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attach(t),i.forEach(p=>{let y=p.hits.length>0?ColorHelper.red:ColorHelper.white;R.createVector(p.line.from,p.line.to,y).toSprite().displayParent(l).attach(t);}),new I(l,"alpha",{duration:a,animation:x.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 Radian(t.angle),o=i?.color??ColorHelper.blue,a=new d().displayParent(e).setPosition(r,{round:false}).setRotation(s).setAlpha(.5).attachToRoot();t.shapes.forEach(c=>{this.ƀcw(c,o).displayParent(a).attachToRoot();}),new I(a,"alpha",{duration:1e3,animation:x.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}ƀcw(t,e){switch(t.type){case W.Shape.PARTICLE:throw new Error("Not implemented");case W.Shape.LINE:throw new Error("Not implemented");case W.Shape.PLANE:throw new Error("Not implemented");case W.Shape.CIRCLE:throw new Error("Not implemented");case W.Shape.CAPSULE:throw new Error("Not implemented");case W.Shape.BOX:throw new Error("Not implemented");case W.Shape.HEIGHTFIELD:throw new Error("Not implemented");case W.Shape.CONVEX:return this.ƀcv(t,e);default:{t.type;throw new Error}}}ƀcv(t,e){let i=[t.vertices.map(r=>({x:r[0],y:r[1]}))];return R.createPolygon(i,e).toSprite()}};Q=Ko([u(),Xo("design:paramtypes",[pt,jt])],Q);var qo=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},tn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},$e=class{static{h(this,"HitTestService");}constructor(t){this.ƀle=t;}hitTest(t,e){let i=t.world,r=b.getFromP2BodyIDOrFail(t.id),s=f.cloneP2Body(t);this.ƀt(s,e);let o=i.broadphase.aabbQuery(i,this.ƀds(s)).map(l=>b.getFromP2BodyIDOrFail(l.id)).filter(l=>l.includeInPathfinding).filter(l=>r.canCollideWith(l)).map(l=>f.cloneP2Body(l.p2Body)),a=false;if(o.length!==0){let l=new W.World;l.addBody(s),o.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?ColorHelper.red:ColorHelper.green;this.ƀle.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);}ƀds(t){return t.aabbNeedsUpdate=true,t.updateAABB(),t.aabb}};$e=qo([u(),tn("design:paramtypes",[Q])],$e);var rn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ke=class{static{h(this,"CollisionsService");}registerPhysicsWorld(t){t.p2World.on("beginContact",e=>{e.contactEquations.forEach(i=>{this.ƀje(t,i);});});}step(t,e,i){b.getPhysicsEntities().forEach(r=>{r.ƀbc=[];}),t.p2World.narrowphase.contactEquations.forEach(r=>{this.ƀje(t,r);}),t.bodiesInContactWith.forEach((r,s)=>{this.ƀfd(r.p2Body),r.entity.ƀjt(t.collisionReports.get(s)||[]);}),t.bodiesInContactWith.clear(),t.collisionReports.clear();}ƀfd(t){let e=f.arrayToVector(t.velocity);e.length>Si&&(e=e.normalize(Si),t.velocity=f.vectorToArray(e)),t.angularVelocity=Math.min(Math.max(t.angularVelocity,-Ei),Ei);}ƀje(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)||[],o=t.collisionReports.get(e.bodyB.id)||[],{collisionDetailsA:a,collisionDetailsB:l}=this.ƀdy(i,r,e);s.push({self:a,target:l}),o.push({self:l,target:a}),t.collisionReports.set(e.bodyA.id,s),t.collisionReports.set(e.bodyB.id,o);}else console.warn("ContactEquationOrganiser: Entity not found for contact equation",e);}ƀdy(t,e,i){let r=t.convertToDTO(),s=e.convertToDTO(),o=f.arrayToVector(i.contactPointA),a=f.arrayToVector(i.contactPointB),{normalA:l,normalB:c}=this.ƀen(i);return {collisionDetailsA:this.ƀdx(r,i.bodyA.mass,o,l,t.area),collisionDetailsB:this.ƀdx(s,i.bodyB.mass,a,c,e.area)}}ƀdx(t,e,i,r,s){let o,a=i.add(t.position);return {body:t,getPositionReletiveToObject:h(()=>(o||(o=i.rotate(t.rotation.multiply(-1).vector)),o),"getPositionReletiveToObject"),getPositionOnWorld:h(()=>(a||(a=i.add(t.position)),a),"getPositionOnWorld"),position:i,mass:e,area:s,normal:r}}ƀen(t){let e=f.arrayToVector(t.normalA),i=e.multiplyNumber(-1);return {normalA:e,normalB:i}}};ke=rn([u()],ke);var sn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},on=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},ze=class extends ce{static{h(this,"BorderEntity");}constructor(t,e){super(t,e);}};ze=sn([gt(),on("design:paramtypes",[Number,Object])],ze);var nn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},j=1e4,Je=class{static{h(this,"BorderService");}createBorders(t,e,i){this.ƀbv(t,new Vector(e.x/2,-j/2),new Vector(e.x+j*2,j),i),this.ƀbv(t,new Vector(e.x/2,e.y+j/2),new Vector(e.x+j*2,j),i),this.ƀbv(t,new Vector(-j/2,e.y/2),new Vector(j,e.y+j*2),i),this.ƀbv(t,new Vector(e.x+j/2,e.y/2),new Vector(j,e.y+j*2),i);}ƀbv(t,e,i,r){return new ze(t,{shapeDefinition:{materialName:lt,group:r,shapeType:rt.Rectangle,shapeData:i},position:e,rotation:Radian.get0,addInEmptySpace:false,includeOnPathfinding:true}).attachByID(t)}};Je=nn([u()],Je);var hn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},dr=new W.Material,ln={id:lt,density:Number.MAX_SAFE_INTEGER,velocityDrag:1,rotationalDrag:1},Wt=class{static{h(this,"MaterialsService");}createMaterials(t,e,i,r){let s=new Map,o=new Map;if(i.forEach(a=>{s.set(a.id,new W.Material),o.set(a.id,a);}),s.has(lt))throw new Error(`Material with name ${lt} cannot be defined, pick another name for the material.`);return s.set(lt,dr),o.set(lt,ln),this.ƀc(t,e,i,r,s),{materials:s,materialDefinitions:o}}getMaterial(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀel(e,i.materials)}getMaterialDefinition(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀek(e,i.materialDefinitions)}ƀel(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material with name ${t}.`);return i}ƀek(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.ƀed(i.map(o=>o.id),r).forEach(o=>{let a=this.ƀel(o.materialA,s),l=this.ƀel(o.materialB,s);t.addContactMaterial(new W.ContactMaterial(a,l,{friction:o.friction,restitution:o.bounciness,stiffness:o.stiffness,relaxation:o.relaxation}));}),this.ƀd(t,e,i,s);}ƀed(t,e){let i=new Map;e.forEach(s=>{let o=i.get(s.materialA);o||(o=new Map,i.set(s.materialA,o)),o.set(s.materialB,s);});let r=[];return t.forEach((s,o)=>{for(let a=o;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 o=this.ƀel(s.id,r);t.addContactMaterial(new W.ContactMaterial(o,dr,{friction:e.friction,restitution:e.bounciness,stiffness:e.stiffness,relaxation:e.relaxation}));});}};Wt=hn([u()],Wt);var cn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},pn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ut=class{static{h(this,"PhysicsWorldService");}constructor(t,e,i,r,s){this.ƀgw=t,this.ƀak=e,this.ƀaa=i,this.ƀbd=r,this.ƀig=s;}createPhysicsWorld(t){let e=new W.World({gravity:[0,0]}),{materials:i,materialDefinitions:r}=this.ƀgw.createMaterials(e,t.borderProperties,t.materialDefinitions,t.materialContactDefinitions),{physicsBodyGroupToP2Group:s,physicsBodyGroupToP2Mask:o}=this.ƀig.createBodyGroupsAndMasks(t.physicsBodyGroups,t.interactingBodyGroups),a=new v(t.mapSize,t.modifyUpdateCycle,e,i,r,s,o).attachByID(t.attachTo);return a.onDestroy().tap(()=>{e.clear(),t.modifyUpdateCycle&&m.cleanUpdateModifier();}).attachToRoot(),this.ƀak.createBorders(a.id,t.mapSize,t.borderProperties.borderBodyGroup),this.ƀbd.registerPhysicsWorld(a),t.modifyUpdateCycle?m.registerUpdateModifier((l,c)=>this.ƀkw(a,l,c)):m.beforeSceneUpdateAction.subscribe(({time:l,delta:c})=>{this.ƀkw(a,l,c);}).attach(a),a.id}addBody(t,e,i,r,s){let o=v.getInstanceByIDOrFail(t);if(i){let a=this.ƀaa.findClosestAvailableSpace(o,e,r);return a?(e.position[0]+=a.x,e.position[1]+=a.y,o.p2World.addBody(e),s&&this.ƀaa.onBodyAdded(o,e,r),true):false}else return o.p2World.addBody(e),s&&this.ƀaa.onBodyAdded(o,e,r),true}removeBody(t,e){v.getInstanceByID(t)?.p2World.removeBody(e);}ƀkw(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.ƀbd.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);}};Ut=cn([u(),pn("design:paramtypes",[Wt,Je,pt,ke,X])],Ut);var dn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},kt=class{static{h(this,"RayCastingService");}castClosest(t,e,i){let r=new W.RaycastResult,s=new W.Ray({mode:W.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.ƀbq(r,e)}castAllFirstContacts(t,e,i){let r=new Map,s=new W.Ray({mode:W.Ray.ALL,from:f.vectorToArray(e.from),to:f.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i),callback:h(o=>{let a=r.get(o.body);!r.has(o.body)||o.fraction<a.fraction?r.set(o.body,this.ƀbq(o,e)):o.fraction===a.fraction&&a.isExternal()&&r.set(o.body,this.ƀbq(o,e));},"callback")});return t.p2World.raycast(new W.RaycastResult,s),Array.from(r.values())}ƀbq(t,e){let i=t.fraction,r=f.arrayToVector(t.normal),s,o,a;return {body:t.body,hitPosition:h(()=>(s===void 0&&(s=e.from.lerp(e.to,i)),s),"hitPosition"),hitDistance:h(()=>(o===void 0&&(o=e.length*i),o),"hitDistance"),isExternal:h(()=>(a===void 0&&(a=e.fromTo.dotProduct(r)<0),a),"isExternal"),normal:r,fraction:i,line:e}}};kt=dn([u()],kt);var fn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ft=class{static{h(this,"ImpactService");}applyImpulse(t,e,i,r){let s=i.normalize(r),o=[e.x-t.position[0],e.y-t.position[1]];t.applyImpulse(f.vectorToArray(s),o);}};ft=fn([u()],ft);var mn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},zt=class{static{h(this,"RayCastHitConverterService");}toExplosionHits(t,e=true){let i=new Map;return t.forEach(r=>{r.hits.forEach(s=>{let o=i.get(s.body);if(o){let a=s.fraction<o.closestRaycastHit.fraction?s:o.closestRaycastHit;o.rayCastHits.push(s),i.set(s.body,{hitCount:o.hitCount+1,closestRaycastHit:a,rayCastHits:o.rayCastHits,isExternal:e?o.isExternal:o.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.ƀbr(r,t.length))}ƀbr(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=f.arrayToVector(t.closestRaycastHit.body.position);return {body:b.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:false,normal:Vector.fromTo(s,t.explosionCenter).normalize(),fraction:0,ratioOfHits:i,raycastResults:r,getHitPosition:h(()=>t.explosionCenter,"getHitPosition"),getHitDistance:h(()=>0,"getHitDistance")}}}};zt=mn([u()],zt);var gn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},wn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},bn=15,Ke=class{static{h(this,"ElipticExplosionService");}constructor(t,e,i,r){this.ƀja=t,this.ƀle=e,this.ƀiz=i,this.ƀfq=r;}createElipticExplosion(t,e,i,r,s,o,a){let l=v.getInstanceByIDOrFail(t),c=this.ƀcg(e,i,r,s,a?.hitOnlyClosest===true,l),p=this.ƀiz.toExplosionHits(c,false);return this.ƀr(p,o),a?.testLayerID&&this.ƀle.createElipticExplosionDebugVisual(l,a.testLayerID,c,e,i,r,a.debugRayDuration),p.map(y=>{let{p2Body:w,...C}=y;return C})}ƀcg(t,e,i,r,s,o){let a=[],l=e.vector,c=e.add(Radian.get90).vector,p=c.normalize(i.x);a.push(new Line(t,t.add(p))),a.push(new Line(t,t.add(p.multiplyNumber(-1))));let y=l.normalize(i.y);a.push(new Line(t,t.add(y))),a.push(new Line(t,t.add(y.multiplyNumber(-1))));let w=Math.round(i.y/bn),C=i.y/(w*2+1)*2,Ct=l.normalize(C),pe=i.x,mr=Math.pow(i.y,2);return ArrayHelper.createIntegerArray(w).forEach(yt=>{let At=C*(yt+1),Ai=Ct.multiplyNumber(yt+1),ue=c.normalize(this.ƀev(pe,mr,At)),de=t.add(Ai);a.push(new Line(de,de.add(ue))),a.push(new Line(de,de.add(ue.multiplyNumber(-1))));let fe=t.add(Ai.multiplyNumber(-1));a.push(new Line(fe,fe.add(ue))),a.push(new Line(fe,fe.add(ue.multiplyNumber(-1))));}),a.map(yt=>{if(s){let At=this.ƀja.castClosest(o,yt,r);return {line:yt,hits:At?[At]:[]}}else {let At=this.ƀja.castAllFirstContacts(o,yt,r);return {line:yt,hits:At}}})}ƀev(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,o;r.isExternal()?(s=r.line.fromTo,o=e*2):(s=r.line.fromTo.multiplyNumber(-1),o=e*(1-r.fraction)*8),this.ƀfq.applyImpulse(r.body,r.hitPosition(),s,o);});});}};Ke=gn([u(),wn("design:paramtypes",[kt,Q,zt,ft])],Ke);var Pn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Sn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Xe=class{static{h(this,"ExplosionService");}constructor(t,e,i,r){this.ƀja=t,this.ƀle=e,this.ƀiz=i,this.ƀfq=r;}createExplosion(t,e,i,r,s,o){let a=v.getInstanceByIDOrFail(t),l=this.ƀet(i),c=this.ƀcg(e,i,r,l,o?.hitOnlyClosest===true,a),p=this.ƀiz.toExplosionHits(c);return this.ƀr(e,i,s,l,p),o?.testLayerID&&this.ƀle.createExplosionDebugVisual(a,o.testLayerID,c,e,i,o.debugRayDuration),p}ƀcg(t,e,i,r,s,o){let a=new Radian(PI_360/r),l=new Vector(0,-e),c=a.vector;return ArrayHelper.createEmptyArray(r).map(()=>{let p=t.add(l);return l=l.rotate(c),new Line(t,p)}).map(p=>{if(s){let y=this.ƀja.castClosest(o,p,i);return {line:p,hits:y?[y]:[]}}else {let y=this.ƀja.castAllFirstContacts(o,p,i);return {line:p,hits:y}}})}ƀr(t,e,i,r,s){s.forEach(o=>{if(o.isExternal)o.raycastResults.forEach(a=>{let l=i*(1-a.fraction);this.ƀfq.applyImpulse(a.body,a.hitPosition(),a.line.fromTo,l);});else {let a=Vector.fromTo(t,f.arrayToVector(o.p2Body.position)),l=a.length/e,c=i*r*l/2;this.ƀfq.applyImpulse(o.p2Body,o.getHitPosition(),a,c);}});}ƀet(t){return t>100?Math.floor(t*.3):Math.floor(t*.26+4)}};Xe=Pn([u(),Sn("design:paramtypes",[kt,Q,zt,ft])],Xe);var Cn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Jt=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)}};Jt=Cn([u()],Jt);var An=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},On=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ii=class{static{h(this,"PhysicsController");}constructor(t,e,i,r,s,o,a,l){this.ƀin=t,this.ƀhz=e,this.ƀle=i,this.ƀdh=r,this.ƀda=s,this.ƀfi=o,this.ƀim=a,this.ƀfq=l;}createPhysicsWorld(t){return this.ƀin.createPhysicsWorld(t)}getMapSize(t){return this.ƀim.getMapSize(t)}setPaused(t,e){this.ƀin.setPaused(t,e);}hitTest(t,e){let i=b.getPhysicsInstanceOrFail(t);return this.ƀfi.hitTest(i.p2Body,e)}findPath(t,e,i,r,s){return this.ƀhz.findPathAStar(t,e,i,r,{neighborType:s})}findPathDirection(t,e,i,r){return this.ƀhz.findPathDirection(t,e,i,r)}applyImpulse(t,e,i,r){let s=b.getPhysicsInstanceOrFail(t);this.ƀfq.applyImpulse(s.p2Body,e,i,r);}createExplosion(t,e,i,r,s,o){return this.ƀdh.createExplosion(t,e,i,r,s,o)}createElipticExplosion(t,e,i,r,s,o,a){return this.ƀda.createElipticExplosion(t,e,i,r,s,o,a)}printPathfindingTestGrid(t,e,i,r,s,o=50){this.ƀle.printPathfindingTestGrid(t,e,i,r,s,o);}};Ii=An([tt(le),On("design:paramtypes",[Ut,jt,Q,Xe,Ke,$e,Jt,ft])],Ii);var Mn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(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 o=v.getInstanceByIDOrFail(t);if(!o.physicsBodyGroupToP2Group.has(e.shapeDefinition.group))throw new Error(`Physics body group "${e.shapeDefinition.group}" not found`);switch(e.shapeDefinition.shapeType){case rt.Point:return this.ƀbx(o,void 0,i,r,e.shapeDefinition.group,s);case rt.Circle:return this.ƀbx(o,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case rt.Polygon:return this.ƀcf(o,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case rt.Rectangle:return this.ƀch(o,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);default:{e.shapeDefinition.shapeType;throw new Error}}}ƀbx(t,e,i,r,s,o){let a=new W.Circle({collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s),radius:e});a.material=i;let l=new W.Body({type:o==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:r.density,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return l.addShape(a),l}ƀcf(t,e,i,r,s,o){let a=t.physicsBodyGroupToP2Group.get(s),l=t.physicsBodyGroupToP2Mask.get(s),c=e.map(w=>new W.Convex({vertices:w.map(C=>[C.x,C.y]),collisionGroup:a,collisionMask:l})).map(w=>(w.material=i,w)),p=c.reduce((w,C)=>w+C.area,0),y=new W.Body({type:o==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:p,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.forEach(w=>y.addShape(w)),y.setDensity(r.density),y}ƀch(t,e,i,r,s,o){let a=new W.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.Body({type:o==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:l,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.addShape(a),c.setDensity(r.density),c}};Ze=Mn([u()],Ze);var Dn=function(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Bn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ci=class{static{h(this,"PhysicsInternalController");}constructor(t,e,i,r,s){this.ƀin=t,this.ƀil=e,this.ƀkd=i,this.ƀim=r,this.ƀig=s;}createBody(t,e,i,r,s){return this.ƀkd.createBody(t,e,i,r,s)}getMaterial(t,e){return this.ƀil.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀil.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀig.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀig.getMaskConstant(t,e)}addBody(t,e,i,r,s){return this.ƀin.addBody(t,e,i,r,s)}removeBody(t,e){this.ƀin.removeBody(t,e);}subscribeToPhysicsStep(t,e){return this.ƀim.subscribeToPhysicsStep(t,e)}};Ci=Dn([tt(ct),Bn("design:paramtypes",[Ut,Wt,Ze,Jt,X])],Ci);export{ht as AdvancedSound,Di as AnimationFlicker,V as AnimationInterpolationFunctions,x as Animations,T as AnimationsCompletionHandlingType,I as Animator,lt as BORDER_MATERIAL_NAME,E as BardLegendsHardReset,qt as Camera,nt as CameraGateway,Xt as ClosestAvailableSpaceHelper,d as Container,Dt as ContainerEventType,tt as ControllerDecorator,ti as Cursor,N as DEFAULT_SHADER_RESOLUTION,oi as DeltaTime,ui as DisplayObjectArray,$ as Entity,gt as EntityDecorator,Hi as FadeInContent,at as FocusingAnimation,g as Game,q as Gateway,R as Graphics,ce as ImmovablePhysicsEntity,bi as KeyboardService,fi as MenuEntity,oe as MenuUI,mi as MenuView,he as MouseService,Pi as MouseTargetFocusService,Ti as MovableEntity,Ri as MovablePhysicsEntity,ee as Music,hi as MusicPlayer,Zt as PathFinder,b as PhysicsEntity,le as PhysicsGateway,rt as PhysicsShapeType,li as Placeholder,Ei as ROTATIONAL_SPEED_LIMIT,A as ReAnimateHandlingType,ci as RichText,K as SOUND_TRANSITION_DURATION,Si as SPEED_LIMIT,Ot as Scene,Cr as SceneDecorator,yi as ScrollAreaUI,et as ScrollDirection,Pt as ScrollMaskUI,P as Service,u as ServiceDecorator,wt as SingletonEntity,zi as SlideInContent,si as SlideInContentByIndex,Re as SlideStateAnimation,it as SlideStateAnimationState,te as Sound,J as Sprite,Gt as StateAnimation,se as Text,ve as ThroughEmptyStateAnimation,pi as UpdatableContainer,m as UpdateCycle,Qt as VectorFieldPathFinder,Et as VectorSet,U as View,qe as ViewDecorator};
|