bard-legends-framework 1.11.4 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +52 -5
- package/bin/cli.mjs +12 -0
- package/dist/electron-main.d.mts +18 -0
- package/dist/electron-main.d.ts +18 -0
- package/dist/electron-main.js +1 -0
- package/dist/electron-main.mjs +1 -0
- package/dist/electron-preload.d.mts +9 -0
- package/dist/electron-preload.d.ts +9 -0
- package/dist/electron-preload.js +1 -0
- package/dist/electron-preload.mjs +1 -0
- package/dist/index.d.mts +136 -80
- package/dist/index.d.ts +136 -80
- package/dist/index.js +3 -3
- package/dist/index.mjs +3 -3
- package/electron-forge.mjs +37 -0
- package/package.json +52 -13
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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 U from'pixi.js';import'pixi.js/advanced-blend-modes';import {RichTextSeparator}from'script-engine-lib';import X from'p2';var Sr=Object.defineProperty;var h=(n,t)=>Sr(n,"name",{value:t,configurable:true});function ht(){return class{static{h(this,"GatewayBase");}}}h(ht,"Gateway");function be(n,t){let e=n.prototype,i=Object.getPrototypeOf(t),s=[];for(let r of Reflect.ownKeys(i)){if(typeof r!="string"||r==="constructor")continue;let o=t[r];if(typeof o=="function"){if(Object.prototype.hasOwnProperty.call(e,r))throw new Error(`Gateway "${n.name}": method "${r}" is already registered by another controller.`);e[r]=o.bind(t),s.push(r);}}return s}h(be,"bindControllerToGateway");var T=class{static{h(this,"BardLegendsTestingHelper");}static{this.ƀfd=new Action;}static{this.onHardReset=this.ƀfd.notifier;}static{this.ƀha=[];}static hardReset(){ActionLib.hardReset();for(let t of this.ƀha)for(let e of t.keys)delete t.gatewayPrototype[e];this.ƀha=[],this.ƀfd.trigger();}static bindMockControllerToGateway(t,e){let i=be(t,e);this.ƀha.push({gatewayPrototype:t.prototype,keys:i});}};function u(){return function(n){E.ƀgy.set(n,{paramtypes:E.ƀen(n)});}}h(u,"ServiceDecorator");var E=class n{static{h(this,"Service");}static{this.ƀgy=new WeakMap;}static{this.ƀjs=new Map;}static get(t){let e=this.ƀjs.get(t);if(!e){let i=n.ƀgy.get(t);if(!i)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let s=this.ƀjh(i.paramtypes);e=new t(...s),this.ƀjs.set(t,e);}return e}static ƀen(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.ƀgy.has(i))return this.get(i);throw new Error(`Injected parameter has to be decorated with @ServiceDecorator(), class: "${i.name}"`)})}};T.onHardReset.subscribe(()=>{E.ƀjs=new Map;}).attachToRoot();function lt(n){return function(t){let e=E.ƀen(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=E.ƀjh(e);i.some(r=>r===void 0)&&console.error(i,e,t.name);let s=new t(...i);be(n,s);}}}h(lt,"ControllerDecorator");var g=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 s=n.beforeSceneUpdateAction.subscribe(r=>{r.time>=e&&i();}).attachToRoot();return ()=>s.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.ƀge=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.ƀge}static{this.ƀge=0;}};T.onHardReset.subscribe(()=>{g.ƀad.clear(),g.ƀjl.clear(),g.ƀf.clear(),g.ƀlr=void 0,g.ƀlj=0;}).attachToRoot();var D=class n{static{h(this,"EntityStoreHelper");}static{this.ƀaz=new Map;}static{this.ƀjf=new Set;}static registerEntityClass(t){this.ƀjf.add(t),this.ƀaz.set(t.id,new Map);}static registerEntity(t){let e=this.ƀaz.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.ƀaz.get(i)?.delete(e);}static getEntity(t,e){return this.ƀaz.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.ƀaz.get(t.id);return Array.from(e.values())}};T.onHardReset.subscribe(()=>{D.ƀaz.clear();for(let n of D.ƀjf)D.ƀaz.set(n.id,new Map);}).attachToRoot();function ni(n){return function(t){Z.ƀgy.set(t,{paramtypes:E.ƀen(t),viewInstances:new Map,entity:n.entity}),ft.registerView(t,n.entity);}}h(ni,"ViewDecorator");var Z=class n extends IDAttachable{static{h(this,"View");}static{this.ƀgy=new WeakMap;}static getInstance(t){let e=n.ƀgy.get(this);if(!(!e||!e.entity.validateID(t)))return e.viewInstances.get(t)}static getInstanceOrFail(t){let e=n.ƀgy.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.ƀdg=ft.entityID,this.ƀes().set(this.ƀdg,this);}destroy(){this.destroyed||(super.destroy(),this.ƀes().delete(this.ƀdg));}ƀes(){let t=n.ƀgy.get(this.constructor);if(!t)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${this.constructor.name}"`);return t.viewInstances}};T.onHardReset.subscribe(()=>{Z.ƀgy=new WeakMap;}).attachToRoot();var ft=class n{static{h(this,"EntityViewsHelper");}static{this.ƀma=new Map;}static registerView(t,e){n.ƀma.has(e)||n.ƀma.set(e,[]);let i=n.ƀma.get(e);i&&i.push(t),D.getEntities(e).forEach(r=>{this.ƀcl(r,t);});}static ƀcl(t,e){try{let i=Z.ƀgy.get(e);if(!i)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${e.name}"`);let s=E.ƀjh(i.paramtypes.slice(1));n.entityID=t.id;let r=new e(t,...s);t.destroyed?r.destroy():t.ƀlz.ƀmb.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀdf=t,this.ƀmb=[];}createViews(){if(!this.ƀdf.destroyed){let t=n.ƀma.get(this.ƀdf.constructor);t&&t.forEach(e=>{n.ƀcl(this.ƀdf,e);});}}updateViews(t,e){for(let i=0;i<this.ƀmb.length;i++){let s=this.ƀmb[i];s.destroyed||s.update(t,e);}}destroyViews(){this.ƀmb.forEach(t=>{t.destroy();});}};T.onHardReset.subscribe(()=>{ft.ƀma=new Map;}).attachToRoot();function It(){return function(n){D.registerEntityClass(n);}}h(It,"EntityDecorator");var Q=class extends IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return D.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=D.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return D.getEntities(this)}constructor(){super(),this.ƀlz=new ft(this),D.registerEntity(this),g.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.ƀlp(t.time,t.delta),this.ƀlz.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀlz.destroyViews(),D.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀlz.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀlz.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀlz.createViews(),this}ƀlp(t,e){}};var dt=class n extends Q{static{h(this,"SingletonEntity");}static{this.ƀcm=new WeakMap;}static ƀeb(t){let e=n.ƀcm.get(t);return e||(e=new SingleAction,n.ƀcm.set(t,e)),e}static ƀlo(t){n.ƀcm.delete(t);}static getInstanceAsync(){let t=D.getSingleton(this);return t&&!t.destroyed?SingleEvent.instant(t):n.ƀeb(this).toSingleEvent()}static continuesSubscription(){let t=h((e,i)=>{this.getInstanceAsync().tap(r=>{e({type:"open",value:r}),r.onDestroy().tap(()=>{e({type:"close",value:r}),t(e,i);}).attach(i);}).attach(i);},"subscribe");return Sequence.create((e,i)=>t(e,i.attachable))}static getInstance(){return D.getSingleton(this)}static getInstanceOrFail(){return D.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.ƀeb(this.constructor).resolve(this);}};T.onHardReset.subscribe(()=>{dt.ƀcm=new WeakMap;}).attachToRoot();function _r(){return function(n){return Nt.ƀgy.set(n,{paramtypes:E.ƀen(n)}),n}}h(_r,"SceneDecorator");var Nt=class n extends IDAttachable{static{h(this,"Scene");}static{this.ƀgy=new WeakMap;}static{this.ƀfx=new Variable(false);}static{this.isTransitioning=this.ƀfx.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.ƀfx.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.ƀgy.get(this);if(!e)throw new Error(`Scene: scene class is not decorated by @SceneDecorator(), class: "${this.name}"`);let i=t[0];n.ƀfx.value=true;let s=E.ƀjh(e.paramtypes),r=new this(...s).attachToRoot();return n.ƀb.set(r),r.init(i).map(()=>(n.ƀfx.value=false,r)).chainToRoot()}constructor(){super(),this.ƀhk=new SingleAction,this.onClose=this.ƀhk.notifier,g.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.ƀfx.value)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");n.ƀfx.value=true;let e=t[0];return this.ƀj(e).map(()=>(this.ƀhk.resolve(e),e)).chainToRoot()}ƀj(t){return this.prepareToClose(t).tap(()=>{super.destroy(),n.ƀb.set(void 0),n.ƀfx.value=false;}).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};T.onHardReset.subscribe(()=>{Nt.ƀgy=new WeakMap,Nt.ƀb.set(void 0);}).attachToRoot();var W=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}},Vr=class{static{h(this,"AnimationLineer");}start(){}multiplierFunction(t){return W.lineer(t)}},Nr=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return W.easeIn(t)}},Fr=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return W.easeOut(t)}},Lr=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return W.easeInOut(t)}},Hr=class{static{h(this,"AnimationEaseInCubic");}start(){}multiplierFunction(t){return W.easeInCubic(t)}},jr=class{static{h(this,"AnimationEaseOutCubic");}start(){}multiplierFunction(t){return W.easeOutCubic(t)}},Wr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return W.easeInOutCubic(t)}},Ur=class{static{h(this,"AnimationBlink");}start(){}multiplierFunction(t){return W.blink(t)}},Fi=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]}},b=class{static{h(this,"Animations");}static{this.lineer=new Vr;}static{this.easeIn=new Nr;}static{this.easeOut=new Fr;}static{this.easeInOut=new Lr;}static{this.easeInCubic=new Hr;}static{this.easeOutCubic=new jr;}static{this.easeInOutCubic=new Wr;}static{this.blink=new Ur;}};var B;(function(n){n[n.ThrowError=1]="ThrowError",n[n.IgnoreNewAnimation=2]="IgnoreNewAnimation",n[n.CompletePrevious=3]="CompletePrevious";})(B||(B={}));var C;(function(n){n[n.ReturnToOriginal=1]="ReturnToOriginal",n[n.StayInCurrentState=2]="StayInCurrentState",n[n.JumpToEnd=3]="JumpToEnd",n[n.Loop=4]="Loop";})(C||(C={}));var O=class n{static{h(this,"Animator");}static{this.ƀl=new WeakMap;}static ƀdv(t){let e=n.ƀl.get(t);return e||(e=new MapToWeakRefs,n.ƀl.set(t,e)),e}get animating(){return this.ƀht!==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.ƀib!==void 0}set paused(t){this.ƀib=t?true:void 0;}constructor(t,e,i){this.ƀfy=false,this.ƀkf=false,this.ƀla=t,this.ƀhv={duration:200,animation:b.lineer,reAnimateHandling:B.ThrowError,completionHandling:C.StayInCurrentState,...i},this.ƀm=Comparator.isArray(e)?e:[e],this.ƀgl(t,this.ƀm);}animate(t,e){let i={...this.ƀhv,...e},s=this.ƀht;if(this.ƀht)switch(i.reAnimateHandling){case B.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case B.IgnoreNewAnimation:return SingleEvent.instant().notIdle();case B.CompletePrevious:this.ƀju(i.completionHandling,this.ƀht.ƀiw,true);break;default:{throw new Error}}return SingleEvent.create(o=>{this.ƀfy&&(this.ƀkf=true);let a={};for(let c of this.ƀm)a[c]={ƀku:this.ƀla[c],ƀld:t[c]};let l={ƀda:i.duration,ƀdb:0,ƀiw:a,ƀbk:i.completionHandling,ƀn:i.animation,ƀbj:o};if(l.ƀbk!==C.Loop&&this.ƀfv(l)){this.ƀht=void 0,o(),s?.ƀbj(),this.ƀba();return}return l.ƀn.start(),this.ƀht=l,this.ƀde(),s?.ƀbj(),()=>{this.ƀht===l&&(this.ƀla instanceof Attachable&&this.ƀla.destroyed||this.ƀju(l.ƀbk,l.ƀiw,true),this.ƀht=void 0,this.ƀba());}}).notIdle()}set(t){this.ƀmh(e=>t[e]),this.ƀht?.ƀbj();}completeAnimation(t){if(this.ƀht){t=t??this.ƀht.ƀbk,this.ƀju(t,this.ƀht.ƀiw,true);let e=this.ƀht.ƀbj;this.ƀht=void 0,e();}}ƀde(){this.ƀlq||(this.ƀlq=g.beforeSceneUpdateAction.subscribe(t=>{if(!this.ƀib){this.ƀfy=true;try{let e=this.ƀht;if(!e)return;if(e.ƀdb+=t.delta,e.ƀdb>=e.ƀda)if(e.ƀbk===C.Loop)e.ƀdb%=e.ƀda,e.ƀn.start();else {this.ƀju(e.ƀbk,e.ƀiw,!1),this.ƀht=void 0,e.ƀbj(),this.ƀba();return}let i=e.ƀn.multiplierFunction(e.ƀdb/e.ƀda);this.ƀmh(s=>{let r=e.ƀiw[s];return (r.ƀld-r.ƀku)*i+r.ƀku});}finally{this.ƀfy=false,this.ƀkf&&(this.ƀkf=false,this.ƀcs(),this.ƀde());}}}).attachToRoot());}ƀfv(t){return this.ƀm.every(e=>this.ƀla[e]===t.ƀiw[e].ƀld)}ƀju(t,e,i){switch(t){case C.ReturnToOriginal:case C.Loop:this.ƀmh(s=>e[s].ƀku);break;case C.JumpToEnd:this.ƀmh(s=>e[s].ƀld);break;case C.StayInCurrentState:i||this.ƀmh(s=>e[s].ƀld);break;default:{throw new Error}}}ƀmh(t){let e=false;for(let i of this.ƀm){let s=t(i);this.ƀla[i]!==s&&(e=true,this.ƀla[i]=s);}e&&this.ƀlu?.set(this.ƀla);}ƀba(){this.ƀht||this.ƀcs();}ƀcs(){this.ƀlq?.destroy(),this.ƀlq=void 0;}ƀgl(t,e){let i=n.ƀdv(t);for(let s of e){if(i.has(s))throw new Error(`Animator: target property is already animated! Target: "${JSON.stringify(t,void 0,2)}", Property: "${s}"`);i.set(s,this);}}};var Lt;(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";})(Lt||(Lt={}));var ai;(function(n){n.Default="default",n.Pointer="pointer";})(ai||(ai={}));var Se=class extends IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀgz=false,this.ƀdn=false,this.ƀjj=1,this.ƀw=1,this.ƀio=new U.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new Vector(this.ƀio.width,this.ƀio.height)}setSize(t){return this.ƀio.width=t.x,this.ƀio.height=t.y,this}setPosition(t,e){if(e?.holdFrom){let i=this.ƀio.getLocalBounds(),s=new Vector(this.ƀio.scale.x,this.ƀio.scale.y),r=new Vector(i.x,i.y).multiply(s),o=new Vector(i.width,i.height).multiply(s),a=r.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.ƀio.x,this.ƀio.y)}set position(t){this.ƀio.position=t;}get x(){return this.ƀio.x}set x(t){this.ƀio.x=t;}get y(){return this.ƀio.y}set y(t){this.ƀio.y=t;}on(t){return Sequence.create(e=>{let i=h(s=>{if(t===Lt.Wheel){let o=s.deltaY;e({deltaY:o});}else e(void 0);},"handle");return this.ƀio.on(t,i),()=>this.ƀio.off(t,i)}).notIdle()}setRotation(t){return this.rotation=t,this}get rotation(){return new Radian(this.ƀio.rotation)}set rotation(t){this.ƀio.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.ƀio.zIndex}set zIndex(t){this.ƀio.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new Radian(this.ƀio.skew.x)}set skewX(t){this.ƀio.skew.x=t.value;}setSkewY(t){return this.skewY=t,this}get skewY(){return new Radian(this.ƀio.skew.y)}set skewY(t){this.ƀio.skew.y=t.value;}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.ƀio.sortableChildren}set sortableChildren(t){this.ƀio.sortableChildren=t;}setAlpha(t){return this.ƀio.alpha=t,this}get alpha(){return this.ƀio.alpha}set alpha(t){this.ƀio.alpha=t;}setInteractive(t){return this.interactive=t,this}get interactive(){return this.ƀio.eventMode==="dynamic"}set interactive(t){t?this.ƀio.eventMode="dynamic":this.ƀio.eventMode="none";}setRenderGroup(t=true){return this.ƀio.isRenderGroup=t,this}setCursor(t){return this.cursor=t,this}get cursor(){return this.ƀio.cursor}set cursor(t){this.ƀio.cursor=t;}getMask(){throw new Error("ContainerAttributes: mask is not available!")}setMask(t){return t?(this.ƀio.addChild(t.ƀio),this.ƀio.mask=t.getMask(),this.ƀgo=t):(this.ƀgo&&this.ƀio.removeChild(this.ƀgo.ƀio),this.ƀio.mask=null),this}hitTest(t){if(this.ƀio.parent)if(this.ƀio.hitArea){let e=this.ƀio.toLocal(t);return this.ƀio.hitArea.contains(e.x,e.y)}else return this.ƀio.getBounds().containsPoint(t.x,t.y);else return false}get boundingBox(){let t=this.ƀio.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.ƀio.measurable=!t,this}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgz}set mirror(t){this.ƀgz=t,this.ƀls();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdn}set flip(t){this.ƀdn=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.ƀio.scale.set(this.ƀjj,this.ƀjj),this.ƀw<1?this.ƀio.scale.x*=this.ƀw:this.ƀw>1&&(this.ƀio.scale.y/=this.ƀw),this.ƀgz&&(this.ƀio.scale.x*=-1),this.ƀdn&&(this.ƀio.scale.y*=-1);}};var k=2;var Te=class{static{h(this,"GaussianValuesHelper");}static ƀdt(t,e){let i=e*e,s=1/(PI_360*i),r=-(t*t)/(2*i);return s*Math.exp(r)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),s=.005*i,r=NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<s)i-=l*2;else return true}),o=1/i,a=r.map(l=>l*o);return this.ƀbv(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(s=>this.ƀdt(s,t*.4)),i=e.reduce((s,r)=>s+r,0);return i=i*2-e[0],e=e.map(s=>s/i),this.ƀbv(e)}}static ƀbv(t){let e=[{offset:0,multiplier:t[0]}];for(let i=1;i<t.length-1;i+=2){let s=t[i]+t[i+1],r=i+t[i+1]/s;e.push({offset:r,multiplier:s});}if(t.length%2===0){let i=t[t.length-1],s=t.length-1;e.push({offset:s,multiplier:i});}return e}};var ji=class Wi extends U.Filter{static{h(this,"BlurFilterPass");}static ƀec(t,e){let i=e?"uInputPixel.z":"uInputPixel.w",s=`
|
|
1
|
+
import {Action,ActionLib,SingleEvent,IDAttachable,SingleAction,Sequence,Variable,Attachable,Reducer}from'actions-lib';import {Random,MapToWeakRefs,Comparator,Vector,Radian,NumberHelper,ArrayHelper,Rectangle,ColorHelper,PI_360,Queue,BinaryHeap,Grid,JsonHelper,Line}from'helpers-lib';import*as W from'pixi.js';import'pixi.js/advanced-blend-modes';import'reflect-metadata';import'@pixi/layout';import {RichTextSeparator}from'script-engine-lib';import {LayoutContainer}from'@pixi/layout/components';import X from'p2';var Rr=Object.defineProperty;var h=(n,t)=>Rr(n,"name",{value:t,configurable:true});function ht(){return class{static{h(this,"GatewayBase");}}}h(ht,"Gateway");function be(n,t){let e=n.prototype,i=Object.getPrototypeOf(t),s=[];for(let r of Reflect.ownKeys(i)){if(typeof r!="string"||r==="constructor")continue;let o=t[r];if(typeof o=="function"){if(Object.prototype.hasOwnProperty.call(e,r))throw new Error(`Gateway "${n.name}": method "${r}" is already registered by another controller.`);e[r]=o.bind(t),s.push(r);}}return s}h(be,"bindControllerToGateway");var T=class{static{h(this,"BardLegendsTestingHelper");}static{this.ƀfk=new Action;}static{this.onHardReset=this.ƀfk.notifier;}static{this.ƀhh=[];}static hardReset(){ActionLib.hardReset();for(let t of this.ƀhh)for(let e of t.keys)delete t.gatewayPrototype[e];this.ƀhh=[],this.ƀfk.trigger();}static bindMockControllerToGateway(t,e){let i=be(t,e);this.ƀhh.push({gatewayPrototype:t.prototype,keys:i});}};var w=class n{static{h(this,"UpdateCycle");}static{this.ƀae=new Action;}static{this.beforeSceneUpdateAction=this.ƀae.notifier;}static{this.ƀjx=new Action;}static{this.sceneUpdateAction=this.ƀjx.notifier;}static{this.ƀf=new Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀly=0;}static{this.ƀmg=void 0;}static wait(t){let e=this.ƀly+t;return SingleEvent.create(i=>{let s=n.beforeSceneUpdateAction.subscribe(r=>{r.time>=e&&i();}).attachToRoot();return ()=>s.destroy()})}static registerUpdateModifier(t){if(!this.ƀmg)this.ƀmg=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀmg=void 0;}static triggerUpdateTick(t){this.ƀmg&&(t=this.ƀmg(this.ƀly,t)),this.ƀly+=t,this.ƀgl=t,t>0&&(n.ƀae.trigger({time:this.ƀly,delta:t}),n.ƀjx.trigger({time:this.ƀly,delta:t}),n.ƀf.trigger({time:this.ƀly,delta:t}));}static get lastDelta(){return this.ƀgl}static{this.ƀgl=0;}};T.onHardReset.subscribe(()=>{w.ƀae.clear(),w.ƀjx.clear(),w.ƀf.clear(),w.ƀmg=void 0,w.ƀly=0;}).attachToRoot();function u(){return function(n){E.ƀhf.set(n,{paramtypes:E.ƀet(n)});}}h(u,"ServiceDecorator");var E=class n{static{h(this,"Service");}static{this.ƀhf=new WeakMap;}static{this.ƀke=new Map;}static get(t){let e=this.ƀke.get(t);if(!e){let i=n.ƀhf.get(t);if(!i)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let s=this.ƀjr(i.paramtypes);e=new t(...s),this.ƀke.set(t,e);}return e}static ƀet(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 ƀjr(t){return t.map(i=>{if(i&&n.ƀhf.has(i))return this.get(i);throw new Error(`Injected parameter has to be decorated with @ServiceDecorator(), class: "${i.name}"`)})}};T.onHardReset.subscribe(()=>{E.ƀke=new Map;}).attachToRoot();function lt(n){return function(t){let e=E.ƀet(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=E.ƀjr(e);i.some(r=>r===void 0)&&console.error(i,e,t.name);let s=new t(...i);be(n,s);}}}h(lt,"ControllerDecorator");var D=class n{static{h(this,"EntityStoreHelper");}static{this.ƀba=new Map;}static{this.ƀjp=new Set;}static registerEntityClass(t){this.ƀjp.add(t),this.ƀba.set(t.id,new Map);}static registerEntity(t){let e=this.ƀba.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.ƀba.get(i)?.delete(e);}static getEntity(t,e){return this.ƀba.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.ƀba.get(t.id);return Array.from(e.values())}};T.onHardReset.subscribe(()=>{D.ƀba.clear();for(let n of D.ƀjp)D.ƀba.set(n.id,new Map);}).attachToRoot();function oi(n){return function(t){Z.ƀhf.set(t,{paramtypes:E.ƀet(t),viewInstances:new Map,entity:n.entity}),ft.registerView(t,n.entity);}}h(oi,"ViewDecorator");var Z=class n extends IDAttachable{static{h(this,"View");}static{this.ƀhf=new WeakMap;}static getInstance(t){let e=n.ƀhf.get(this);if(!(!e||!e.entity.validateID(t)))return e.viewInstances.get(t)}static getInstanceOrFail(t){let e=n.ƀhf.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.ƀdj=ft.entityID,this.ƀez().set(this.ƀdj,this);}destroy(){this.destroyed||(super.destroy(),this.ƀez().delete(this.ƀdj));}ƀez(){let t=n.ƀhf.get(this.constructor);if(!t)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${this.constructor.name}"`);return t.viewInstances}};T.onHardReset.subscribe(()=>{Z.ƀhf=new WeakMap;}).attachToRoot();var ft=class n{static{h(this,"EntityViewsHelper");}static{this.ƀmp=new Map;}static registerView(t,e){n.ƀmp.has(e)||n.ƀmp.set(e,[]);let i=n.ƀmp.get(e);i&&i.push(t),D.getEntities(e).forEach(r=>{this.ƀcm(r,t);});}static ƀcm(t,e){try{let i=Z.ƀhf.get(e);if(!i)throw new Error(`View: view class is not decorated by @ViewDecorator(), class: "${e.name}"`);let s=E.ƀjr(i.paramtypes.slice(1));n.entityID=t.id;let r=new e(t,...s);t.destroyed?r.destroy():t.ƀmo.ƀmq.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀdi=t,this.ƀmq=[];}createViews(){if(!this.ƀdi.destroyed){let t=n.ƀmp.get(this.ƀdi.constructor);t&&t.forEach(e=>{n.ƀcm(this.ƀdi,e);});}}updateViews(t,e){for(let i=0;i<this.ƀmq.length;i++){let s=this.ƀmq[i];s.destroyed||s.update(t,e);}}destroyViews(){this.ƀmq.forEach(t=>{t.destroy();});}};T.onHardReset.subscribe(()=>{ft.ƀmp=new Map;}).attachToRoot();function It(){return function(n){D.registerEntityClass(n);}}h(It,"EntityDecorator");var Q=class extends IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return D.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=D.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return D.getEntities(this)}constructor(){super(),this.ƀmo=new ft(this),D.registerEntity(this),w.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.ƀme(t.time,t.delta),this.ƀmo.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀmo.destroyViews(),D.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀmo.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀmo.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀmo.createViews(),this}ƀme(t,e){}};var dt=class n extends Q{static{h(this,"SingletonEntity");}static{this.ƀcn=new WeakMap;}static ƀef(t){let e=n.ƀcn.get(t);return e||(e=new SingleAction,n.ƀcn.set(t,e)),e}static ƀmd(t){n.ƀcn.delete(t);}static getInstanceAsync(){let t=D.getSingleton(this);return t&&!t.destroyed?SingleEvent.instant(t):n.ƀef(this).toSingleEvent()}static continuesSubscription(){let t=h((e,i)=>{this.getInstanceAsync().tap(r=>{e({type:"open",value:r}),r.onDestroy().tap(()=>{e({type:"close",value:r}),t(e,i);}).attach(i);}).attach(i);},"subscribe");return Sequence.create((e,i)=>t(e,i.attachable))}static getInstance(){return D.getSingleton(this)}static getInstanceOrFail(){return D.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.ƀmd(this.constructor)).attachToRoot(),n.ƀef(this.constructor).resolve(this);}};T.onHardReset.subscribe(()=>{dt.ƀcn=new WeakMap;}).attachToRoot();function Nr(){return function(n){return Vt.ƀhf.set(n,{paramtypes:E.ƀet(n)}),n}}h(Nr,"SceneDecorator");var Vt=class n extends IDAttachable{static{h(this,"Scene");}static{this.ƀhf=new WeakMap;}static{this.ƀge=new Variable(false);}static{this.isTransitioning=this.ƀge.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.ƀge.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.ƀhf.get(this);if(!e)throw new Error(`Scene: scene class is not decorated by @SceneDecorator(), class: "${this.name}"`);let i=t[0];n.ƀge.value=true;let s=E.ƀjr(e.paramtypes),r=new this(...s).attachToRoot();return n.ƀb.set(r),r.init(i).map(()=>(n.ƀge.value=false,r)).chainToRoot()}constructor(){super(),this.ƀhr=new SingleAction,this.onClose=this.ƀhr.notifier,w.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.ƀge.value)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");n.ƀge.value=true;let e=t[0];return this.ƀj(e).map(()=>(this.ƀhr.resolve(e),e)).chainToRoot()}ƀj(t){return this.prepareToClose(t).tap(()=>{super.destroy(),n.ƀb.set(void 0),n.ƀge.value=false;}).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};T.onHardReset.subscribe(()=>{Vt.ƀhf=new WeakMap,Vt.ƀb.set(void 0);}).attachToRoot();var U=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}},Lr=class{static{h(this,"AnimationLineer");}start(){}multiplierFunction(t){return U.lineer(t)}},Hr=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return U.easeIn(t)}},jr=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return U.easeOut(t)}},Ur=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return U.easeInOut(t)}},Wr=class{static{h(this,"AnimationEaseInCubic");}start(){}multiplierFunction(t){return U.easeInCubic(t)}},$r=class{static{h(this,"AnimationEaseOutCubic");}start(){}multiplierFunction(t){return U.easeOutCubic(t)}},kr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return U.easeInOutCubic(t)}},zr=class{static{h(this,"AnimationBlink");}start(){}multiplierFunction(t){return U.blink(t)}},Li=class{static{h(this,"AnimationFlicker");}start(){this.ƀlz=new Array(10).fill(0),Random.integerBetween(0,9),this.ƀlz[Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(Random.integerBetween(0,9),this.ƀlz[Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(Random.integerBetween(0,9),this.ƀlz[Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀlz[e]}},b=class{static{h(this,"Animations");}static{this.lineer=new Lr;}static{this.easeIn=new Hr;}static{this.easeOut=new jr;}static{this.easeInOut=new Ur;}static{this.easeInCubic=new Wr;}static{this.easeOutCubic=new $r;}static{this.easeInOutCubic=new kr;}static{this.blink=new zr;}};var B;(function(n){n[n.ThrowError=1]="ThrowError",n[n.IgnoreNewAnimation=2]="IgnoreNewAnimation",n[n.CompletePrevious=3]="CompletePrevious";})(B||(B={}));var C;(function(n){n[n.ReturnToOriginal=1]="ReturnToOriginal",n[n.StayInCurrentState=2]="StayInCurrentState",n[n.JumpToEnd=3]="JumpToEnd",n[n.Loop=4]="Loop";})(C||(C={}));var O=class n{static{h(this,"Animator");}static{this.ƀl=new WeakMap;}static ƀdz(t){let e=n.ƀl.get(t);return e||(e=new MapToWeakRefs,n.ƀl.set(t,e)),e}get animating(){return this.ƀia!==void 0}get target(){return this.ƀlp}get value(){return this.ƀmj||(this.ƀmj=new Variable(this.ƀlp)),this.ƀmj.notifier}get paused(){return this.ƀii!==void 0}set paused(t){this.ƀii=t?true:void 0;}constructor(t,e,i){this.ƀgf=false,this.ƀks=false,this.ƀlp=t,this.ƀic={duration:200,animation:b.lineer,reAnimateHandling:B.ThrowError,completionHandling:C.StayInCurrentState,...i},this.ƀm=Comparator.isArray(e)?e:[e],this.ƀgs(t,this.ƀm);}animate(t,e){let i={...this.ƀic,...e},s=this.ƀia;if(this.ƀia)switch(i.reAnimateHandling){case B.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case B.IgnoreNewAnimation:return SingleEvent.instant().notIdle();case B.CompletePrevious:this.ƀkg(i.completionHandling,this.ƀia.ƀje,true);break;default:{throw new Error}}return SingleEvent.create(o=>{this.ƀgf&&(this.ƀks=true);let a={};for(let c of this.ƀm)a[c]={ƀli:this.ƀlp[c],ƀls:t[c]};let l={ƀdc:i.duration,ƀdd:0,ƀje:a,ƀbl:i.completionHandling,ƀn:i.animation,ƀbk:o};if(l.ƀbl!==C.Loop&&this.ƀgc(l)){this.ƀia=void 0,o(),s?.ƀbk(),this.ƀbb();return}return l.ƀn.start(),this.ƀia=l,this.ƀdh(),s?.ƀbk(),()=>{this.ƀia===l&&(this.ƀlp instanceof Attachable&&this.ƀlp.destroyed||this.ƀkg(l.ƀbl,l.ƀje,true),this.ƀia=void 0,this.ƀbb());}}).notIdle()}set(t){this.ƀmw(e=>t[e]),this.ƀia?.ƀbk();}completeAnimation(t){if(this.ƀia){t=t??this.ƀia.ƀbl,this.ƀkg(t,this.ƀia.ƀje,true);let e=this.ƀia.ƀbk;this.ƀia=void 0,e();}}ƀdh(){this.ƀmf||(this.ƀmf=w.beforeSceneUpdateAction.subscribe(t=>{if(!this.ƀii){this.ƀgf=true;try{let e=this.ƀia;if(!e)return;if(e.ƀdd+=t.delta,e.ƀdd>=e.ƀdc)if(e.ƀbl===C.Loop)e.ƀdd%=e.ƀdc,e.ƀn.start();else {this.ƀkg(e.ƀbl,e.ƀje,!1),this.ƀia=void 0,e.ƀbk(),this.ƀbb();return}let i=e.ƀn.multiplierFunction(e.ƀdd/e.ƀdc);this.ƀmw(s=>{let r=e.ƀje[s];return (r.ƀls-r.ƀli)*i+r.ƀli});}finally{this.ƀgf=false,this.ƀks&&(this.ƀks=false,this.ƀcu(),this.ƀdh());}}}).attachToRoot());}ƀgc(t){return this.ƀm.every(e=>this.ƀlp[e]===t.ƀje[e].ƀls)}ƀkg(t,e,i){switch(t){case C.ReturnToOriginal:case C.Loop:this.ƀmw(s=>e[s].ƀli);break;case C.JumpToEnd:this.ƀmw(s=>e[s].ƀls);break;case C.StayInCurrentState:i||this.ƀmw(s=>e[s].ƀls);break;default:{throw new Error}}}ƀmw(t){let e=false;for(let i of this.ƀm){let s=t(i);this.ƀlp[i]!==s&&(e=true,this.ƀlp[i]=s);}e&&this.ƀmj?.set(this.ƀlp);}ƀbb(){this.ƀia||this.ƀcu();}ƀcu(){this.ƀmf?.destroy(),this.ƀmf=void 0;}ƀgs(t,e){let i=n.ƀdz(t);for(let s of e){if(i.has(s))throw new Error(`Animator: target property is already animated! Target: "${JSON.stringify(t,void 0,2)}", Property: "${s}"`);i.set(s,this);}}};var Pe=class extends IDAttachable{static{h(this,"DisplayObjectAttributes");}constructor(t){super(),this.ƀiw=t,this.ƀhg=false,this.ƀdr=false,this.ƀjv=1,this.ƀx=1;}setPosition(t,e){return e?.holdFrom&&(t=t.subtract(this.ƀem(e.holdFrom))),e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new Vector(this.ƀiw.x,this.ƀiw.y)}set position(t){this.ƀiw.x=t.x,this.ƀiw.y=t.y;}get x(){return this.ƀiw.x}set x(t){this.ƀiw.x=t;}get y(){return this.ƀiw.y}set y(t){this.ƀiw.y=t;}setRotation(t){return this.rotation=t,this}get rotation(){return new Radian(this.ƀiw.rotation)}set rotation(t){this.ƀiw.rotation=t.value;}get rotationValue(){return this.ƀiw.rotation}set rotationValue(t){this.ƀiw.rotation=t;}setAlpha(t){return this.alpha=t,this}get alpha(){return this.ƀiw.alpha}set alpha(t){this.ƀiw.alpha=t;}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀhg}set mirror(t){this.ƀhg=t,this.ƀmh();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdr}set flip(t){this.ƀdr=t,this.ƀmh();}setScale(t){return this.scale=t,this}get scale(){return this.ƀjv}set scale(t){this.ƀjv=t,this.ƀmh();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀx}set aspectRatio(t){this.ƀx=t,this.ƀmh();}ƀmh(){let t=this.ƀjv,e=this.ƀjv;this.ƀx<1?t*=this.ƀx:this.ƀx>1&&(e/=this.ƀx),this.ƀhg&&(t*=-1),this.ƀdr&&(e*=-1),this.ƀu(t,e);}};var k=2;var Se=class{static{h(this,"GaussianValuesHelper");}static ƀdx(t,e){let i=e*e,s=1/(PI_360*i),r=-(t*t)/(2*i);return s*Math.exp(r)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),s=.005*i,r=NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<s)i-=l*2;else return true}),o=1/i,a=r.map(l=>l*o);return this.ƀbw(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(s=>this.ƀdx(s,t*.4)),i=e.reduce((s,r)=>s+r,0);return i=i*2-e[0],e=e.map(s=>s/i),this.ƀbw(e)}}static ƀbw(t){let e=[{offset:0,multiplier:t[0]}];for(let i=1;i<t.length-1;i+=2){let s=t[i]+t[i+1],r=i+t[i+1]/s;e.push({offset:r,multiplier:s});}if(t.length%2===0){let i=t[t.length-1],s=t.length-1;e.push({offset:s,multiplier:i});}return e}};var ji=class Ui extends W.Filter{static{h(this,"BlurFilterPass");}static ƀeg(t,e){let i=e?"uInputPixel.z":"uInputPixel.w",s=`
|
|
2
2
|
in vec2 vTextureCoord;
|
|
3
3
|
out vec4 finalColor;
|
|
4
4
|
|
|
@@ -18,7 +18,7 @@ import {Action,ActionLib,SingleEvent,IDAttachable,SingleAction,Sequence,Variable
|
|
|
18
18
|
iterate(${o}, ${NumberHelper.toFloatString(t[r].multiplier)}, finalColor);
|
|
19
19
|
iterate(${o} * -1.0, ${NumberHelper.toFloatString(t[r].multiplier)}, finalColor);`;}return s+=`
|
|
20
20
|
}
|
|
21
|
-
`,s}constructor(t,e){super({glProgram:U.GlProgram.from({vertex:U.defaultFilterVert,fragment:Wi.ƀec(Te.getValuesForLinearSamplingGauss(t),e)}),resolution:k});}},Ht=class extends U.Filter{static{h(this,"BlurFilter");}constructor(t=new Vector(2,2)){if(super({resolution:k,compatibleRenderers:U.RendererType.WEBGL}),this.ƀky=t,this.ƀky=t.multiplyNumber(k).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.ƀfj=new ji(this.ƀky.x,true),this.ƀlx=new ji(this.ƀky.y,false),this.padding=Math.max(this.ƀky.x,this.ƀky.y);}apply(t,e,i,s){let r=U.TexturePool.getSameSizeTexture(e);this.ƀlx.apply(t,e,r,true),this.ƀfj.apply(t,r,i,s),U.TexturePool.returnTexture(r);}get blendMode(){return this.ƀfj.blendMode}set blendMode(t){this.ƀfj&&(this.ƀfj.blendMode=t,this.ƀlx.blendMode=t);}};var Re=class{static{h(this,"Filters");}get red(){return this.ƀja}set red(t){this.ƀja=t,this.ƀjb();}get green(){return this.ƀev}set green(t){this.ƀev=t,this.ƀjb();}get blue(){return this.ƀah}set blue(t){this.ƀah=t,this.ƀjb();}get brightness(){return this.ƀam}set brightness(t){this.ƀam=t,this.ƀjb();}get contrast(){return this.ƀbq}set contrast(t){this.ƀbq=t,this.ƀjb();}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 Ht(e),this.ƀho()));}constructor(t){this.ƀbm=t,this.ƀja=1,this.ƀev=1,this.ƀah=1,this.ƀam=1,this.ƀbq=1,this.ƀho();}removeColorFilter(){this.ƀbf?.destroy(),this.ƀbf=void 0,this.ƀho();}ƀjb(){this.ƀja===1&&this.ƀev===1&&this.ƀah===1&&this.ƀam===1&&this.ƀbq===1?this.ƀbf&&(this.ƀbf.destroy(),this.ƀbf=void 0,this.ƀho()):(this.ƀbf||(this.ƀbf=new U.ColorMatrixFilter,this.ƀbf.resolution=k,this.ƀho()),this.ƀbf.matrix=[this.ƀja*this.ƀbq,0,0,0,this.ƀam-1,0,this.ƀev*this.ƀbq,0,0,this.ƀam-1,0,0,this.ƀah*this.ƀbq,0,this.ƀam-1,0,0,0,1,0]);}ƀho(){let t=[];this.ƀaj&&t.push(this.ƀaj),this.ƀbf&&t.push(this.ƀbf),this.ƀbm.filters=t;}};var d=class n extends Se{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 Re(this.ƀio);}destroy(){this.destroyed||(super.destroy(),n.allContainers.delete(this.id),!this.ƀio.destroyed&&this.ƀio.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 s={addUnder:i.defaultChildOptions.addUnder,cropOverflowingParts:i.defaultChildOptions.cropOverflowingParts,...e};if(s.addUnder?i.addChildTo.ƀio.addChildAt(this.ƀio,0):i.addChildTo.ƀio.addChild(this.ƀio),s.cropOverflowingParts)if(i)this.ƀio.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}};var jt=class extends Attachable{static{h(this,"StateAnimation");}onStateChange(t){return this.ƀhq.subscribe(e=>t(e.item,e.nextItem)).attach(this),this}onValueChange(t){return this.ƀhs.subscribe(e=>t(e)).attach(this),this}get state(){return {value:this.ƀk.value,item:this.ƀfz,nextItem:this.ƀhi,queuedItem:this.ƀix,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.ƀhq=new Action,this.ƀhs=new Action,this.ƀhv={duration:500,animation:b.lineer,...t},this.ƀp=new O(this.ƀk,"value",{duration:this.ƀhv.duration,animation:this.ƀhv.animation,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀp.value.subscribe(()=>{this.ƀk.value!==1&&this.ƀk.value!==0&&this.ƀhs.trigger(this.ƀk.value);}).attach(this);}setItem(t,e){if(this.ƀfz===void 0)this.ƀfz=t,this.ƀhq.trigger({item:this.ƀfz,nextItem:this.ƀhi}),this.ƀhs.trigger(this.ƀk.value);else if(e?.instant)this.ƀp.completeAnimation(),this.ƀo="idle",this.ƀfz=t,this.ƀhi=void 0,this.ƀix=void 0,this.ƀk.value=0,this.ƀhq.trigger({item:this.ƀfz,nextItem:this.ƀhi}),this.ƀhs.trigger(this.ƀk.value);else switch(this.ƀo){case "idle":t!==this.ƀfz&&(this.ƀo="transitioning",this.ƀhi=t,this.ƀk.value=0,this.ƀhq.trigger({item:this.ƀfz,nextItem:this.ƀhi}),this.ƀhs.trigger(this.ƀk.value),this.ƀp.animate({value:1}).tap(()=>this.ƀhm()).attach(this));break;case "transitioning":t===this.ƀfz?(this.ƀix=void 0,this.ƀo="reverting",this.ƀp.animate({value:0},{duration:this.ƀk.value*this.ƀhv.duration}).tap(()=>this.ƀhm()).attach(this)):t===this.ƀhi?this.ƀix=void 0:this.ƀix=t;break;case "reverting":t===this.ƀhi?(this.ƀix=void 0,this.ƀo="transitioning",this.ƀp.animate({value:1},{duration:(1-this.ƀk.value)*this.ƀhv.duration}).tap(()=>this.ƀhm()).attach(this)):t===this.ƀfz?this.ƀix=void 0:this.ƀix=t;break;default:{this.ƀo;throw new Error}}}ƀhm(){switch(this.ƀo){case "transitioning":this.ƀk.value===1&&(this.ƀk.value=0,this.ƀix!==void 0?(this.ƀo="transitioning",this.ƀfz=this.ƀhi,this.ƀhi=this.ƀix,this.ƀix=void 0,this.ƀhq.trigger({item:this.ƀfz,nextItem:this.ƀhi}),this.ƀp.animate({value:1}).tap(()=>this.ƀhm()).attach(this)):(this.ƀo="idle",this.ƀfz=this.ƀhi,this.ƀhi=void 0,this.ƀhq.trigger({item:this.ƀfz,nextItem:this.ƀhi})),this.ƀhs.trigger(this.ƀk.value));break;case "reverting":if(this.ƀfz===void 0)throw new Error("StateAnimation: item must be defined when reverting!");this.ƀk.value===0&&(this.ƀix!==void 0?(this.ƀo="transitioning",this.ƀhi=this.ƀix,this.ƀix=void 0,this.ƀk.value=0,this.ƀhq.trigger({item:this.ƀfz,nextItem:this.ƀhi}),this.ƀp.animate({value:1}).tap(()=>this.ƀhm()).attach(this)):(this.ƀo="idle",this.ƀhi=void 0,this.ƀk.value=0,this.ƀhq.trigger({item:this.ƀfz,nextItem:this.ƀhi})),this.ƀhs.trigger(this.ƀk.value));break;case "idle":break;default:{this.ƀo;throw new Error}}}};var J=Symbol("empty"),Ie=class extends Attachable{static{h(this,"ThroughEmptyStateAnimation");}onStateChange(t){return this.ƀhq.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀhs.subscribe(e=>t(e)).attach(this),this}get state(){let t=this.ƀkv.state.queuedItem;return {value:this.ƀlu,item:this.ƀfz,nextItem:this.ƀo==="appearing"?this.ƀfz:void 0,queuedItem:t===J?void 0:t,animationState:this.ƀo}}constructor(t){super(),this.ƀlu=0,this.ƀo="hidden",this.ƀhq=new Action,this.ƀhs=new Action,this.ƀkv=new jt(t).onStateChange((e,i)=>this.ƀex(e,i)).onValueChange(e=>this.ƀfc(e)).attach(this),this.ƀkv.setItem(J);}setItem(t,e){if(e?.instant){this.ƀo=t!==void 0?"appearing":"disappearing",this.ƀkv.setItem(t??J,{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(J)):t!==this.ƀfz&&(this.ƀo="disappearToChange",this.ƀkv.setItem(J),this.ƀkv.setItem(t));break;case "appearing":t===void 0?(this.ƀo="disappearing",this.ƀkv.setItem(J)):t!==this.ƀfz&&(this.ƀlu>0?(this.ƀo="disappearToChange",this.ƀkv.setItem(J),this.ƀkv.setItem(t)):(this.ƀkv.setItem(J,{instant:true}),this.ƀkv.setItem(t)));break;case "disappearing":t!==void 0&&t===this.ƀfz?(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(J)):t===this.ƀfz?(this.ƀo="appearing",this.ƀkv.setItem(t)):this.ƀkv.setItem(t);break;default:{this.ƀo;throw new Error}}}ƀex(t,e){if(e!==void 0){e!==J&&e!==this.ƀfz&&(this.ƀfz=e,this.ƀo="appearing",this.ƀhq.trigger(this.ƀfz),this.ƀlu!==0&&(this.ƀlu=0,this.ƀhs.trigger(0)));return}if(t===J)this.ƀo==="disappearing"&&(this.ƀfz=void 0,this.ƀo="hidden",this.ƀlu=0,this.ƀhq.trigger(void 0),this.ƀhs.trigger(0));else {let i=t!==this.ƀfz;this.ƀfz=t,this.ƀo="visible",i&&this.ƀhq.trigger(this.ƀfz),(i||this.ƀlu!==1)&&(this.ƀlu=1,this.ƀhs.trigger(1));}}ƀfc(t){let e=this.ƀkv.state.nextItem;if(e===void 0)return;let i=e===J?1-t:t;i!==this.ƀlu&&(this.ƀlu=i,i!==0&&i!==1&&this.ƀhs.trigger(i));}};var zi=class extends d{static{h(this,"FadeInContent");}constructor(t,e){super(),this.ƀbz=t;let i={duration:200,animation:b.easeInOut,...e};this.alpha=0,this.ƀkv=new Ie(i).onStateChange(s=>{this.ƀbn?.destroy(),this.ƀbn=void 0,s!==void 0&&(this.ƀbn=new d().displayParent(this).attach(this),this.ƀbz({state:s,container:this.ƀbn}));}).onValueChange(s=>{this.alpha=s;}).attach(this);}setState(t,e){return this.ƀkv.setItem(t,e),this}};var G=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(r=>{if(!Comparator.isString(r.url))throw new Error(`GameAssets: source url should be a string: ${r.url}`);let o=e.get(r.url),a=r.id;o?o.push(a):(e.set(r.url,[a]),i.push({url:r.url,callback:h(l=>{if(l instanceof U.Texture&&(l.id=a),o=e.get(r.url),o)o.forEach(c=>{this.ƀji.set(c,l);});else throw new Error(`GameAssets: unexpected error, nameGroup is not found! "./"! ${r}`)},"callback")}));});let s=performance.now();return Promise.all(i.map(r=>U.Assets.load(r.url))).then(r=>{let o=performance.now();console.info("Asset load completed in: ",Math.round(o-s)/1e3," seconds"),r.forEach((a,l)=>{i[l].callback(a);});}).catch(r=>{throw new Error(`GameAssets: during asset loading, an error occured: ${r}`)})}};var Oe=class n extends U.Filter{static{h(this,"ExpandWithColorFilter");}static ƀec(t){let e=`
|
|
21
|
+
`,s}constructor(t,e){super({glProgram:W.GlProgram.from({vertex:W.defaultFilterVert,fragment:Ui.ƀeg(Se.getValuesForLinearSamplingGauss(t),e)}),resolution:k});}},Nt=class extends W.Filter{static{h(this,"BlurFilter");}constructor(t=new Vector(2,2)){if(super({resolution:k,compatibleRenderers:W.RendererType.WEBGL}),this.ƀln=t,this.ƀln=t.multiplyNumber(k).floor(),this.ƀln.x<0||this.ƀln.y<0)throw new Error("BlurFilterLinearSampling: Strength * Resolution must be greater than 0");if(this.ƀln.x>100||this.ƀln.y>100)throw new Error("BlurFilterLinearSampling: Strength * Resolution cannot be higher than 100");this.ƀfq=new ji(this.ƀln.x,true),this.ƀmm=new ji(this.ƀln.y,false),this.padding=Math.max(this.ƀln.x,this.ƀln.y);}apply(t,e,i,s){let r=W.TexturePool.getSameSizeTexture(e);this.ƀmm.apply(t,e,r,true),this.ƀfq.apply(t,r,i,s),W.TexturePool.returnTexture(r);}get blendMode(){return this.ƀfq.blendMode}set blendMode(t){this.ƀfq&&(this.ƀfq.blendMode=t,this.ƀmm.blendMode=t);}};var Ee=class{static{h(this,"Filters");}get red(){return this.ƀjk}set red(t){this.ƀjk=t,this.ƀjl();}get green(){return this.ƀfc}set green(t){this.ƀfc=t,this.ƀjl();}get blue(){return this.ƀai}set blue(t){this.ƀai=t,this.ƀjl();}get brightness(){return this.ƀan}set brightness(t){this.ƀan=t,this.ƀjl();}get contrast(){return this.ƀbr}set contrast(t){this.ƀbr=t,this.ƀjl();}get blur(){return this.ƀaj}set blur(t){let e=Comparator.isNumber(t)?new Vector(t,t):t;(this.ƀaj&&e&&!this.ƀaj.isEqual(e)||this.ƀaj&&!e||!this.ƀaj&&e)&&(this.ƀaj=e,this.ƀak&&(this.ƀak.destroy(),this.ƀak=void 0),e&&(this.ƀak=new Nt(e),this.ƀhv()));}constructor(t){this.ƀbn=t,this.ƀjk=1,this.ƀfc=1,this.ƀai=1,this.ƀan=1,this.ƀbr=1,this.ƀhv();}removeColorFilter(){this.ƀbg?.destroy(),this.ƀbg=void 0,this.ƀhv();}ƀjl(){this.ƀjk===1&&this.ƀfc===1&&this.ƀai===1&&this.ƀan===1&&this.ƀbr===1?this.ƀbg&&(this.ƀbg.destroy(),this.ƀbg=void 0,this.ƀhv()):(this.ƀbg||(this.ƀbg=new W.ColorMatrixFilter,this.ƀbg.resolution=k,this.ƀhv()),this.ƀbg.matrix=[this.ƀjk*this.ƀbr,0,0,0,this.ƀan-1,0,this.ƀfc*this.ƀbr,0,0,this.ƀan-1,0,0,this.ƀai*this.ƀbr,0,this.ƀan-1,0,0,0,1,0]);}ƀhv(){let t=[];this.ƀak&&t.push(this.ƀak),this.ƀbg&&t.push(this.ƀbg),this.ƀbn.filters=t;}};var Ht;(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";})(Ht||(Ht={}));var ni;(function(n){n.Default="default",n.Pointer="pointer";})(ni||(ni={}));var d=class n extends Pe{static{h(this,"Container");}static{this.allContainers=new Map;}constructor(t=new W.Container){super(t),this.addChildTo=this,this.defaultChildOptions={addUnder:false,cropOverflowingParts:false},this.ƀiv=t,n.allContainers.set(this.id,this),this.filters=new Ee(this.ƀiv);}destroy(){this.destroyed||(super.destroy(),n.allContainers.delete(this.id),!this.ƀiv.destroyed&&this.ƀiv.destroy());}ƀu(t,e){this.ƀiv.scale.set(t,e);}ƀem(t){let e=this.ƀiv.getLocalBounds(),i=new Vector(this.ƀiv.scale.x,this.ƀiv.scale.y),s=new Vector(e.x,e.y).multiply(i),r=new Vector(e.width,e.height).multiply(i);return s.add(r.multiply(t))}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new Vector(this.ƀiv.width,this.ƀiv.height)}setSize(t){return this.ƀiv.width=t.x,this.ƀiv.height=t.y,this}setLayout(t={}){return this.ƀiv.layout={isLeaf:true,width:"intrinsic",height:"intrinsic",...t},this}on(t){return Sequence.create(e=>{let i=h(s=>{if(t===Ht.Wheel){let o=s.deltaY;e({deltaY:o});}else e(void 0);},"handle");return this.ƀiv.on(t,i),()=>this.ƀiv.off(t,i)}).notIdle()}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.ƀiv.zIndex}set zIndex(t){this.ƀiv.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new Radian(this.ƀiv.skew.x)}set skewX(t){this.ƀiv.skew.x=t.value;}setSkewY(t){return this.skewY=t,this}get skewY(){return new Radian(this.ƀiv.skew.y)}set skewY(t){this.ƀiv.skew.y=t.value;}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.ƀiv.sortableChildren}set sortableChildren(t){this.ƀiv.sortableChildren=t;}setInteractive(t){return this.interactive=t,this}get interactive(){return this.ƀiv.eventMode==="dynamic"}set interactive(t){t?this.ƀiv.eventMode="dynamic":this.ƀiv.eventMode="none";}setRenderGroup(t=true){return this.ƀiv.isRenderGroup=t,this}setCursor(t){return this.cursor=t,this}get cursor(){return this.ƀiv.cursor}set cursor(t){this.ƀiv.cursor=t;}getMask(){throw new Error("Container: mask is not available!")}setMask(t){return t?(this.ƀiv.addChild(t.ƀiv),this.ƀiv.mask=t.getMask(),this.ƀgv=t):(this.ƀgv&&this.ƀiv.removeChild(this.ƀgv.ƀiv),this.ƀiv.mask=null),this}hitTest(t){if(this.ƀiv.parent)if(this.ƀiv.hitArea){let e=this.ƀiv.toLocal(t);return this.ƀiv.hitArea.contains(e.x,e.y)}else return this.ƀiv.getBounds().containsPoint(t.x,t.y);else return false}get boundingBox(){let t=this.ƀiv.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.ƀiv.measurable=!t,this}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 s={addUnder:i.defaultChildOptions.addUnder,cropOverflowingParts:i.defaultChildOptions.cropOverflowingParts,...e};if(s.addUnder?i.addChildTo.ƀiv.addChildAt(this.ƀiv,0):i.addChildTo.ƀiv.addChild(this.ƀiv),s.cropOverflowingParts)if(i)this.ƀiv.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}};var jt=class extends Attachable{static{h(this,"StateAnimation");}onStateChange(t){return this.ƀhx.subscribe(e=>t(e.item,e.nextItem)).attach(this),this}onValueChange(t){return this.ƀhz.subscribe(e=>t(e)).attach(this),this}get state(){return {value:this.ƀk.value,item:this.ƀgg,nextItem:this.ƀhp,queuedItem:this.ƀjg,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.ƀhx=new Action,this.ƀhz=new Action,this.ƀic={duration:500,animation:b.lineer,...t},this.ƀp=new O(this.ƀk,"value",{duration:this.ƀic.duration,animation:this.ƀic.animation,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀp.value.subscribe(()=>{this.ƀk.value!==1&&this.ƀk.value!==0&&this.ƀhz.trigger(this.ƀk.value);}).attach(this);}setItem(t,e){if(this.ƀgg===void 0)this.ƀgg=t,this.ƀhx.trigger({item:this.ƀgg,nextItem:this.ƀhp}),this.ƀhz.trigger(this.ƀk.value);else if(e?.instant)this.ƀp.completeAnimation(),this.ƀo="idle",this.ƀgg=t,this.ƀhp=void 0,this.ƀjg=void 0,this.ƀk.value=0,this.ƀhx.trigger({item:this.ƀgg,nextItem:this.ƀhp}),this.ƀhz.trigger(this.ƀk.value);else switch(this.ƀo){case "idle":t!==this.ƀgg&&(this.ƀo="transitioning",this.ƀhp=t,this.ƀk.value=0,this.ƀhx.trigger({item:this.ƀgg,nextItem:this.ƀhp}),this.ƀhz.trigger(this.ƀk.value),this.ƀp.animate({value:1}).tap(()=>this.ƀht()).attach(this));break;case "transitioning":t===this.ƀgg?(this.ƀjg=void 0,this.ƀo="reverting",this.ƀp.animate({value:0},{duration:this.ƀk.value*this.ƀic.duration}).tap(()=>this.ƀht()).attach(this)):t===this.ƀhp?this.ƀjg=void 0:this.ƀjg=t;break;case "reverting":t===this.ƀhp?(this.ƀjg=void 0,this.ƀo="transitioning",this.ƀp.animate({value:1},{duration:(1-this.ƀk.value)*this.ƀic.duration}).tap(()=>this.ƀht()).attach(this)):t===this.ƀgg?this.ƀjg=void 0:this.ƀjg=t;break;default:{this.ƀo;throw new Error}}}ƀht(){switch(this.ƀo){case "transitioning":this.ƀk.value===1&&(this.ƀk.value=0,this.ƀjg!==void 0?(this.ƀo="transitioning",this.ƀgg=this.ƀhp,this.ƀhp=this.ƀjg,this.ƀjg=void 0,this.ƀhx.trigger({item:this.ƀgg,nextItem:this.ƀhp}),this.ƀp.animate({value:1}).tap(()=>this.ƀht()).attach(this)):(this.ƀo="idle",this.ƀgg=this.ƀhp,this.ƀhp=void 0,this.ƀhx.trigger({item:this.ƀgg,nextItem:this.ƀhp})),this.ƀhz.trigger(this.ƀk.value));break;case "reverting":if(this.ƀgg===void 0)throw new Error("StateAnimation: item must be defined when reverting!");this.ƀk.value===0&&(this.ƀjg!==void 0?(this.ƀo="transitioning",this.ƀhp=this.ƀjg,this.ƀjg=void 0,this.ƀk.value=0,this.ƀhx.trigger({item:this.ƀgg,nextItem:this.ƀhp}),this.ƀp.animate({value:1}).tap(()=>this.ƀht()).attach(this)):(this.ƀo="idle",this.ƀhp=void 0,this.ƀk.value=0,this.ƀhx.trigger({item:this.ƀgg,nextItem:this.ƀhp})),this.ƀhz.trigger(this.ƀk.value));break;case "idle":break;default:{this.ƀo;throw new Error}}}};var J=Symbol("empty"),Re=class extends Attachable{static{h(this,"ThroughEmptyStateAnimation");}onStateChange(t){return this.ƀhx.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀhz.subscribe(e=>t(e)).attach(this),this}get state(){let t=this.ƀlj.state.queuedItem;return {value:this.ƀmj,item:this.ƀgg,nextItem:this.ƀo==="appearing"?this.ƀgg:void 0,queuedItem:t===J?void 0:t,animationState:this.ƀo}}constructor(t){super(),this.ƀmj=0,this.ƀo="hidden",this.ƀhx=new Action,this.ƀhz=new Action,this.ƀlj=new jt(t).onStateChange((e,i)=>this.ƀfe(e,i)).onValueChange(e=>this.ƀfj(e)).attach(this),this.ƀlj.setItem(J);}setItem(t,e){if(e?.instant){this.ƀo=t!==void 0?"appearing":"disappearing",this.ƀlj.setItem(t??J,{instant:true});return}switch(this.ƀo){case "hidden":t!==void 0&&(this.ƀo="appearing",this.ƀlj.setItem(t));break;case "visible":t===void 0?(this.ƀo="disappearing",this.ƀlj.setItem(J)):t!==this.ƀgg&&(this.ƀo="disappearToChange",this.ƀlj.setItem(J),this.ƀlj.setItem(t));break;case "appearing":t===void 0?(this.ƀo="disappearing",this.ƀlj.setItem(J)):t!==this.ƀgg&&(this.ƀmj>0?(this.ƀo="disappearToChange",this.ƀlj.setItem(J),this.ƀlj.setItem(t)):(this.ƀlj.setItem(J,{instant:true}),this.ƀlj.setItem(t)));break;case "disappearing":t!==void 0&&t===this.ƀgg?(this.ƀo="appearing",this.ƀlj.setItem(t)):t!==void 0&&(this.ƀo="disappearToChange",this.ƀlj.setItem(t));break;case "disappearToChange":t===void 0?(this.ƀo="disappearing",this.ƀlj.setItem(J)):t===this.ƀgg?(this.ƀo="appearing",this.ƀlj.setItem(t)):this.ƀlj.setItem(t);break;default:{this.ƀo;throw new Error}}}ƀfe(t,e){if(e!==void 0){e!==J&&e!==this.ƀgg&&(this.ƀgg=e,this.ƀo="appearing",this.ƀhx.trigger(this.ƀgg),this.ƀmj!==0&&(this.ƀmj=0,this.ƀhz.trigger(0)));return}if(t===J)this.ƀo==="disappearing"&&(this.ƀgg=void 0,this.ƀo="hidden",this.ƀmj=0,this.ƀhx.trigger(void 0),this.ƀhz.trigger(0));else {let i=t!==this.ƀgg;this.ƀgg=t,this.ƀo="visible",i&&this.ƀhx.trigger(this.ƀgg),(i||this.ƀmj!==1)&&(this.ƀmj=1,this.ƀhz.trigger(1));}}ƀfj(t){let e=this.ƀlj.state.nextItem;if(e===void 0)return;let i=e===J?1-t:t;i!==this.ƀmj&&(this.ƀmj=i,i!==0&&i!==1&&this.ƀhz.trigger(i));}};var Yi=class extends d{static{h(this,"FadeInContent");}constructor(t,e){super(),this.ƀca=t;let i={duration:200,animation:b.easeInOut,...e};this.alpha=0,this.ƀlj=new Re(i).onStateChange(s=>{this.ƀbo?.destroy(),this.ƀbo=void 0,s!==void 0&&(this.ƀbo=new d().displayParent(this).attach(this),this.ƀca({state:s,container:this.ƀbo}));}).onValueChange(s=>{this.alpha=s;}).attach(this);}setState(t,e){return this.ƀlj.setItem(t,e),this}};var G=class{static{h(this,"GameAssets");}static{this.ƀjs=new Map;}static{this.ƀq=0;}static getAsset(t){let e=this.ƀjs.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.ƀjs.set(i,t),i}static destroyAsset(t){let e=this.ƀjs.get(t);e&&(e.source.removeAllListeners("change"),e.destroy(true),this.ƀjs.delete(t));}static async loadGameAssets(t){let e=new Map,i=[];t.forEach(r=>{if(!Comparator.isString(r.url))throw new Error(`GameAssets: source url should be a string: ${r.url}`);let o=e.get(r.url),a=r.id;o?o.push(a):(e.set(r.url,[a]),i.push({url:r.url,callback:h(l=>{if(l instanceof W.Texture&&(l.id=a),o=e.get(r.url),o)o.forEach(c=>{this.ƀjs.set(c,l);});else throw new Error(`GameAssets: unexpected error, nameGroup is not found! "./"! ${r}`)},"callback")}));});let s=performance.now();return Promise.all(i.map(r=>W.Assets.load(r.url))).then(r=>{let o=performance.now();console.info("Asset load completed in: ",Math.round(o-s)/1e3," seconds"),r.forEach((a,l)=>{i[l].callback(a);});}).catch(r=>{throw new Error(`GameAssets: during asset loading, an error occured: ${r}`)})}};var Ae=class n extends W.Filter{static{h(this,"ExpandWithColorFilter");}static ƀeg(t){let e=`
|
|
22
22
|
in vec2 vTextureCoord;
|
|
23
23
|
out vec4 finalColor;
|
|
24
24
|
|
|
@@ -42,4 +42,4 @@ import {Action,ActionLib,SingleEvent,IDAttachable,SingleAction,Sequence,Variable
|
|
|
42
42
|
highestAlpha = centerColor.a;`,e+=`
|
|
43
43
|
|
|
44
44
|
finalColor = vec4(uColor, 1.0) * highestAlpha;
|
|
45
|
-
}`,e}constructor(t,e){if(super({glProgram:U.GlProgram.from({vertex:U.defaultFilterVert,fragment:n.ƀec(t*k)}),resources:{expandUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uExpandSquared:{value:0,type:"f32"}}},resolution:k}),this.ƀdh=t,this.ƀdh=t*k,this.ƀdh<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀdh>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");Comparator.isInteger(this.ƀdh)||(this.ƀdh=Math.floor(this.ƀdh));let i=ColorHelper.normalize(e);this.resources.expandUniforms.uniforms.uColor=new Float32Array([i.red,i.green,i.blue]),this.resources.expandUniforms.uniforms.uExpandSquared=this.ƀdh*this.ƀdh,this.padding=this.ƀdh;}};var Me=class extends U.Filter{static{h(this,"GlowFilter");}constructor(t){super({resolution:k,compatibleRenderers:U.RendererType.WEBGL});let e={blurRadius:1,expand:0,color:ColorHelper.white,...t};this.ƀdi=new Oe(e.expand,e.color);let i=Comparator.isNumber(e.blurRadius)?new Vector(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀaj=new Ht(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀaj.blendMode="add";}apply(t,e,i,s){let r=U.TexturePool.getSameSizeTexture(e);this.ƀdi.apply(t,e,r,true),this.ƀaj.apply(t,r,i,s),U.TexturePool.returnTexture(r);}};var re=class n{static{h(this,"GlowSpriteGenerator");}static{this.ƀeu=new Map;}static createGlowSpriteFromSprite(t,e,i){let s=this.ƀbi(e),r=Comparator.isNumber(s.blurRadius)?new Vector(s.blurRadius,s.blurRadius):s.blurRadius,o=this.ƀee(t.texture,r,s.expand,s.color,i),a=new U.Sprite(o);return this.ƀjv(a,Vector.fromVec2(t.anchor),Math.max(r.x,r.y)+s.expand),a.alpha=s.glowAlpha,a.blendMode=s.blendMode,a}static ƀee(t,e,i,s,r){if(!t.id)throw new Error("GlowSpriteGenerator: baseTexture should have an id");if(r){let o=`${t.id}-${i}-${e.x}-${e.y}-${s.r}-${s.g}-${s.b}`;if(n.ƀeu.has(o))return n.ƀeu.get(o);{let a=this.ƀef(t,e,i,s);return n.ƀeu.set(o,a),a}}else return this.ƀef(t,e,i,s)}static ƀef(t,e,i,s){let r=new U.Sprite(t);r.filters=[new Me({blurRadius:e,expand:i,color:s})];let o=new U.Container;o.addChild(r);let a=Math.max(e.x,e.y)+i,l=x.instance.renderer.generateTexture({target:o,frame:new U.Rectangle(-a,-a,r.width+a*2,r.height+a*2)});return l.id=G.insertAsset(l),o.destroy({children:true}),l}static ƀjv(t,e,i){let s=(i+(t.width-i*2)*e.x)/t.width,r=(i+(t.height-i*2)*e.y)/t.height;t.anchor.set(s,r);}static ƀbi(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:ColorHelper.white,blendMode:"add"};return t&&(e={...e,...t}),e}};T.onHardReset.subscribe(()=>{re.ƀeu.clear();}).attachToRoot();var et=class n extends d{static{h(this,"Sprite");}static createByName(t){let e=x.setupOptions.spriteDefinitions[t];if(!e)throw new Error(`Sprite: Could not find sprite definition with name ${t}.`);return new n(e)}static createSnapshotSprite(t){let e=t.ƀio,i=e.parent;i&&i.removeChild(e);let s=x.instance.renderer.generateTexture({target:e,resolution:2,antialias:true,textureSourceOptions:{scaleMode:"linear"}});i&&i.addChild(e);let o={id:G.insertAsset(s),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 U.Sprite(G.getAsset(t.id)),this.ƀio.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&&(G.destroyAsset(this.ƀko.id),this.ƀip&&G.destroyAsset(this.ƀip.texture.id)),this.ƀgp?.destroy(),this.ƀal?.destroy(),this.ƀip&&!this.ƀip.destroyed&&this.ƀip.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.ƀio.hitArea&&(this.ƀio.hitArea=new ms(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 U.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.ƀip)return this.ƀip.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀip)this.ƀip.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.ƀip&&(this.ƀip.destroy(),this.ƀip=void 0),t&&(this.ƀip=re.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀko.destroyAssetOnDestroy),this.ƀip.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀip.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.ƀio.addChild(this.ƀip)),this}showBoundingShape(t){return t?this.ƀal||(this.ƀal=this.ƀbx().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀal&&(this.ƀal.destroy(),this.ƀal=void 0),this}getBoundingMask(){if(!this.ƀgp){if(!this.ƀko.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀgp=this.ƀbx(),this.ƀgp.displayParent(this);}return this.ƀgp}ƀbx(){if(!this.ƀko.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return A.createPolygon(this.ƀko.boundingShapes,ColorHelper.white).toSprite().attach(this)}download(){let t=x.instance.renderer.extract.canvas(this.ƀio);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}},ms=class{static{h(this,"CompositeHitArea");}constructor(t,e,i){this.ƀke=t.map(s=>new U.Polygon(s.map(r=>new U.Point(r.x,r.y))));}contains(t,e){return this.ƀke.some(i=>i.contains(t,e))}};var De=class{static{h(this,"DashedLineHelper");}static getLines(t,e,i){let s=Vector.fromTo(t,e),r=s.normalize(),o=s.length-i.lineStartGap-i.lineEndGap,a=[];if(o<=0)return a;let l=t.add(r.normalize(i.lineStartGap));if(o<=i.dashGap+i.dashLength*.5)return a.push({from:l,to:l.add(r.normalize(o))}),a;let c=o-i.dashGap,p=i.dashLength+i.dashGap,f=Math.floor(c/p),y=c-p*f;f>=1&&y<i.dashLength&&(y+=p,f--);let v=r.normalize(y/2),w=r.normalize(i.dashGap);if(a.push({from:l,to:l.add(v)}),l=l.add(v),f>0){let M=r.normalize(i.dashLength);ArrayHelper.createEmptyArray(f).forEach(()=>{l=l.add(w),a.push({from:l,to:l.add(M)}),l=l.add(M);});}return l=l.add(w),a.push({from:l,to:l.add(v)}),a}};var A=class n extends d{static{h(this,"Graphics");}static{this.ƀcz=new Map;}static createArrow(t,e){let i=new U.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(r=>{i.poly(r.map(o=>new U.Point(o.x,o.y))).fill(e);}),new n(i,JSON.stringify({type:"arrow",size:t,color:e}))}static createDashedLine(t,e,i){let s={width:2,dashLength:10,dashGap:4,lineStartGap:0,lineEndGap:0,color:ColorHelper.white,...i},r=new U.Graphics;return De.getLines(t,e,s).forEach(a=>{r.moveTo(a.from.x,a.from.y).lineTo(a.to.x,a.to.y);}),r.stroke({width:s.width,color:s.color}),new n(r,JSON.stringify({type:"dashedLine",from:t,to:e,options:s}))}static createVector(t,e,i){let s=new U.Graphics;return s.moveTo(t.x,t.y),s.lineTo(e.x,e.y),s.stroke({width:2,color:i}),s.circle(t.x,t.y,3),s.fill(ColorHelper.white),s.stroke({width:1,color:i}),new n(s,JSON.stringify({type:"line",start:t,end:e,color:i}))}static createRectangleBorders(t,e,i){let s=new U.Graphics;return s.rect(0,0,t.x,e),s.rect(0,e,e,t.y-e*2),s.rect(t.x-e,e,e,t.y-e*2),s.rect(0,t.y-e,t.x,e),s.fill(i),new n(s,JSON.stringify({type:"rectangle-borders",size:t,borderSize:e,color:i}))}static createRectangle(t,e=ColorHelper.white){let i=new U.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 U.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 U.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 U.Graphics,s=JSON.stringify({type:"polygon",polygon:t,color:e});return t.forEach(r=>{i.poly(r.map(o=>new U.Point(o.x,o.y))).fill(e);}),new n(i,s)}static createRegularPolygon(t,e,i){let s=new U.Graphics,r=new Radian(PI_360/t);s.moveTo(e,0);for(let o=1;o<=t;o++){let l=r.multiply(o).vector.normalize(e),c=e+l.x,p=e+l.y;s.lineTo(c,p);}return s.fill(i),new n(s,JSON.stringify({type:"regular-polygon",sides:t,radius:e,color:i}))}constructor(t,e){super(),this.ƀio.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.ƀeq(e.cacheName,e.cache),s={id:i.textureID,scale:1,size:i.bounds,anchor:{x:0,y:0},destroyAssetOnDestroy:!e.cache},r=new et(s,{texturePosition:i.bounds,ignoreAnchor:true});return this.attachToRoot(),this.destroy(),r}ƀeq(t,e){if(e){let i=n.ƀcz.get(t);return i||(i=this.ƀcj(),n.ƀcz.set(t,i)),i}else return this.ƀcj()}ƀcj(){let t=x.instance.renderer.generateTexture(this.pixiGraphics);t.id=G.insertAsset(t);let e=this.pixiGraphics.getBounds();return {textureID:t.id,bounds:new Vector(e.x,e.y)}}};var ci=class{static{h(this,"AnimationEaseInOutFlatter");}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},Mt=class n extends d{static{h(this,"ScrollMaskUI");}static{this.ƀcz=new Map;}constructor(t,e,i,s=ct.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 r=new d;s===ct.Horizontal?this.ƀcd(e,i,r):this.ƀck(e,i,r),this.ƀgp=et.createSnapshotSprite(r).attach(this),r.destroy(),t.setMask(this.ƀgp);}ƀck(t,e,i){e>0&&this.ƀca(new Vector(t.x,e)).displayParent(i).attach(i),A.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.ƀca(new Vector(t.x,e)).setPosition(new Vector(t.x,t.y),{round:false}).setRotation(Radian.get180).displayParent(i).attach(i);}ƀcd(t,e,i){e>0&&this.ƀca(new Vector(t.y,e)).setPosition(new Vector(0,t.y),{round:false}).setRotation(Radian.get270).displayParent(i).attach(i),A.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.ƀca(new Vector(t.y,e)).setPosition(new Vector(t.x,0),{round:false}).setRotation(Radian.get90).displayParent(i).attach(i);}ƀca(t){let i={id:this.ƀcb(t.y),scale:1,size:t,anchor:{x:0,y:0}};return new et(i,{textureSize:t,ignoreAnchor:true})}ƀcb(t){let e=JSON.stringify({type:"gradient",length:t}),i=n.ƀcz.get(e);if(!i){let s=document.createElement("canvas");s.width=1,s.height=t;let r=s.getContext("2d");if(r){let o=new ci;ArrayHelper.createIntegerArray(t).forEach(l=>{let c=`rgba(255, 255, 255, ${o.multiplierFunction(l/t)})`;r.fillStyle=c,r.fillRect(0,l,1,1);});let a=U.Texture.from(s);i=G.insertAsset(a),n.ƀcz.set(e,i);}else throw new Error("Canvas context is null")}return i}};var pt;(function(n){n[n.Appear=1]="Appear",n[n.Disappear=2]="Disappear";})(pt||(pt={}));var Be=class extends Attachable{static{h(this,"SlideStateAnimation");}onStateChange(t){return this.ƀhq.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀhs.subscribe(e=>t(e.value,e.index)).attach(this),this}get state(){return {value:this.ƀkv.state.value,item:this.ƀfr,nextItem:this.ƀhh,queuedItem:this.ƀkv.state.queuedItem,animationState:this.ƀo}}constructor(t){super(),this.ƀo="idle",this.ƀhq=new Action,this.ƀhs=new Action,this.ƀhv={duration:500,animation:b.easeInOutCubic,...t},this.ƀkv=new jt({duration:this.ƀhv.duration,animation:this.ƀhv.animation}).onStateChange((e,i)=>this.ƀex(e,i)).onValueChange(e=>this.ƀfc(e)).attach(this);}setIndex(t,e){if(!Comparator.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfr===void 0?(this.ƀfr=t,this.ƀhq.trigger({state:pt.Appear,index:t}),this.ƀkv.setItem(t,e)):this.ƀfr!==t?this.ƀhh!==t?this.ƀo==="idle"?(this.ƀo=t>this.ƀfr?"transitionForward":"transitionBackward",this.ƀhh=t,this.ƀhq.trigger({state:pt.Appear,index:this.ƀhh}),this.ƀkv.setItem(t,e)):this.ƀkv.setItem(t,e):this.ƀo==="reverting"&&this.ƀhh===t&&(this.ƀo=t>this.ƀfr?"transitionForward":"transitionBackward",this.ƀkv.setItem(t,e)):(this.ƀo==="transitionForward"||this.ƀo==="transitionBackward")&&(this.ƀo="reverting",this.ƀkv.setItem(t,e));}ƀex(t,e){switch(this.ƀfr!==void 0&&this.ƀfr!==t&&this.ƀfr!==e&&this.ƀhq.trigger({state:pt.Disappear,index:this.ƀfr}),this.ƀhh!==void 0&&this.ƀhh!==t&&this.ƀhh!==e&&this.ƀhq.trigger({state:pt.Disappear,index:this.ƀhh}),e!==void 0&&e!==this.ƀfr&&e!==this.ƀhh&&this.ƀhq.trigger({state:pt.Appear,index:e}),this.ƀo){case "idle":break;case "transitionForward":case "transitionBackward":e===void 0?(this.ƀo="idle",this.ƀfr=this.ƀhh,this.ƀhh=void 0):this.ƀfr!==t&&this.ƀey(t,e);break;case "reverting":e===void 0?(this.ƀo="idle",this.ƀhh=void 0):this.ƀfr!==e&&this.ƀey(t,e);break;default:{this.ƀo;throw new Error}}}ƀey(t,e){this.ƀfr=t,this.ƀhh=e,this.ƀhs.trigger({value:0,index:this.ƀfr}),this.ƀo=this.ƀfr<this.ƀhh?"transitionForward":"transitionBackward";}ƀfc(t){let e=1;(this.ƀo==="transitionBackward"||this.ƀo==="reverting"&&this.ƀfr!==void 0&&this.ƀhh!==void 0&&this.ƀfr>this.ƀhh)&&(e=-1),(this.ƀo==="idle"||t!==0)&&this.ƀhs.trigger({value:NumberHelper.ensurePositiveZero(-e*t),index:this.ƀfr}),this.ƀhh!==void 0&&this.ƀhs.trigger({value:NumberHelper.ensurePositiveZero(e*(1-t)),index:this.ƀhh});}};var ct;(function(n){n[n.Horizontal=1]="Horizontal",n[n.Vertical=2]="Vertical";})(ct||(ct={}));var pi=class extends d{static{h(this,"SlideInContentByIndex");}constructor(t,e){super(),this.ƀbz=t,this.ƀcv="x",this.ƀbp=new Map,this.ƀhv={duration:300,animation:b.easeInOutCubic,size:new Vector(500,500),margin:20,direction:ct.Horizontal,...e};let i=this.ƀhv.direction===ct.Horizontal?new Vector(this.ƀhv.size.x+this.ƀhv.margin*2,this.ƀhv.size.y):new Vector(this.ƀhv.size.x,this.ƀhv.size.y+this.ƀhv.margin*2),s=new d().setPosition(this.ƀhv.direction===ct.Horizontal?new Vector(-this.ƀhv.margin,0):new Vector(0,-this.ƀhv.margin),{round:false}).displayParent(this).attach(this);this.ƀce(i,this.ƀhv.margin,this.ƀhv.direction,s),this.ƀcv=this.ƀhv.direction===ct.Horizontal?"x":"y",this.ƀkv=new Be({duration:this.ƀhv.duration,animation:this.ƀhv.animation}).onStateChange((r,o)=>{if(r===pt.Appear){let a=new d().displayParent(this).attach(this);this.ƀbp.set(o,a),this.ƀbz({index:o,container:a});}else {let a=this.ƀbp.get(o);a&&(a.destroy(),this.ƀbp.delete(o));}}).onValueChange((r,o)=>{let a=this.ƀbp.get(o);if(a){let l={x:0,y:0};l[this.ƀcv]=i[this.ƀcv]*r+this.ƀhv.margin,a.setPosition(Vector.fromVec2(l),{round:false});}}).attach(this),this.addChildTo=s;}setIndex(t,e){return this.ƀkv.setIndex(t,e),this}ƀce(t,e,i,s){new Mt(s,new Vector(t.x,t.y),e,i).attach(this);}},Qi=class extends pi{static{h(this,"SlideInContent");}constructor(t,e,i){super(s=>{let r=this.indexToItem.get(s.index);if(r)e({index:s.index,item:r,container:s.container});else throw new Error(`SlideInContent: The item with index '${s.index}' is not part of the items list`)},i),this.itemToIndex=new Map,this.indexToItem=new Map,t.forEach((s,r)=>{this.itemToIndex.set(s,r),this.indexToItem.set(r,s);});}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 oe=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 ui=class{static{h(this,"DeltaTime");}static adjustMultiplier(t,e){return Math.pow(t,e)}};var _=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 ne=class{static{h(this,"ClosestAvailableSpaceHelper");}static findByConvertingGridSpace(t,e,i){let s=new Vector(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),r=_.areaToGridArea(e,i);if(this.ƀaw(t,r))return Vector.zero;let o=t.movePositionInsideGrid(r.topLeft),a=Vector.fromTo(r.topLeft,o),l=this.find(t,o,s);if(l){let c=l.add(a),p=Vector.fromTo(r.topLeft.multiplyNumber(i),e.topLeft);return new Vector(c.x*i+((s.x+1)*i-e.size.x)/2-p.x,c.y*i+((s.y+1)*i-e.size.y)/2-p.y)}}static find(t,e,i){let s=new oe,r=new Queue(e);for(;r.notEmpty;){let o=r.pop();s.add(o);let a=new Rectangle(o,o.add(i));if(this.ƀaw(t,a))return Vector.fromTo(e,o);t.getNeighborPositions(o,"orthogonal").forEach(l=>{s.has(l)||r.add(l);});}}static ƀaw(t,e){if(!t.isAreaWithinBounds(e))return false;for(let i=e.topLeft.y;i<=e.bottomRight.y;i++)for(let s=e.topLeft.x;s<=e.bottomRight.x;s++)if(!t.get(new Vector(s,i)))return false;return true}};var qi=Math.SQRT2-1,Os=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}}},Ms=class{static{h(this,"PathfinderGrid");}constructor(t,e,i,s){this.ƀew=t,this.ƀlc=i,this.ƀhg=s,this.ƀhu=new BinaryHeap("min"),this.ƀhj=new Grid({size:t.size,defaultValue:void 0});let r=this.ƀcf(e);r.distanceFromStart=0,this.ƀhu.add(r.pathLength,r),this.ƀae=r;}get hasOpenNodes(){return this.ƀhu.size>0}getNeighbors(t){let e=[];for(let i of this.ƀew.getNeighborPositions(t.position,this.ƀhg))if(this.ƀew.get(i)){let s=this.ƀhj.get(i)??this.ƀcf(i);s.closed||e.push(s);}return e}popLowestPathCostNode(){let t=this.ƀhu.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.ƀhu.updatePriority(t,t.pathLength)||this.ƀhu.add(t.pathLength,t);}getBestClosedNode(){return this.ƀae}ƀcf(t){let e=Math.abs(t.x-this.ƀlc.x),i=Math.abs(t.y-this.ƀlc.y),s=this.ƀhg==="orthogonal"?e+i:e>i?e+qi*i:i+qi*e,r=new Os(t,s);return this.ƀhj.isPointWithinBounds(t)&&this.ƀhj.set(t,r),r}},ae=class{static{h(this,"PathFinder");}static findPath(t,e,i,s){let r=new Ms(t,e,i,s);for(;r.hasOpenNodes;){let o=r.popLowestPathCostNode();if(o.position.isEqual(i))return o.createSolutionPath(true);for(let a of r.getNeighbors(o)){let l=o.distanceFromStart+o.getStepCost(a);l<a.distanceFromStart&&r.changeNodeCost(a,l,o);}}return r.getBestClosedNode().createSolutionPath(false)}};var Ut=[-1,0,0,1,-1,-1,1,1],$t=[0,-1,1,0,-1,1,-1,1],er=[10,10,10,10,14,14,14,14],fi=Ut.map((n,t)=>new Vector(n,$t[t]).radian),he=class{static{h(this,"VectorFieldPathFinder");}constructor(t,e){this.ƀlb=t;let i=e.width,s=e.height,r=this.ƀeh(e.size);this.ƀme=i,this.ƀff=s,this.ƀfg=r;let o=i*s,a=new Uint8Array(o),l=new Int32Array(o),c=e.snapshot();for(let w=0;w<s;w++){let M=c[w],L=w*i;for(let I=0;I<i;I++)M[I]?(a[L+I]=1,l[L+I]=r):l[L+I]=-1;}this.ƀy=a,this.ƀmd=l,this.ƀcu=new Uint8Array(o),this.ƀct=new Array(o);let p=[-1,-i,i,1,-i-1,i-1,-i+1,i+1],f=new Array(r),y=e.cropAreaOutsideOfTheGrid(t),v=[];for(let w=y.topLeft.y;w<=y.bottomRight.y;w++)for(let M=y.topLeft.x;M<=y.bottomRight.x;M++)l[w*i+M]=0,v.push(w*i+M);f[0]=v;for(let w=0;w<r;w++){let M=f[w];if(M){f[w]=void 0;for(let L=0;L<M.length;L++){let I=M[L];if(l[I]!==w)continue;let K=I%i;if(K>0&&K<i-1&&I>=i&&I<o-i){let Vt=w+10,$=w+14;for(let H=0;H<8;H++){let j=I+p[H],at=H<4?Vt:$;if(at<l[j]){l[j]=at;let Rt=f[at];Rt?Rt.push(j):f[at]=[j];}}}else {let Vt=(I-K)/i;for(let $=0;$<8;$++){let H=K+Ut[$],j=Vt+$t[$];if(H<0||j<0||H>=i||j>=s)continue;let at=j*i+H,Rt=w+er[$];if(Rt<l[at]){l[at]=Rt;let Vi=f[Rt];Vi?Vi.push(at):f[Rt]=[at];}}}}}}for(let w=0;w<o;w++)l[w]===-1&&(l[w]=r);}getDirectionToTarget(t){if(t.isInsideRectangle(this.ƀlb))return;let e=this.ƀme,i=Math.round(t.x),s=Math.round(t.y);i=Math.max(0,Math.min(e-1,i)),s=Math.max(0,Math.min(this.ƀff-1,s));let r=s*e+i;if(this.ƀcu[r]===1)return this.ƀct[r];let o=this.ƀap(i,s,r);return this.ƀcu[r]=1,this.ƀct[r]=o,o}ƀap(t,e,i){let s=this.ƀme,r=this.ƀff,o=[];for(let a=0;a<8;a++){let l=t+Ut[a],c=e+$t[a];l>=0&&c>=0&&l<s&&c<r&&o.push(a);}if(this.ƀmd[i]>=this.ƀfg){let a=o.filter(l=>this.ƀy[(e+$t[l])*s+t+Ut[l]]===1);if(a.length===0)return;if(a.length<o.length)return Radian.getAverage(...a.map(l=>fi[l]))}return this.ƀdx(t,e,o)}ƀdx(t,e,i){let s=this.ƀme,r=[],o=this.ƀfg;for(let v=0;v<i.length;v++){let w=i[v],M=this.ƀmd[(e+$t[w])*s+t+Ut[w]];if(M>=this.ƀfg)continue;let L=M+er[w];L<o?(r.length=0,r.push(w),o=L):L===o&&r.push(w);}if(r.length===0)return;let a=0,l=0;for(let v=0;v<r.length;v++)a+=Ut[r[v]],l+=$t[r[v]];if(a===0&&l===0)return fi[Random.pickRandomElement(r)];let c=1/Math.sqrt(a*a+l*l),p=t+Math.round(a*c),f=e+Math.round(l*c);return p>=0&&f>=0&&p<s&&f<this.ƀff&&this.ƀy[f*s+p]===1?new Vector(a,l).radian:fi[Random.pickRandomElement(r)]}get t(){let t=[];for(let e=0;e<this.ƀff;e++){let i=new Array(this.ƀme);for(let s=0;s<this.ƀme;s++)i[s]=this.ƀmd[e*this.ƀme+s];t.push(i);}return new Grid(t)}ƀeh(t){return (t.x+t.y)*20}};var R=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.ƀdw(t),i=n.context.createBufferSource();return i.buffer=e,i}static ƀdw(t){let e=this.ƀan.get(t);if(!e)throw new Error(`Audio: Sound with id ${t} was not loaded.`);return e}};T.onHardReset.subscribe(()=>{R.context=new AudioContext,R.ƀan.clear();}).attachToRoot();var rt=1e3,it=class n{static{h(this,"Audio");}static ƀjy(){return this.ƀfu=new n,this.ƀfu}constructor(){this.ƀgs=R.context.createGain(),this.ƀgr=R.context.createGain(),this.ƀhf=R.context.createGain(),this.ƀkh=R.context.createGain(),this.ƀgs.connect(R.context.destination),this.ƀgr.connect(this.ƀgs),this.ƀhf.connect(this.ƀgr),this.ƀkh.connect(this.ƀgr),this.ƀgt=new O(this.ƀgs.gain,"value",{duration:500*2,animation:b.easeIn,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀgt.set({value:0});}setVolumes(t){this.ƀgr.gain.value=t.master,this.ƀhf.gain.value=t.music,this.ƀkh.gain.value=t.sound;}appear(t,e="ease"){switch(e){case "ease":return this.ƀgt.set({value:t?0:1}),this.ƀgt.animate({value:t?1:0}).chainToRoot();case "instant":return this.ƀgt.set({value:t?1:0}),SingleEvent.instant();default:{throw new Error}}}};T.onHardReset.subscribe(()=>{it.ƀjy();}).attachToRoot();var _s=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},yt=class extends ht(){static{h(this,"CameraGateway");}};yt=_s([u()],yt);var Vs=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Gt=class extends ht(){static{h(this,"CameraViewGateway");}};Gt=Vs([u()],Gt);var rr;(function(n){n.BackgroundScreen="backgroundScreen",n.Background="background",n.Main="main",n.Foreground="foreground",n.ForegroundScreen="foregroundScreen";})(rr||(rr={}));var gt;(function(n){n[n.Instant=1]="Instant",n[n.EaseInOut=2]="EaseInOut",n[n.EaseOut=3]="EaseOut";})(gt||(gt={}));var le=class{static{h(this,"Camera");}get position(){return this.ƀar.getCameraPosition()}constructor(){this.ƀar=E.get(yt),this.ƀav=E.get(Gt),this.ƀar.createCamera(),this.layers=this.ƀav.getLayers();}setPosition(t){this.ƀar.setPosition(t);}setTransition(t){this.ƀar.setTransition(t);}appear(t,e="alpha",i=0){return this.ƀav.appear(t,e,i)}screenPositonToStagePosition(t){return this.ƀav.screenPositonToStagePosition(t)}};var x=class n{static{h(this,"Game");}static get instance(){return this.ƀfu}static{this.pause=Reducer.createOr();}static{this.freeze=Reducer.createOr();}static get camera(){return this.ƀaq}static get audio(){return this.ƀx}static appear(t,e){let i=e?.audio??"ease",s=e?.camera??"alpha";return ActionLib.all([this.audio.appear(t,i),this.camera.appear(t,s,i!=="instant"?0:500)]).mapToVoid().chainToRoot()}static get time(){return g.ƀ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.ƀfu)throw new Error("There can be only one Game instance!");this.ƀbl={screenResolution:void 0,maxScreenResolution:void 0,devMode:false,backgroundColor:ColorHelper.black,antialias:false,resolution:1,...t},this.devMode=this.ƀbl.devMode||false,this.ƀin=new U.Application;let e=n.pause.effect(false).attachToRoot();n.freeze.subscribe(i=>{e.update(i),i?R.context.suspend():R.context.resume();}).attachToRoot();}async setup(t){n.ƀkb=t;let e=JsonHelper.removeUndefinedProperties({backgroundColor:this.ƀbl.backgroundColor,autoStart:false,antialias:this.ƀbl.antialias,resolution:this.ƀbl.resolution,width:this.ƀbl.screenResolution?.width,height:this.ƀbl.screenResolution?.height,useBackBuffer:true,powerPreference:"high-performance",eventFeatures:{globalMove:false}});await this.ƀin.init(e);let i=document.body.appendChild(this.ƀin.canvas);this.ƀjx(i),await Promise.all([G.loadGameAssets(t.spriteAssetDefinitions),G.loadGameAssets(t.fontAssetDefinitions),R.load(t.soundAssetDefinitions)]),n.ƀfu=this,this.renderer=this.ƀin.renderer,globalThis.ƀa=this.ƀin,this.ƀfa(),n.ƀaq=new le,n.ƀx=it.ƀjy(),this.ƀin.start(),this.ƀin.ticker.add(()=>{n.freeze.value||g.triggerUpdateTick(this.ƀin.ticker.deltaMS);});}setResolution(t){if(this.ƀin.renderer.resolution!==t){this.ƀin.renderer.resolution=t;let e=this.ƀep();this.ƀin.renderer.resize(e.x,e.y);}}ƀfa(){this.ƀdd(),this.ƀjw(),window.addEventListener("resize",t=>{this.ƀdd(),this.ƀjw();});}ƀdd(){let t=this.ƀep();(t.x!==this.ƀin.screen.width||t.y!==this.ƀin.screen.height)&&this.ƀin.renderer.resize(t.x,t.y);}ƀjw(){let t=new Vector(this.ƀin.screen.width,this.ƀin.screen.height);this.ƀjn.value=t,this.ƀjo.value=t.multiplyNumber(.5).round();}ƀep(){let t=this.ƀbl.screenResolution?.width??window.innerWidth,e=this.ƀbl.screenResolution?.height??window.innerHeight;return this.ƀbl.maxScreenResolution&&(t=Math.min(t,this.ƀbl.maxScreenResolution.width),e=Math.min(e,this.ƀbl.maxScreenResolution.height)),new Vector(t,e)}ƀjx(t){this.ƀbl.maxScreenResolution&&(t.style.maxWidth=`${this.ƀbl.maxScreenResolution?.width}px`,t.style.maxHeight=`${this.ƀbl.maxScreenResolution?.height}px`),t.style.width="100%",t.style.height="100%";}};var ce=class n extends IDAttachable{static{h(this,"Sound");}static createByName(t,e){let i=x.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.ƀds.gain.value}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀds.gain.value=t,this}constructor(t,e){super(),this.ƀki=t,this.ƀds=R.context.createGain(),this.ƀds.connect(it.ƀfu.ƀkh),this.ƀfe=this.ƀds,e?.volume!==void 0&&(this.volume=e.volume),this.ƀit(e?.time??0);}destroy(){this.destroyed||(super.destroy(),this.ƀkx(),this.ƀds?.disconnect());}ƀlt(){this.ƀfe.disconnect(),this.ƀfe.connect(it.ƀfu.ƀhf);}ƀit(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,s=e.to;this.ƀiu({soundID:this.ƀki.id,start:this.ƀkr,end:this.ƀkr<i?i:s,loop:false,onComplete:h(()=>{this.ƀkl.disconnect(),this.ƀiu({soundID:this.ƀki.id,start:i,end:s,loop:true});},"onComplete")});}else this.ƀiu({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());}ƀiu(t){this.ƀkl=R.createSource(t.soundID),this.ƀkl.connect(this.ƀds),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 Us=800,Ve=-128,wt=class n extends ce{static{h(this,"AdvancedSound");}static createByName(t,e){let i=x.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=R.context.currentTime-this.ƀkr,this.ƀlj.value=this.ƀkr,g.beforeSceneUpdateAction.subscribe(()=>{this.ƀlj.value=R.context.currentTime-this.ƀkt;}).attach(this),this.ƀfe.disconnect(),this.ƀjz(e?.fade?NumberHelper.clamp(e.fade,0,1):0),this.ƀka(e?.muffle?NumberHelper.clamp(e.muffle,0,1):0),this.ƀfe.connect(it.ƀfu.ƀkh);}ƀjz(t=0){this.ƀdl=R.context.createGain(),this.ƀdl.gain.value=1-t,this.ƀdk=new O(this.ƀdl.gain,"value",{duration:500,animation:b.lineer,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀfe.connect(this.ƀdl),this.ƀfe=this.ƀdl;}ƀka(t=0){this.ƀhd=R.context.createBiquadFilter(),this.ƀhd.type="highshelf",this.ƀhd.frequency.value=Us,this.ƀhd.gain.value=t*Ve,this.ƀhe=new O(this.ƀhd.gain,"value",{duration:500,animation:b.lineer,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀfe.connect(this.ƀhd),this.ƀfe=this.ƀhd;}close(){return this.ƀbc?this.onDestroy():(this.ƀbc=true,this.fade(1,rt).notIdle().chain(this).tap(()=>this.destroy()).chainToRoot())}notifyOnTime(t){return this.time.value>t?SingleEvent.createDestroyed():SingleEvent.create(e=>{let i=this.time.filter(s=>s>=t).tap(()=>e()).attach(this);return ()=>i.destroy()})}setFade(t){t=NumberHelper.clamp(t,0,1),this.ƀdk.set({value:1-t});}fade(t,e=500){t=NumberHelper.clamp(t,0,1);let i=t>1-this.ƀdl.gain.value;return e===0?(this.ƀdk.set({value:1-t}),SingleEvent.instant()):this.ƀdk.animate({value:1-t},{duration:e,animation:i?b.easeOut:b.easeIn}).chain(this)}setMuffle(t){t=NumberHelper.clamp(t,0,1),this.ƀhe.set({value:t*Ve});}muffle(t,e=500){return t=NumberHelper.clamp(t,0,1),e===0?(this.ƀhe.set({value:t*Ve}),SingleEvent.instant()):this.ƀhe.animate({value:t*Ve},{duration:e}).chain(this)}destroy(){this.destroyed||(this.ƀdl.disconnect(),this.ƀhd.disconnect()),super.destroy();}};var pe=class n extends IDAttachable{static{h(this,"Music");}static createByName(t,e){let i=x.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.ƀhv={stopPlayingOnPause:true,...e},this.ƀkj=t.id;let i;if(this.ƀhv.stopPlayingOnPause&&x.pause.value)i={type:"paused",value:{time:0,volume:1}};else {let s=new wt(t,this.ƀhv).attach(this);s.ƀlt(),i={type:"playing",value:s};}this.ƀkk=new Variable(i),this.ƀhv.stopPlayingOnPause&&(this.ƀia=x.pause.subscribe(s=>this.ƀez(s)).attach(this));}notifyOnTime(t){return SingleEvent.create(e=>{let i=this.ƀkk.asyncDropOngoing((s,r)=>{switch(s.type){case "paused":r.drop();break;case "playing":return s.value.notifyOnTime(t);default:{throw new Error}}}).toSingleEvent().tap(()=>e()).attach(this);return ()=>i.destroy()})}close(){return this.ƀbc?this.onDestroy():(this.ƀbc=true,this.ƀia?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀkk.value.type==="playing"?this.ƀkk.value.value.close():SingleEvent.instant(),this.ƀdm?.onDestroy()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀez(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.ƀdm=e,ActionLib.all([e.fade(1,rt),e.muffle(1,rt)]).tap(()=>{this.ƀdm=void 0,e.destroy();}).attach(this);}}else if(this.ƀkk.value.type==="paused"){let{volume:e,time:i}=this.ƀkk.value.value,s=wt.createByName(this.ƀkj,{volume:e,time:i,fade:1,muffle:1}).attach(this);s.ƀlt(),ActionLib.all([s.fade(0,rt),s.muffle(0,rt)]).attach(this),this.ƀkk.value={type:"playing",value:s};}}};var mi=class extends IDAttachable{static{h(this,"MusicPlayer");}get time(){return this.ƀiv?this.ƀiv.time:0}get volume(){return this.ƀmc}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀmc=t,this.ƀiv&&(this.ƀiv.volume=t),this.ƀhz&&(this.ƀhz.volume=t),this}constructor(t){super(),this.ƀmc=1,this.ƀhv={stopPlayingOnPause:true,playWhenPaused:void 0,volume:1,...t},this.ƀmc=this.ƀhv.volume,this.ƀhv.playWhenPaused&&this.ƀkc(this.ƀhv.playWhenPaused);}play(t){if(this.ƀbc)throw new Error("Play is called while music player is destroyed.");return this.ƀcp=t,SingleEvent.instant().async(()=>{let e=this.ƀiv;if(e)return this.ƀiv=void 0,e.close()}).map(()=>{if(this.ƀcp===t)return this.ƀiv=pe.createByName(t,{stopPlayingOnPause:this.ƀhv.stopPlayingOnPause,volume:this.ƀmc}).attach(this),this.ƀiv}).chain(this)}stop(){return SingleEvent.instant().async(()=>{let t=this.ƀiv;if(t)return t.close().tap(()=>{t===this.ƀiv&&(this.ƀiv=void 0);})}).chain(this)}close(){return this.ƀbc?this.onDestroy():(this.ƀbc=true,this.ƀia?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀiv?.close()??SingleEvent.instant(),this.ƀhz?.close()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀkc(t){this.ƀia=x.pause.toSequence().asyncDropOngoing(e=>e&&g.wait(rt).map(()=>e)).tap(e=>{if(e)this.ƀhz=wt.createByName(t,{fade:1,volume:this.ƀmc}).attach(this),this.ƀhz.ƀlt(),this.ƀhz.fade(0);else if(this.ƀhz){let i=this.ƀhz;this.ƀhz.fade(1).tap(()=>i.destroy()).attach(this),this.ƀhz=void 0;}}).attach(this);}};var yi=class extends d{static{h(this,"Placeholder");}constructor(t){super(),this.ƀiq=new U.Graphics,this.ƀiq.rect(0,0,t.x,t.y).fill({color:0,alpha:1e-9}),this.ƀio.addChild(this.ƀiq);}destroy(){this.destroyed||(super.destroy(),this.ƀiq.destroy());}};var zt=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,s={};if(i){let r={blur:4,angle:Radian.get60,distance:10,color:ColorHelper.black,alpha:.5,...i};s={dropShadow:{blur:r.blur,angle:r.angle.value,distance:r.distance,color:ColorHelper.rgbToHex(r.color),alpha:r.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,...s})}};var Le=class{static{h(this,"RichTextDataInConverter");}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),s=RichTextSeparator.process(t,i),r=this.ƀfq(s,e),o=this.ƀs(r);return this.ƀkm(o)}static ƀfq(t,e){let i=new Map,s=new Map,r=h((a,l)=>{if(s.has(l))return s.get(l);let c=zt.getPixiTextStyle(a);return s.set(l,c),c},"GetPixiStyle");return t.map(a=>{let{style:l,cacheKey:c}=this.ƀea(a.tags,e,i),p=r(l,c),f=U.CanvasTextMetrics.measureText(" ",new U.TextStyle(p),void 0,false);return {text:a.text,cacheKey:c,style:l,pixiStyle:p,spaceWidth:f.width}})}static ƀea(t,e,i){let s=t.join("+");if(i.has(s))return {style:i.get(s),cacheKey:s};let r=this.ƀbg(t,e);return i.set(s,r),{style:r,cacheKey:s}}static ƀbg(t,e){let i={...e.default};for(let l of t)e.styles&&e.styles[l]&&(i={...i,...e.styles[l]});let{wordWrapWidth:s,align:r,dropShadow:o,...a}=i;return a}static ƀs(t){let e=[],i=[];return t.forEach((s,r)=>{s.text.split(/\r?\n/).forEach((a,l)=>{l>0&&(e.push(i),i=[]),i.push({text:a,cacheKey:s.cacheKey,style:s.style,pixiStyle:s.pixiStyle,spaceWidth:s.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 s=i.flatMap(r=>this.ƀkn(r.text).map(a=>{let l=new U.TextStyle(r.pixiStyle),c=U.CanvasTextMetrics.measureText(a,l,void 0,false);return {text:a,whitespace:a.trim()==="",style:{cacheKey:r.cacheKey,style:r.style,pixiStyle:l,height:c.height,ascent:c.fontProperties.ascent,descent:c.fontProperties.descent,width:c.width,spaceWidth:r.spaceWidth}}}));e.push(s);}),e}static ƀkn(t){if(t==="")return [""];let e=[],i="",s=t[0]===" ";for(let r=0;r<t.length;r++){let o=t[r],a=o===" ";a===s?i+=o:(e.push(i),i=o,s=a);}return i&&e.push(i),e}};var He=class{static{h(this,"RichTextTypewriter");}get lineIsEmpty(){return this.ƀcn.length===0}get remainingWidth(){return this.ƀmf-this.ƀcq}constructor(t,e){this.ƀmf=t,this.ƀgh=[],this.ƀcn=[],this.ƀcq=0,this.ƀgg=new Vector(0,0),this.ƀco=0;let i={rectangleCutOption:void 0,horizontalAlignment:"left",verticalAlignment:"bottom",...e};if(this.ƀfi=i.horizontalAlignment,this.ƀlw=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.ƀcr={direction:i.rectangleCutOption.direction,rectangle:this.ƀbt(i.rectangleCutOption)};}}isSpaceAvailable(t){let e=Math.max(this.ƀco,t.y),i=this.ƀei(this.ƀgg.y,this.ƀgg.y+e);return this.ƀcq+t.x<=i}insertWord(t){let e=Math.max(this.ƀco,t.style.height);if(this.ƀcn.length===0){let i=this.ƀej(this.ƀgg.y,this.ƀgg.y+e);this.ƀgg=new Vector(i,this.ƀgg.y),this.ƀcq=this.ƀgg.x;}this.ƀcn.push({chunk:t,position:new Vector(this.ƀcq,this.ƀgg.y)}),this.ƀco=e,this.ƀcq+=t.style.width;}newLine(){let t=this.ƀgg.y+this.ƀco,e=this.ƀej(t,t);this.ƀdo(),this.ƀgg=new Vector(e,t),this.ƀcq=this.ƀgg.x,this.ƀco=0;}print(){return this.ƀdo(),this.ƀgh}ƀdo(){this.ƀcn.length>0&&(this.ƀgh.push(this.ƀg(this.ƀcn)),this.ƀcn=[]);}ƀg(t){return t=this.ƀly(t),t=this.ƀfk(t),t}ƀfk(t){if(this.ƀfi==="left")return t;let e=this.ƀgg.y+this.ƀco,i=this.ƀej(this.ƀgg.y,e),r=this.ƀei(this.ƀgg.y,e)-i,o=Math.min(r,t.reduce((l,c)=>l+c.chunk.style.width,0)),a;return this.ƀfi==="center"?a=(r-o)/2:a=r-o,t.map(l=>(l={chunk:l.chunk,position:new Vector(l.position.x+a,l.position.y)},l))}ƀly(t){let e=Math.max(...t.map(s=>s.chunk.style.ascent)),i=Math.max(...t.map(s=>s.chunk.style.descent));return t.map(s=>{let r;switch(this.ƀlw){case "top":r=i-s.chunk.style.descent;break;case "center":r=(i-s.chunk.style.descent+e-s.chunk.style.ascent)*.5;break;case "bottom":r=e-s.chunk.style.ascent;break;default:{this.ƀlw;throw new Error}}return s={chunk:s.chunk,position:new Vector(s.position.x,s.position.y+r)},s})}ƀej(t,e){return this.ƀcr&&(this.ƀcr.direction==="topLeft"||this.ƀcr.direction==="bottomLeft")&&(this.ƀcr.rectangle.isPointInside(new Vector(0,t),{includeEdges:false})||this.ƀcr.rectangle.isPointInside(new Vector(0,e),{includeEdges:false}))?this.ƀcr.rectangle.bottomRight.x:0}ƀei(t,e){return this.ƀcr&&(this.ƀcr.direction==="topRight"||this.ƀcr.direction==="bottomRight")&&(this.ƀcr.rectangle.isPointInside(new Vector(this.ƀmf,t),{includeEdges:false})||this.ƀcr.rectangle.isPointInside(new Vector(this.ƀmf,e),{includeEdges:false}))?this.ƀcr.rectangle.topLeft.x:this.ƀmf}ƀbt(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 je=class{static{h(this,"ConsistentSpaceTextWrapper");}static wrapText(t,e){return t.forEach(i=>{i.forEach((s,r)=>{if(e.isSpaceAvailable(new Vector(s.style.width,s.style.height)))if(s.whitespace&&r===i.length-2){let o=i[i.length-1];e.isSpaceAvailable(new Vector(o.style.width+s.style.width,o.style.height))?e.insertWord(s):this.ƀmg(s,e);}else e.insertWord(s);else e.lineIsEmpty?e.insertWord(s):s.whitespace?this.ƀmg(s,e):(e.newLine(),e.insertWord(s));}),e.newLine();}),e.print()}static ƀmg(t,e){let i=Math.max(0,Math.floor(e.remainingWidth/t.style.spaceWidth)),s=Math.max(0,Math.min(i,t.text.length-1));if(s>0){let o={text:" ".repeat(s),whitespace:true,style:{...t.style,width:s*t.style.spaceWidth}};e.insertWord(o);}e.newLine();let r=t.text.length-s-1;if(r>0){let o={text:" ".repeat(r),whitespace:true,style:{...t.style,width:r*t.style.spaceWidth}};e.insertWord(o);}}};var We=class{static{h(this,"RichTextDataOutConverter");}static process(t){return t=this.ƀgx(t),t=this.ƀln(t),this.ƀay(t)}static ƀgx(t){return t.map(e=>{let i=[],s,r=true;return e.forEach(o=>{if(!s||s.chunk.style.cacheKey!==o.chunk.style.cacheKey)s&&i.push(s),s=o,r=o.chunk.whitespace;else {let a=s.chunk.text+o.chunk.text;r=o.chunk.whitespace&&r,s={chunk:{text:a,whitespace:r,style:{...s.chunk.style,width:s.chunk.style.width+o.chunk.style.width}},position:s.position};}}),s&&i.push(s),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 s=i.chunk.text.length,r=i.chunk.text.trimEnd();s!==r.length?e.push({chunk:{text:r,whitespace:false,style:{...i.chunk.style,width:i.chunk.style.width-(s-r.length)*i.chunk.style.spaceWidth}},position:i.position}):e.push(i);}return e})}static ƀay(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 fe=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=Le.process(t,e),s=JsonHelper.removeUndefinedProperties({rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),r=new He(e.default.wordWrapWidth??1/0,s),o=je.wrapText(i,r);return We.process(o)}};var eo=1,lr=1/eo,de=class extends d{static{h(this,"Text");}get ƀlg(){if(!this.ƀlh){let t=new U.TextStyle(this.ƀis);this.ƀlh=U.CanvasTextMetrics.measureText(this.ƀlf,t);}return this.ƀlh}get ascent(){return this.ƀlg.fontProperties.ascent}constructor(t,e){super(),this.ƀis=zt.getPixiTextStyle(e),this.setText(t);}destroy(){this.destroyed||(super.destroy(),!this.ƀir.destroyed&&this.ƀir.destroy());}setAnchor(t){return this.anchor=t,this}get anchor(){return new Vector(this.ƀir.anchor.x,this.ƀir.anchor.y)}set anchor(t){this.ƀi=t,this.ƀir.anchor.set(t.x,t.y),this.ƀjg();}setText(t){return this.ƀlf!==t&&(this.ƀlf=t,this.ƀjc()),this}setColor(t){let e=ColorHelper.rgbToHex(t);return this.ƀis.fill!==e&&(this.ƀis.fill=e,this.ƀjc()),this}ƀjc(){this.ƀir?.destroy(),this.ƀkz?.destroy(),this.ƀkz=void 0,this.ƀlh=void 0;let t=new U.TextStyle(this.ƀis);this.ƀir=new U.Text({text:this.ƀlf,style:t}),this.ƀi&&this.ƀir.anchor.set(this.ƀi.x,this.ƀi.y),this.ƀjg(),this.ƀir.scale.set(lr,lr),this.ƀio.addChild(this.ƀir),this.ƀis.lineThrough&&(this.ƀkz=this.ƀe(this.ƀir,this.ƀis.fill),this.ƀio.addChild(this.ƀkz));}ƀjg(){let t=U.CanvasTextMetrics.measureText(this.ƀlf,new U.TextStyle({...this.ƀis,dropShadow:false})),e=-this.ƀir.anchor.x*t.width,i=-this.ƀir.anchor.y*t.height;this.ƀir.boundsArea=new U.Rectangle(e,i,t.width,t.height);}ƀe(t,e){let i=U.CanvasTextMetrics.measureText(t.text,t.style),s=Math.max(1,Math.round(i.lineHeight*.07)),r=s%2*.5,o=new U.Graphics,a=0;return i.lines.forEach((l,c)=>{let p=U.CanvasTextMetrics.measureText(l,t.style),f=Math.round(a+(p.fontProperties.ascent-p.fontProperties.descent)*.6+p.fontProperties.descent)+r,y=0;t.style.align==="center"?y=0+(t.width-p.width)*.5:t.style.align==="right"&&(y=0+t.width-p.width),y=Math.floor(y),o.moveTo(Math.floor(y),f),o.lineTo(Math.floor(y+p.width),f),a+=p.lineHeight;}),o.stroke({width:s,color:e}),o}};var gi=class extends d{static{h(this,"RichText");}constructor(t,e){super(),fe.process(t,e).forEach(s=>new de(s.text,s.style).setPosition(s.position).displayParent(this).attach(this));}};var wi=class extends d{static{h(this,"UpdatableContainer");}},xi=class extends d{static{h(this,"DisplayObjectArray");}constructor(t,e){super(),this.ƀbz=t,this.ƀcw=new Map,this.ƀhv={trackBy:h((i,s)=>s,"trackBy"),positioning:{direction:"vertical",spacing:0},...e};}set(t){let e=new Set(this.ƀcw.keys()),i=0;t.forEach((s,r)=>{let o=this.ƀhv.trackBy(s,r),a;this.ƀcw.has(o)?(a=this.ƀcw.get(o),e.delete(o),a.update(s)):(a=this.ƀbz(s).displayParent(this).attach(this),this.ƀcw.set(o,a)),this.ƀhv.positioning.direction==="horizontal"?(a.x=i,i+=a.size.x+this.ƀhv.positioning.spacing):(a.y=i,i+=a.size.y+this.ƀhv.positioning.spacing);}),e.forEach(s=>{this.ƀcw.get(s).destroy(),this.ƀcw.delete(s);});}};var me=class n extends d{static{h(this,"MenuUI");}static{this.ƀfw=Reducer.createExistenceChecker();}static{this.isAnyMenuTransitioning=this.ƀfw.notifier;}constructor(t,e){super(),this.ƀhn=new SingleAction,this.onCreate=this.ƀhn.notifier,this.ƀhp=new SingleAction,this.onOpen=this.ƀhp.notifier,this.ƀhk=new SingleAction,this.onClose=this.ƀhk.notifier,this.ƀbc=false;let i={closeOnBackgroundClick:true,appearAnimationDuration:150,backgroundDarkeningRatio:.3,...e};this.setAlpha(0),this.ƀp=new O(this,"alpha",{animation:b.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState});let s=A.createRectangle(new Vector(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(i.backgroundDarkeningRatio).setInteractive(true).displayParent(this).attach(this);this.ƀgv=et.createByName(t).setPosition(new Vector(0,0)).setInteractive(true).displayParent(this).attach(this),x.instance.screenSize.subscribe(o=>{s.aspectRatio=o.x/o.y,s.scale=Math.max(o.x,o.y),s.setPosition(Vector.zero,{holdFrom:Vector.half}),this.setPosition(o.multiplyNumber(.5));}).attach(this),this.ƀhn.resolve();let r=n.ƀfw.effect().attach(this);this.ƀp.animate({alpha:1}).chain(this).tap(()=>{this.ƀhp.resolve(),r.destroy(),i.closeOnBackgroundClick&&s.on(Lt.Click).take(1).tap(()=>this.close()).attach(this);}).attachToRoot();}getBoundingMask(){return this.ƀgv.getBoundingMask()}close(){if(!this.ƀbc){this.ƀbc=true;let t=n.ƀfw.effect().attach(this);this.ƀp.animate({alpha:0}).chain(this).map(()=>{this.ƀhk.resolve(),t.destroy(),this.destroy();}).chainToRoot();}return this.onClose.toSingleEvent()}};var bi=class extends dt{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.ƀhv=t,queueMicrotask(()=>{if(!this.ƀgw)throw new Error("MenuEntity: MenuEntity has to have a MenuView.")});}ƀje(t){this.ƀgw=t,this.ƀgw.onClose.subscribe(()=>this.destroy()).attach(this);}onCreate(){return this.ƀgw.onCreate.toSingleEvent()}onOpen(){return this.ƀgw.onOpen.toSingleEvent()}onClose(){return this.ƀgw.onClose.toSingleEvent()}close(){return this.ƀgw.close()}};var Pi=class extends Z{static{h(this,"MenuView");}constructor(t,e,i){super();let s=JsonHelper.removeUndefinedProperties({appearAnimationDuration:i.appearAnimationDuration,backgroundDarkeningRatio:i.backgroundDarkeningRatio,closeOnBackgroundClick:t.ƀhv.closeOnBackgroundClick}),r=new me(e,s).displayParent(x.camera.layers.foregroundScreen).attach(this);t.ƀje(r);let o=new SingleAction;r.onCreate.subscribe(()=>o.resolve(r)).attach(this),this.onCreate=o.notifier,this.onOpen=r.onOpen.notifier,this.onClose=r.onClose.notifier;}};var lo=.65,co=.01,$e=class{static{h(this,"SmoothScroller");}get scrollHeight(){return this.ƀjp}get contentSize(){return this.ƀbn.size.ceil()}constructor(t,e,i,s){this.ƀbn=t,this.ƀv=e,this.ƀhx=i,this.ƀkg=s,this.ƀft=false,this.ƀjp=e-i*2,this.ƀbn.y=i,this.ƀla=i;}onWheel(t){this.setTarget(this.ƀla-t*lo);}scrollToTop(){this.setTarget(1/0);}scrollToBottom(){this.setTarget(-1/0);}setTarget(t){this.ƀla=NumberHelper.clamp(t,this.ƀv-this.ƀhx-this.contentSize.y,this.ƀhx);}jumpToTarget(){this.ƀbn.y=this.ƀla;}update(t){let e=this.contentSize;if(e.y<=this.ƀjp){switch(this.ƀkg){case "start":this.ƀla=this.ƀhx;break;case "center":this.ƀla=(this.ƀv-e.y)*.5;break;case "end":this.ƀla=this.ƀv-e.y-this.ƀhx;break;default:{this.ƀkg;throw new Error}}this.ƀft||(this.ƀbn.y=this.ƀla);}this.ƀft=true;let i=this.ƀla-this.ƀbn.y;this.ƀbn.y=this.ƀbn.y+i*co*t;}};var uo=15,Si=class extends d{static{h(this,"ScrollAreaUI");}get contentAreaSize(){return this.ƀbo}get contentSize(){return this.ƀjq.contentSize}constructor(t,e={}){super();let i={padding:uo,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 s=new d().displayParent(this).attach(this);new Mt(s,t,i.padding).attach(this);let r=new U.Graphics;r.rect(0,0,t.x,t.y).fill({color:0,alpha:1e-9}),s.ƀio.addChild(r);let o=new d().displayParent(s).attach(this);this.ƀjq=new $e(o,t.y,i.padding,i.smallContentAlign),this.ƀbo=new Vector(t.x,this.ƀjq.scrollHeight),r.eventMode="dynamic",r.addEventListener("wheel",a=>{this.ƀjq.onWheel(a.deltaY);}),o.setInteractive(true),o.ƀio.addEventListener("wheel",a=>{this.ƀjq.onWheel(a.deltaY);}),g.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 fo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},F=class extends dt{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=fo([It()],F);var mo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},yo=1500,ze=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:x.time,duration:t?.duration??yo,position:e.position.value,roundPosition:t?.roundPosition??false,roundPositionThreshold:t?.roundPositionThreshold??0,focusingAnimation:t?.animation??gt.Instant};}update(t,e){let i=F.getInstanceOrFail(),s=i.targetPosition.value;s&&(i.focusingNewTargetInfo.value?this.ƀga(i,s,t):i.position.value=s);}ƀga(t,e,i){let s=t.focusingNewTargetInfo.value;if(s.focusingAnimation===gt.Instant)this.ƀbh(t,e);else {let r=(i-s.time)/s.duration;if(r>=1)this.ƀbh(t,e);else {let o;s.focusingAnimation===gt.EaseInOut?o=W.easeInOut(r):s.focusingAnimation===gt.EaseOut?o=W.easeOut(r):o=1;let a=s.position.lerp(e,o);s.roundPosition&&(Math.abs(a.x-s.position.x)>=s.roundPositionThreshold&&(a=new Vector(Math.round(a.x),a.y)),Math.abs(a.y-s.position.y)>=s.roundPositionThreshold&&(a=new Vector(a.x,Math.round(a.y)))),t.position.value=a;}}}ƀbh(t,e){t.position.value=e,t.focusingNewTargetInfo.value=void 0;}};ze=mo([u()],ze);var go=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},wo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ei=class{static{h(this,"CameraController");}constructor(t){this.ƀau=t;}createCamera(){return this.ƀau.createCamera().id}update(t,e){this.ƀau.update(t,e);}setPosition(t){this.ƀau.setPosition(t);}setTransition(t){this.ƀau.setTransition(t);}getCameraPosition(){return this.ƀau.getCameraPosition()}};Ei=go([lt(yt),wo("design:paramtypes",[ze])],Ei);var Je=class{static{h(this,"PositionConversionHelper");}static includeScaleInScreenPosition(t,e,i){if(e!==1){let s=Vector.fromTo(i,t).multiplyNumber(1/e);return i.add(s)}else return t}};var vo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},bo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},_t=class extends Z{static{h(this,"CameraView");}constructor(t){super(),this.ƀdf=t,this.ƀkp=(()=>{let e=new d().attach(this);return e.ƀio=x.instance.ƀin.stage,e})(),this.ƀjk=new d().setAlpha(0).displayParent(this.ƀkp).attach(this),this.ƀaf=A.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.ƀat=new d().displayParent(this.ƀjk).attach(this),this.ƀdr=new d().setSortableChildren(true).displayParent(this.ƀjk).attach(this),this.ƀas=new d().setSortableChildren(true).displayParent(this.ƀat).attach(this),this.ƀdq=new d().setSortableChildren(true).setRenderGroup().setZIndex(20).displayParent(this.ƀas).attach(this),this.ƀgn=new d().setSortableChildren(true).setRenderGroup().setZIndex(10).displayParent(this.ƀas).attach(this),this.ƀab=new d().setRenderGroup().setZIndex(0).displayParent(this.ƀas).attach(this),this.ƀh=new O(this.ƀjk,"alpha",{duration:500,animation:b.easeInOutCubic,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀag=new O(this.ƀaf,"alpha",{duration:500,animation:b.easeInOutCubic,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),x.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.ƀdf.position.subscribe(e=>{this.ƀas.position=this.ƀbu(e);}).attach(this),this.ƀdf.offset.subscribe(e=>{this.ƀat.position=e;}).attach(this),this.ƀag.set({alpha:0}),this.ƀh.set({alpha:0});}screenPositonToStagePosition(t){let e=Je.includeScaleInScreenPosition(t,this.ƀkp.scale,x.instance.screenSizeCenter.value);return new Vector(e.x-this.ƀas.position.x-this.ƀat.position.x,e.y-this.ƀas.position.y-this.ƀat.position.y)}getLayers(){return {backgroundScreen:this.ƀac.id,background:this.ƀab.id,main:this.ƀgn.id,foreground:this.ƀdq.id,foregroundScreen:this.ƀdr.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&&g.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&&g.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}}}ƀbu(t){return Vector.fromTo(t,x.instance.screenSizeCenter.value)}};_t=vo([ni({entity:F}),bo("design:paramtypes",[F])],_t);var So=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Ii=class{static{h(this,"CameraViewController");}getLayers(){let t=F.getInstanceOrFail().id;return _t.getInstanceOrFail(t).getLayers()}appear(t,e,i){let s=F.getInstanceOrFail().id;return _t.getInstanceOrFail(s).appear(t,e,i)}screenPositonToStagePosition(t){let e=F.getInstanceOrFail().id;return _t.getInstanceOrFail(e).screenPositonToStagePosition(t)}};Ii=So([lt(Gt)],Ii);var To=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Eo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ci=class{static{h(this,"KeyboardService");}constructor(){this.ƀgc=new Action,this.keyPressed=this.ƀgc.notifier,this.ƀgd=new Action,this.keyReleased=this.ƀgd.notifier,this.ƀgj=new Set,this.ƀgi=new Set,window.addEventListener("keydown",t=>{this.ƀgj.add(t.code),this.ƀgi.add(t.code),!t.repeat&&this.ƀgc.trigger({key:t.key,code:t.code});}),window.addEventListener("keyup",t=>{this.ƀgj.delete(t.code),this.ƀgd.trigger({key:t.key,code:t.code});}),window.addEventListener("blur",()=>{this.ƀgj.clear();}),g.afterSceneUpdateAction.subscribe(()=>this.ƀgi.clear()).attachToRoot();}isKeyDown(t,e){return (e?.onlyPressedThisFrame?this.ƀgi:this.ƀgj).has(t)}};Ci=To([u(),Eo("design:paramtypes",[])],Ci);var Ro=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Io=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},we=class{static{h(this,"MouseService");}constructor(){this.ƀfs=new Variable(false),this.initialMouseMovementHappened=this.ƀfs.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.ƀgm=new Variable(false),this.mainButtonState=this.ƀgm.notifier,this.ƀjr=new Variable(false),this.secondaryButtonState=this.ƀjr.notifier,this.ƀks(),window.addEventListener("pointerdown",t=>{t.button===0?this.ƀgm.value=true:t.button===2&&(this.ƀjr.value=true);},{capture:true}),window.addEventListener("pointerup",t=>{t.button===0?this.ƀgm.value=false:t.button===2&&(this.ƀjr.value=false);},{capture:true}),window.addEventListener("blur",()=>{this.ƀgm.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.ƀfs.value=true;},{capture:true}),g.beforeSceneUpdateAction.subscribe(()=>{this.ƀjm.value=this.ƀbb(t);}).attachToRoot(),g.afterSceneUpdateAction.subscribe(()=>{this.ƀkq.value=x.camera.screenPositonToStagePosition(this.ƀjm.value);}).attachToRoot();}ƀbb(t){let i=x.instance.renderer.canvas.getBoundingClientRect(),s=i.width,r=i.height;if(s<=0||r<=0)return Vector.zero;let o=x.instance.renderer.screen,a=(t.x-i.left)/s*o.width,l=(t.y-i.top)/r*o.height;return a=NumberHelper.clamp(a,0,o.width),l=NumberHelper.clamp(l,0,o.height),new Vector(a,l)}};we=Ro([u(),Io("design:paramtypes",[])],we);var Co=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Ao=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ai=class{static{h(this,"MouseTargetFocusService");}get focusedInLastFrame(){return this.ƀdp}get lastFocusedPosition(){return this.ƀgf}constructor(t){this.ƀhb=t,this.ƀhr=new Action,this.onTargetFocus=this.ƀhr.notifier,this.ƀll=0,this.ƀlm=false,this.ƀdp=false,this.ƀgf=void 0,g.beforeSceneUpdateAction.subscribe(e=>this.ƀlp(e.delta)).attachToRoot();}ƀlp(t){if(this.ƀhc){let e=this.ƀeo(this.ƀhb.stagePosition.value,this.ƀhc);this.ƀic===void 0?this.ƀic=e:this.ƀax(e,t);}this.ƀhc=this.ƀhb.stagePosition.value;}ƀax(t,e){this.ƀic-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.ƀgb(i,t,e);}ƀgb(t,e,i){(t||e>this.ƀic)&&(this.ƀic=e),t?(this.ƀlm=false,this.ƀll=0,this.ƀdp=true,this.ƀgf=this.ƀhb.stagePosition.value,this.ƀhr.trigger(this.ƀgf)):(this.ƀll+=i,this.ƀdp=false);}ƀeo(t,e){let i=Vector.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};Ai=Co([u(),Ao("design:paramtypes",[we])],Ai);var Oi=10.8,Mi=10.01,ut;(function(n){n[n.Point=1]="Point",n[n.Circle=2]="Circle",n[n.Polygon=3]="Polygon",n[n.Rectangle=4]="Rectangle";})(ut||(ut={}));var m=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,s){return (t&s)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(s=>n.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,s.collisionGroup,s.collisionMask)))}static cloneP2Body(t){let e=new X.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};var xt="border";var _o=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},xe=class extends ht(){static{h(this,"PhysicsGateway");}};xe=_o([u()],xe);var Vo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},vt=class extends ht(){static{h(this,"PhysicsInternalGateway");}};vt=Vo([u()],vt);var S=class n extends Q{static{h(this,"PhysicsEntity");}static{this.ƀhw=new Map;}static{this.ƀig=new Map;}static getFromP2BodyID(t){return n.ƀhw.get(t)}static getFromP2BodyIDOrFail(t){let e=n.ƀhw.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=n.ƀig.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(n.ƀig.values())}get area(){return this.ƀu}get mass(){return this.ƀgq}get collisions(){return this.ƀbd}constructor(t,e,i){super(),this.ƀhl=new Action,this.onCollision=this.ƀhl.notifier,this.type="dynamic",this.ƀu=0,this.ƀgq=0,this.ƀbd=[],this.physicsWorldID=t,this.ƀii=E.get(vt);let s=this.ƀii.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),r=this.ƀii.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀih=this.ƀii.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀij=this.ƀii.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀii.createBody(this.physicsWorldID,e,s,r,this.type),this.ƀu=this.p2Body.getArea(),this.ƀgq=this.p2Body.mass,this.p2Body.position=m.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀii.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.ƀhw.set(this.p2Body.id,this),n.ƀig.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀii.removeBody(this.physicsWorldID,this.p2Body),n.ƀhw.delete(this.p2Body.id),n.ƀig.delete(this.id));}canCollideWith(t){return m.arePhysicsGroupsCollidable(this.ƀih,this.ƀij,t.ƀih,t.ƀij)}ƀjt(t){this.ƀbd=t,t.length>0&&this.ƀhl.trigger(t);}};var ve=class extends S{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=m.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 Di=class extends Q{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),g.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 Bi=class extends S{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.ƀfl=false,this.ƀfm=false,this.ƀfo=false,this.ƀfn=false,this.ƀid(),this.ƀgk(),E.get(vt).subscribeToPhysicsStep(t,({time:i,delta:s})=>this.ƀkw(i,s)).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.ƀfl=true,this.ƀfm=true,this.ƀfo=true,this.ƀfn=true,this.ƀid();}ƀid(){this.position.value=m.arrayToVector(this.p2Body.position),this.rotation.value=new Radian(this.p2Body.angle),this.velocity.value=m.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀgk(){this.position.subscribe(t=>{this.ƀfl?this.ƀfl=false:this.p2Body.position=[t.x,t.y];}).attach(this),this.rotation.subscribe(t=>{this.ƀfm?this.ƀfm=false:this.p2Body.angle=t.value;}).attach(this),this.velocity.subscribe(t=>{this.ƀfo?this.ƀfo=false:this.p2Body.velocity=[t.x,t.y];}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀfn?this.ƀfn=false:this.p2Body.angularVelocity=t;}).attach(this);}};var Ho=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},jo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},P=class extends Q{static{h(this,"PhysicsWorldEntity");}constructor(t,e,i,s,r,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=s,this.materialDefinitions=r,this.physicsBodyGroupToP2Group=o,this.physicsBodyGroupToP2Mask=a;}};P=Ho([It(),jo("design:paramtypes",[Vector,Boolean,X.World,Map,Map,Map,Map])],P);var ko=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},st=class{static{h(this,"PhysicsBodyGroupService");}createBodyGroupsAndMasks(t,e){let i=new Map,s=new Map;return t.map((r,o)=>{if(o>31)return console.error("Cannot have more than 32 physics body groups"),{};i.set(r,1<<o),s.set(r,0);}),e.map(([r,o])=>{if(!i.has(r))throw new Error(`Physics body group "${r}" not found`);if(!i.has(o))throw new Error(`Physics body group "${o}" not found`);let a=s.get(r),l=s.get(o),c=i.get(r),p=i.get(o);s.set(r,a|p),s.set(o,l|c);}),{physicsBodyGroupToP2Group:i,physicsBodyGroupToP2Mask:s}}getGroupConstant(t,e){return P.getInstanceByIDOrFail(t).physicsBodyGroupToP2Group.get(e)}getMaskConstant(t,e){return P.getInstanceByIDOrFail(t).physicsBodyGroupToP2Mask.get(e)}canCollide(t,e,i){let s=t.physicsBodyGroupToP2Group.get(e),r=t.physicsBodyGroupToP2Mask.get(e),o=t.physicsBodyGroupToP2Group.get(i),a=t.physicsBodyGroupToP2Mask.get(i);return (r&o)!==0&&(a&s)!==0}};st=ko([u()],st);var zo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Jo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ke=class{static{h(this,"AvailabilityGridCacheService");}constructor(t){this.ƀif=t;}getCollidableGrids(t,e){let i=[];return t.availabilityGridCache.forEach((s,r)=>{s.forEach((o,a)=>{this.ƀif.canCollide(t,a,e)&&i.push({grid:o,cellSize:r});});}),i}get(t,e,i){return t.availabilityGridCache.get(e)?.get(i)}set(t,e,i,s){let r=t.availabilityGridCache.get(e);r||(r=new Map,t.availabilityGridCache.set(e,r)),r.set(i,s);}clear(t){t.availabilityGridCache.clear();}};Ke=zo([u(),Jo("design:paramtypes",[st])],Ke);var Yo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Xo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},bt=class{static{h(this,"AvailabilityGridService");}constructor(t,e){this.ƀif=t,this.ƀz=e;}onBodyAdded(t,e,i){e.aabbNeedsUpdate=true,e.updateAABB();let s=m.aabbToBoundingBox(e.aabb);this.ƀz.getCollidableGrids(t,i).forEach(r=>{let o=_.areaToGridArea(s,r.cellSize);r.grid.setArea(o,false);});}findClosestAvailableSpace(t,e,i,s=50){return e.aabbNeedsUpdate=true,e.updateAABB(),ne.findByConvertingGridSpace(this.getAvilabilityGrid(t,s,i),m.aabbToBoundingBox(e.aabb),s)}getAvilabilityGrid(t,e,i){let s=this.ƀz.get(t,e,i);return s||(s=this.ƀcc(t,e,i),this.ƀz.set(t,e,i,s)),s}ƀcc(t,e,i){let s=new Grid({size:new Vector(Math.floor(t.mapSize.x/e),Math.floor(t.mapSize.y/e)),defaultValue:true});return t.p2World.bodies.forEach(r=>{let o=S.getFromP2BodyIDOrFail(r.id);if(o.includeInPathfinding&&this.ƀif.canCollide(t,o.physicsBodyGroup,i)){let a=this.ƀeg(r,e);s.setArea(a,false);}}),s}ƀeg(t,e){let i=m.aabbToBoundingBox(t.aabb);return _.areaToGridArea(i,e)}};bt=Yo([u(),Xo("design:paramtypes",[st,Ke])],bt);var Qo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},qo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Kt=class{static{h(this,"PathFinderService");}constructor(t){this.ƀie=t;}findPathAStar(t,e,i,s,r){r||(r={}),r.neighborType===void 0&&(r.neighborType="orthogonal"),r.gridCellSize===void 0&&(r.gridCellSize=50);let o=P.getInstanceByIDOrFail(t),a,l;Comparator.isNumber(i)?(l=S.getPhysicsInstanceOrFail(i).p2Body,a=m.arrayToVector(l.position)):a=i;let c=_.positionToGridPosition(e,r.gridCellSize),p=_.positionToGridPosition(a,r.gridCellSize),f=this.ƀie.getAvilabilityGrid(o,r.gridCellSize,s);if(l){let v=m.aabbToBoundingBox(l.aabb),w=_.areaToGridArea(v,r.gridCellSize);f.setArea(w,true);}let y=ae.findPath(f,c,p,r.neighborType);return y.path=y.path.map(v=>_.gridPositionToPosition(v,r.gridCellSize)),y}findPathDirection(t,e,i,s,r=50){let o=P.getInstanceByIDOrFail(t),a;if(Comparator.isNumber(i)){let y=S.getPhysicsInstanceOrFail(i);a=m.aabbToBoundingBox(y.p2Body.aabb);}else a=new Rectangle(i,i);let l=_.areaToGridArea(a,r),c=JSON.stringify({targetGridArea:l,collidableWithGroup:s}),p=o.vectorFieldCache.get(c);if(!p){let y=this.ƀie.getAvilabilityGrid(o,r,s);p=new he(l,y),o.vectorFieldCache.set(c,p);}let f=_.positionToGridPosition(e,r);return p.getDirectionToTarget(f)}};Kt=Qo([u(),qo("design:paramtypes",[bt])],Kt);var en=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},rn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},nt=class{static{h(this,"TestVisualsService");}constructor(t,e){this.ƀaa=t,this.ƀhy=e;}printPathfindingTestGrid(t,e,i,s,r,o){let a=P.getInstanceByIDOrFail(t);this.ƀaa.getAvilabilityGrid(a,o,s).map((c,p)=>({position:_.gridPositionToPosition(p,o),availability:c})).forEach(c=>{if(c.position.isInsideRectangle(r)){let p=this.ƀhy.findPathDirection(t,c.position,i,s),f;p===void 0?f=A.createRectangleBorders(new Vector(8,8),2,ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).attach(a):f=A.createArrow(25,c.availability?ColorHelper.green:ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).setRotation(p).attach(a),new O(f,"alpha",{duration:1e3,animation:b.easeIn}).animate({alpha:0}).tap(()=>f.destroy()).attach(f);}});}createExplosionDebugVisual(t,e,i,s,r,o=300){let a=new d().displayParent(e).setAlpha(.5).attach(t);A.createCircle(r,ColorHelper.blue).toSprite().displayParent(a).setPosition(s,{round:false}).setAlpha(.5).attach(t),i.forEach(c=>{let p=c.hits.length>0?ColorHelper.red:ColorHelper.white;A.createVector(s,c.line.to,p).toSprite().displayParent(a).attach(t);}),new O(a,"alpha",{duration:o,animation:b.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}createElipticExplosionDebugVisual(t,e,i,s,r,o,a=300){let l=new d().displayParent(e).setAlpha(.5).attach(t);A.createElipse(o,ColorHelper.blue).toSprite().displayParent(l).setPosition(s,{round:false}).setRotation(r).setAlpha(.5).attach(t),i.forEach(p=>{let f=p.hits.length>0?ColorHelper.red:ColorHelper.white;A.createVector(p.line.from,p.line.to,f).toSprite().displayParent(l).attach(t);}),new O(l,"alpha",{duration:a,animation:b.easeIn}).animate({alpha:0}).tap(()=>l.destroy()).attach(l);}createPhysicsEntityShapeVisual(t,e,i){let s=i?.overridePosition??m.arrayToVector(t.position),r=i?.overrideRotation??new Radian(t.angle),o=i?.color??ColorHelper.blue,a=new d().displayParent(e).setPosition(s,{round:false}).setRotation(r).setAlpha(.5).attachToRoot();t.shapes.forEach(c=>{this.ƀcy(c,o).displayParent(a).attachToRoot();}),new O(a,"alpha",{duration:1e3,animation:b.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}ƀcy(t,e){switch(t.type){case X.Shape.PARTICLE:throw new Error("Not implemented");case X.Shape.LINE:throw new Error("Not implemented");case X.Shape.PLANE:throw new Error("Not implemented");case X.Shape.CIRCLE:throw new Error("Not implemented");case X.Shape.CAPSULE:throw new Error("Not implemented");case X.Shape.BOX:throw new Error("Not implemented");case X.Shape.HEIGHTFIELD:throw new Error("Not implemented");case X.Shape.CONVEX:return this.ƀcx(t,e);default:{t.type;throw new Error}}}ƀcx(t,e){let i=[t.vertices.map(s=>({x:s[0],y:s[1]}))];return A.createPolygon(i,e).toSprite()}};nt=en([u(),rn("design:paramtypes",[bt,Kt])],nt);var nn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},an=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ze=class{static{h(this,"HitTestService");}constructor(t){this.ƀle=t;}hitTest(t,e){let i=t.world,s=S.getFromP2BodyIDOrFail(t.id),r=m.cloneP2Body(t);this.ƀt(r,e);let o=i.broadphase.aabbQuery(i,this.ƀdu(r)).map(l=>S.getFromP2BodyIDOrFail(l.id)).filter(l=>l.includeInPathfinding).filter(l=>s.canCollideWith(l)).map(l=>m.cloneP2Body(l.p2Body)),a=false;if(o.length!==0){let l=new X.World;l.addBody(r),o.forEach(c=>l.addBody(c)),l.step(1,1,1),a=l.narrowphase.contactEquations.some(c=>c.bodyA===r||c.bodyB===r),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=m.vectorToArray(e.overridePosition)),e?.overrideRotation&&(t.angle=e.overrideRotation.value);}ƀdu(t){return t.aabbNeedsUpdate=true,t.updateAABB(),t.aabb}};Ze=nn([u(),an("design:paramtypes",[nt])],Ze);var ln=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Qe=class{static{h(this,"CollisionsService");}registerPhysicsWorld(t){t.p2World.on("beginContact",e=>{e.contactEquations.forEach(i=>{this.ƀjd(t,i);});});}step(t,e,i){S.getPhysicsEntities().forEach(s=>{s.ƀbd=[];}),t.p2World.narrowphase.contactEquations.forEach(s=>{this.ƀjd(t,s);}),t.bodiesInContactWith.forEach((s,r)=>{this.ƀfb(s.p2Body),s.entity.ƀjt(t.collisionReports.get(r)||[]);}),t.bodiesInContactWith.clear(),t.collisionReports.clear();}ƀfb(t){let e=m.arrayToVector(t.velocity);e.length>Oi&&(e=e.normalize(Oi),t.velocity=m.vectorToArray(e)),t.angularVelocity=Math.min(Math.max(t.angularVelocity,-Mi),Mi);}ƀjd(t,e){let i=S.getFromP2BodyID(e.bodyA.id),s=S.getFromP2BodyID(e.bodyB.id);if(i&&s){t.bodiesInContactWith.set(e.bodyA.id,{p2Body:e.bodyA,entity:i}),t.bodiesInContactWith.set(e.bodyB.id,{p2Body:e.bodyB,entity:s});let r=t.collisionReports.get(e.bodyA.id)||[],o=t.collisionReports.get(e.bodyB.id)||[],{collisionDetailsA:a,collisionDetailsB:l}=this.ƀdz(i,s,e);r.push({self:a,target:l}),o.push({self:l,target:a}),t.collisionReports.set(e.bodyA.id,r),t.collisionReports.set(e.bodyB.id,o);}else console.warn("ContactEquationOrganiser: Entity not found for contact equation",e);}ƀdz(t,e,i){let s=t.convertToDTO(),r=e.convertToDTO(),o=m.arrayToVector(i.contactPointA),a=m.arrayToVector(i.contactPointB),{normalA:l,normalB:c}=this.ƀem(i);return {collisionDetailsA:this.ƀdy(s,i.bodyA.mass,o,l,t.area),collisionDetailsB:this.ƀdy(r,i.bodyB.mass,a,c,e.area)}}ƀdy(t,e,i,s,r){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:r,normal:s}}ƀem(t){let e=m.arrayToVector(t.normalA),i=e.multiplyNumber(-1);return {normalA:e,normalB:i}}};Qe=ln([u()],Qe);var cn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},pn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},qe=class extends ve{static{h(this,"BorderEntity");}constructor(t,e){super(t,e);}};qe=cn([It(),pn("design:paramtypes",[Number,Object])],qe);var un=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Y=1e4,ti=class{static{h(this,"BorderService");}createBorders(t,e,i){this.ƀbw(t,new Vector(e.x/2,-Y/2),new Vector(e.x+Y*2,Y),i),this.ƀbw(t,new Vector(e.x/2,e.y+Y/2),new Vector(e.x+Y*2,Y),i),this.ƀbw(t,new Vector(-Y/2,e.y/2),new Vector(Y,e.y+Y*2),i),this.ƀbw(t,new Vector(e.x+Y/2,e.y/2),new Vector(Y,e.y+Y*2),i);}ƀbw(t,e,i,s){return new qe(t,{shapeDefinition:{materialName:xt,group:s,shapeType:ut.Rectangle,shapeData:i},position:e,rotation:Radian.get0,addInEmptySpace:false,includeOnPathfinding:true}).attachByID(t)}};ti=un([u()],ti);var dn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},br=new X.Material,mn={id:xt,density:Number.MAX_SAFE_INTEGER,velocityDrag:1,rotationalDrag:1},Zt=class{static{h(this,"MaterialsService");}createMaterials(t,e,i,s){let r=new Map,o=new Map;if(i.forEach(a=>{r.set(a.id,new X.Material),o.set(a.id,a);}),r.has(xt))throw new Error(`Material with name ${xt} cannot be defined, pick another name for the material.`);return r.set(xt,br),o.set(xt,mn),this.ƀc(t,e,i,s,r),{materials:r,materialDefinitions:o}}getMaterial(t,e){let i=P.getInstanceByIDOrFail(t);return this.ƀel(e,i.materials)}getMaterialDefinition(t,e){let i=P.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,s,r){this.ƀed(i.map(o=>o.id),s).forEach(o=>{let a=this.ƀel(o.materialA,r),l=this.ƀel(o.materialB,r);t.addContactMaterial(new X.ContactMaterial(a,l,{friction:o.friction,restitution:o.bounciness,stiffness:o.stiffness,relaxation:o.relaxation}));}),this.ƀd(t,e,i,r);}ƀed(t,e){let i=new Map;e.forEach(r=>{let o=i.get(r.materialA);o||(o=new Map,i.set(r.materialA,o)),o.set(r.materialB,r);});let s=[];return t.forEach((r,o)=>{for(let a=o;a<t.length;a++){let l=t[a],c=i.get(r)?.get(l);c?s.push(c):s.push({materialA:r,materialB:l,friction:0,bounciness:0,relaxation:4,stiffness:1e6});}}),s}ƀd(t,e,i,s){i.forEach(r=>{let o=this.ƀel(r.id,s);t.addContactMaterial(new X.ContactMaterial(o,br,{friction:e.friction,restitution:e.bounciness,stiffness:e.stiffness,relaxation:e.relaxation}));});}};Zt=dn([u()],Zt);var yn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},gn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Qt=class{static{h(this,"PhysicsWorldService");}constructor(t,e,i,s,r){this.ƀgu=t,this.ƀak=e,this.ƀaa=i,this.ƀbe=s,this.ƀif=r;}createPhysicsWorld(t){let e=new X.World({gravity:[0,0]}),{materials:i,materialDefinitions:s}=this.ƀgu.createMaterials(e,t.borderProperties,t.materialDefinitions,t.materialContactDefinitions),{physicsBodyGroupToP2Group:r,physicsBodyGroupToP2Mask:o}=this.ƀif.createBodyGroupsAndMasks(t.physicsBodyGroups,t.interactingBodyGroups),a=new P(t.mapSize,t.modifyUpdateCycle,e,i,s,r,o).attachByID(t.attachTo);return a.onDestroy().tap(()=>{e.clear(),t.modifyUpdateCycle&&g.cleanUpdateModifier();}).attachToRoot(),this.ƀak.createBorders(a.id,t.mapSize,t.borderProperties.borderBodyGroup),this.ƀbe.registerPhysicsWorld(a),t.modifyUpdateCycle?g.registerUpdateModifier((l,c)=>this.ƀkw(a,l,c)):g.beforeSceneUpdateAction.subscribe(({time:l,delta:c})=>{this.ƀkw(a,l,c);}).attach(a),a.id}addBody(t,e,i,s,r){let o=P.getInstanceByIDOrFail(t);if(i){let a=this.ƀaa.findClosestAvailableSpace(o,e,s);return a?(e.position[0]+=a.x,e.position[1]+=a.y,o.p2World.addBody(e),r&&this.ƀaa.onBodyAdded(o,e,s),true):false}else return o.p2World.addBody(e),r&&this.ƀaa.onBodyAdded(o,e,s),true}removeBody(t,e){P.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 s=e+i;this.ƀbe.step(t,s,i),t.onPhysicsStep.trigger({time:s,delta:i}),t.lastP2Time.value=t.p2World.time;}return i}setPaused(t,e){P.getInstanceByIDOrFail(e).paused.set(t);}};Qt=yn([u(),gn("design:paramtypes",[Zt,ti,bt,Qe,st])],Qt);var xn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},te=class{static{h(this,"RayCastingService");}castClosest(t,e,i){let s=new X.RaycastResult,r=new X.Ray({mode:X.Ray.CLOSEST,from:m.vectorToArray(e.from),to:m.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i)});if(t.p2World.raycast(s,r),s.hasHit())return this.ƀbr(s,e)}castAllFirstContacts(t,e,i){let s=new Map,r=new X.Ray({mode:X.Ray.ALL,from:m.vectorToArray(e.from),to:m.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i),callback:h(o=>{let a=s.get(o.body);!s.has(o.body)||o.fraction<a.fraction?s.set(o.body,this.ƀbr(o,e)):o.fraction===a.fraction&&a.isExternal()&&s.set(o.body,this.ƀbr(o,e));},"callback")});return t.p2World.raycast(new X.RaycastResult,r),Array.from(s.values())}ƀbr(t,e){let i=t.fraction,s=m.arrayToVector(t.normal),r,o,a;return {body:t.body,hitPosition:h(()=>(r===void 0&&(r=e.from.lerp(e.to,i)),r),"hitPosition"),hitDistance:h(()=>(o===void 0&&(o=e.length*i),o),"hitDistance"),isExternal:h(()=>(a===void 0&&(a=e.fromTo.dotProduct(s)<0),a),"isExternal"),normal:s,fraction:i,line:e}}};te=xn([u()],te);var vn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Tt=class{static{h(this,"ImpactService");}applyImpulse(t,e,i,s){let r=i.normalize(s),o=[e.x-t.position[0],e.y-t.position[1]];t.applyImpulse(m.vectorToArray(r),o);}};Tt=vn([u()],Tt);var bn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},ee=class{static{h(this,"RayCastHitConverterService");}toExplosionHits(t,e=true){let i=new Map;return t.forEach(s=>{s.hits.forEach(r=>{let o=i.get(r.body);if(o){let a=r.fraction<o.closestRaycastHit.fraction?r:o.closestRaycastHit;o.rayCastHits.push(r),i.set(r.body,{hitCount:o.hitCount+1,closestRaycastHit:a,rayCastHits:o.rayCastHits,isExternal:e?o.isExternal:o.isExternal&&r.isExternal(),explosionCenter:r.line.from});}else {let a=r.isExternal();i.set(r.body,{hitCount:1,closestRaycastHit:r,rayCastHits:[r],isExternal:a,explosionCenter:r.line.from});}});}),[...i.values()].map(s=>this.ƀbs(s,t.length))}ƀbs(t,e){let i=t.hitCount/e,s=t.rayCastHits;if(t.isExternal)return {body:S.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:true,normal:t.closestRaycastHit.normal,fraction:t.closestRaycastHit.fraction,ratioOfHits:i,raycastResults:s,getHitPosition:t.closestRaycastHit.hitPosition,getHitDistance:t.closestRaycastHit.hitDistance};{let r=m.arrayToVector(t.closestRaycastHit.body.position);return {body:S.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:false,normal:Vector.fromTo(r,t.explosionCenter).normalize(),fraction:0,ratioOfHits:i,raycastResults:s,getHitPosition:h(()=>t.explosionCenter,"getHitPosition"),getHitDistance:h(()=>0,"getHitDistance")}}}};ee=bn([u()],ee);var Sn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Tn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},In=15,ii=class{static{h(this,"ElipticExplosionService");}constructor(t,e,i,s){this.ƀiz=t,this.ƀle=e,this.ƀiy=i,this.ƀfp=s;}createElipticExplosion(t,e,i,s,r,o,a){let l=P.getInstanceByIDOrFail(t),c=this.ƀch(e,i,s,r,a?.hitOnlyClosest===true,l),p=this.ƀiy.toExplosionHits(c,false);return this.ƀr(p,o),a?.testLayerID&&this.ƀle.createElipticExplosionDebugVisual(l,a.testLayerID,c,e,i,s,a.debugRayDuration),p.map(f=>{let{p2Body:y,...v}=f;return v})}ƀch(t,e,i,s,r,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 f=l.normalize(i.y);a.push(new Line(t,t.add(f))),a.push(new Line(t,t.add(f.multiplyNumber(-1))));let y=Math.round(i.y/In),v=i.y/(y*2+1)*2,w=l.normalize(v),M=i.x,L=Math.pow(i.y,2);return ArrayHelper.createIntegerArray(y).forEach(I=>{let K=v*(I+1),Vt=w.multiplyNumber(I+1),$=c.normalize(this.ƀet(M,L,K)),H=t.add(Vt);a.push(new Line(H,H.add($))),a.push(new Line(H,H.add($.multiplyNumber(-1))));let j=t.add(Vt.multiplyNumber(-1));a.push(new Line(j,j.add($))),a.push(new Line(j,j.add($.multiplyNumber(-1))));}),a.map(I=>{if(r){let K=this.ƀiz.castClosest(o,I,s);return {line:I,hits:K?[K]:[]}}else {let K=this.ƀiz.castAllFirstContacts(o,I,s);return {line:I,hits:K}}})}ƀet(t,e,i){return Math.sqrt(1-Math.pow(i,2)/e)*t}ƀr(t,e){t.forEach(i=>{i.raycastResults.forEach(s=>{let r,o;s.isExternal()?(r=s.line.fromTo,o=e*2):(r=s.line.fromTo.multiplyNumber(-1),o=e*(1-s.fraction)*8),this.ƀfp.applyImpulse(s.body,s.hitPosition(),r,o);});});}};ii=Sn([u(),Tn("design:paramtypes",[te,nt,ee,Tt])],ii);var Cn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},An=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},ri=class{static{h(this,"ExplosionService");}constructor(t,e,i,s){this.ƀiz=t,this.ƀle=e,this.ƀiy=i,this.ƀfp=s;}createExplosion(t,e,i,s,r,o){let a=P.getInstanceByIDOrFail(t),l=this.ƀer(i),c=this.ƀch(e,i,s,l,o?.hitOnlyClosest===true,a),p=this.ƀiy.toExplosionHits(c);return this.ƀr(e,i,r,l,p),o?.testLayerID&&this.ƀle.createExplosionDebugVisual(a,o.testLayerID,c,e,i,o.debugRayDuration),p}ƀch(t,e,i,s,r,o){let a=new Radian(PI_360/s),l=new Vector(0,-e),c=a.vector;return ArrayHelper.createEmptyArray(s).map(()=>{let p=t.add(l);return l=l.rotate(c),new Line(t,p)}).map(p=>{if(r){let f=this.ƀiz.castClosest(o,p,i);return {line:p,hits:f?[f]:[]}}else {let f=this.ƀiz.castAllFirstContacts(o,p,i);return {line:p,hits:f}}})}ƀr(t,e,i,s,r){r.forEach(o=>{if(o.isExternal)o.raycastResults.forEach(a=>{let l=i*(1-a.fraction);this.ƀfp.applyImpulse(a.body,a.hitPosition(),a.line.fromTo,l);});else {let a=Vector.fromTo(t,m.arrayToVector(o.p2Body.position)),l=a.length/e,c=i*s*l/2;this.ƀfp.applyImpulse(o.p2Body,o.getHitPosition(),a,c);}});}ƀer(t){return t>100?Math.floor(t*.3):Math.floor(t*.26+4)}};ri=Cn([u(),An("design:paramtypes",[te,nt,ee,Tt])],ri);var Gn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},ie=class{static{h(this,"PhysicsQueryService");}getMapSize(t){let e=P.getInstanceByIDOrFail(t);return {dimentions:e.mapSize,center:e.mapSizeCenter}}subscribeToPhysicsStep(t,e){return P.getInstanceByIDOrFail(t).onPhysicsStep.subscribe(e)}};ie=Gn([u()],ie);var _n=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Vn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Gi=class{static{h(this,"PhysicsController");}constructor(t,e,i,s,r,o,a,l){this.ƀim=t,this.ƀhy=e,this.ƀle=i,this.ƀdj=s,this.ƀdc=r,this.ƀfh=o,this.ƀil=a,this.ƀfp=l;}createPhysicsWorld(t){return this.ƀim.createPhysicsWorld(t)}getMapSize(t){return this.ƀil.getMapSize(t)}setPaused(t,e){this.ƀim.setPaused(t,e);}hitTest(t,e){let i=S.getPhysicsInstanceOrFail(t);return this.ƀfh.hitTest(i.p2Body,e)}findPath(t,e,i,s,r){return this.ƀhy.findPathAStar(t,e,i,s,{neighborType:r})}findPathDirection(t,e,i,s){return this.ƀhy.findPathDirection(t,e,i,s)}applyImpulse(t,e,i,s){let r=S.getPhysicsInstanceOrFail(t);this.ƀfp.applyImpulse(r.p2Body,e,i,s);}createExplosion(t,e,i,s,r,o){return this.ƀdj.createExplosion(t,e,i,s,r,o)}createElipticExplosion(t,e,i,s,r,o,a){return this.ƀdc.createElipticExplosion(t,e,i,s,r,o,a)}printPathfindingTestGrid(t,e,i,s,r,o=50){this.ƀle.printPathfindingTestGrid(t,e,i,s,r,o);}};Gi=_n([lt(xe),Vn("design:paramtypes",[Qt,Kt,nt,ri,ii,Ze,ie,Tt])],Gi);var Nn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},si=class{static{h(this,"ShapeCreationService");}createBody(t,e,i,s,r){let o=P.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 ut.Point:return this.ƀby(o,void 0,i,s,e.shapeDefinition.group,r);case ut.Circle:return this.ƀby(o,e.shapeDefinition.shapeData,i,s,e.shapeDefinition.group,r);case ut.Polygon:return this.ƀcg(o,e.shapeDefinition.shapeData,i,s,e.shapeDefinition.group,r);case ut.Rectangle:return this.ƀci(o,e.shapeDefinition.shapeData,i,s,e.shapeDefinition.group,r);default:{e.shapeDefinition.shapeType;throw new Error}}}ƀby(t,e,i,s,r,o){let a=new X.Circle({collisionGroup:t.physicsBodyGroupToP2Group.get(r),collisionMask:t.physicsBodyGroupToP2Mask.get(r),radius:e});a.material=i;let l=new X.Body({type:o==="dynamic"?X.Body.DYNAMIC:X.Body.STATIC,mass:s.density,damping:s.velocityDrag,angularDamping:s.rotationalDrag});return l.addShape(a),l}ƀcg(t,e,i,s,r,o){let a=t.physicsBodyGroupToP2Group.get(r),l=t.physicsBodyGroupToP2Mask.get(r),c=e.map(y=>new X.Convex({vertices:y.map(v=>[v.x,v.y]),collisionGroup:a,collisionMask:l})).map(y=>(y.material=i,y)),p=c.reduce((y,v)=>y+v.area,0),f=new X.Body({type:o==="dynamic"?X.Body.DYNAMIC:X.Body.STATIC,mass:p,damping:s.velocityDrag,angularDamping:s.rotationalDrag});return c.forEach(y=>f.addShape(y)),f.setDensity(s.density),f}ƀci(t,e,i,s,r,o){let a=new X.Box({width:e.x,height:e.y,collisionGroup:t.physicsBodyGroupToP2Group.get(r),collisionMask:t.physicsBodyGroupToP2Mask.get(r)});a.material=i;let l=e.x*e.y,c=new X.Body({type:o==="dynamic"?X.Body.DYNAMIC:X.Body.STATIC,mass:l,damping:s.velocityDrag,angularDamping:s.rotationalDrag});return c.addShape(a),c.setDensity(s.density),c}};si=Nn([u()],si);var Fn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Ln=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},_i=class{static{h(this,"PhysicsInternalController");}constructor(t,e,i,s,r){this.ƀim=t,this.ƀik=e,this.ƀkd=i,this.ƀil=s,this.ƀif=r;}createBody(t,e,i,s,r){return this.ƀkd.createBody(t,e,i,s,r)}getMaterial(t,e){return this.ƀik.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀik.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀif.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀif.getMaskConstant(t,e)}addBody(t,e,i,s,r){return this.ƀim.addBody(t,e,i,s,r)}removeBody(t,e){this.ƀim.removeBody(t,e);}subscribeToPhysicsStep(t,e){return this.ƀil.subscribeToPhysicsStep(t,e)}};_i=Fn([lt(vt),Ln("design:paramtypes",[Qt,Zt,si,ie,st])],_i);export{wt as AdvancedSound,Fi as AnimationFlicker,W as AnimationInterpolationFunctions,b as Animations,C as AnimationsCompletionHandlingType,O as Animator,xt as BORDER_MATERIAL_NAME,T as BardLegendsTestingHelper,le as Camera,yt as CameraGateway,ne as ClosestAvailableSpaceHelper,d as Container,Lt as ContainerEventType,lt as ControllerDecorator,ai as Cursor,k as DEFAULT_SHADER_RESOLUTION,ui as DeltaTime,xi as DisplayObjectArray,Q as Entity,It as EntityDecorator,zi as FadeInContent,gt as FocusingAnimation,x as Game,ht as Gateway,A as Graphics,ve as ImmovablePhysicsEntity,Ci as KeyboardService,bi as MenuEntity,me as MenuUI,Pi as MenuView,we as MouseService,Ai as MouseTargetFocusService,Di as MovableEntity,Bi as MovablePhysicsEntity,pe as Music,mi as MusicPlayer,ae as PathFinder,S as PhysicsEntity,xe as PhysicsGateway,ut as PhysicsShapeType,yi as Placeholder,Mi as ROTATIONAL_SPEED_LIMIT,B as ReAnimateHandlingType,gi as RichText,rt as SOUND_TRANSITION_DURATION,Oi as SPEED_LIMIT,Nt as Scene,_r as SceneDecorator,Si as ScrollAreaUI,ct as ScrollDirection,Mt as ScrollMaskUI,E as Service,u as ServiceDecorator,dt as SingletonEntity,Qi as SlideInContent,pi as SlideInContentByIndex,Be as SlideStateAnimation,pt as SlideStateAnimationState,ce as Sound,et as Sprite,jt as StateAnimation,de as Text,Ie as ThroughEmptyStateAnimation,wi as UpdatableContainer,g as UpdateCycle,he as VectorFieldPathFinder,oe as VectorSet,Z as View,ni as ViewDecorator};
|
|
45
|
+
}`,e}constructor(t,e){if(super({glProgram:W.GlProgram.from({vertex:W.defaultFilterVert,fragment:n.ƀeg(t*k)}),resources:{expandUniforms:{uColor:{value:new Float32Array(3),type:"vec3<f32>"},uExpandSquared:{value:0,type:"f32"}}},resolution:k}),this.ƀdk=t,this.ƀdk=t*k,this.ƀdk<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀdk>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");Comparator.isInteger(this.ƀdk)||(this.ƀdk=Math.floor(this.ƀdk));let i=ColorHelper.normalize(e);this.resources.expandUniforms.uniforms.uColor=new Float32Array([i.red,i.green,i.blue]),this.resources.expandUniforms.uniforms.uExpandSquared=this.ƀdk*this.ƀdk,this.padding=this.ƀdk;}};var Oe=class extends W.Filter{static{h(this,"GlowFilter");}constructor(t){super({resolution:k,compatibleRenderers:W.RendererType.WEBGL});let e={blurRadius:1,expand:0,color:ColorHelper.white,...t};this.ƀdl=new Ae(e.expand,e.color);let i=Comparator.isNumber(e.blurRadius)?new Vector(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀak=new Nt(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀak.blendMode="add";}apply(t,e,i,s){let r=W.TexturePool.getSameSizeTexture(e);this.ƀdl.apply(t,e,r,true),this.ƀak.apply(t,r,i,s),W.TexturePool.returnTexture(r);}};var re=class n{static{h(this,"GlowSpriteGenerator");}static{this.ƀfb=new Map;}static createGlowSpriteFromSprite(t,e,i){let s=this.ƀbj(e),r=Comparator.isNumber(s.blurRadius)?new Vector(s.blurRadius,s.blurRadius):s.blurRadius,o=this.ƀei(t.texture,r,s.expand,s.color,i),a=new W.Sprite(o);return this.ƀkh(a,Vector.fromVec2(t.anchor),Math.max(r.x,r.y)+s.expand),a.alpha=s.glowAlpha,a.blendMode=s.blendMode,a}static ƀei(t,e,i,s,r){if(!t.id)throw new Error("GlowSpriteGenerator: baseTexture should have an id");if(r){let o=`${t.id}-${i}-${e.x}-${e.y}-${s.r}-${s.g}-${s.b}`;if(n.ƀfb.has(o))return n.ƀfb.get(o);{let a=this.ƀej(t,e,i,s);return n.ƀfb.set(o,a),a}}else return this.ƀej(t,e,i,s)}static ƀej(t,e,i,s){let r=new W.Sprite(t);r.filters=[new Oe({blurRadius:e,expand:i,color:s})];let o=new W.Container;o.addChild(r);let a=Math.max(e.x,e.y)+i,l=y.instance.generateTexture({target:o,frame:new W.Rectangle(-a,-a,r.width+a*2,r.height+a*2)});return l.id=G.insertAsset(l),o.destroy({children:true}),l}static ƀkh(t,e,i){let s=(i+(t.width-i*2)*e.x)/t.width,r=(i+(t.height-i*2)*e.y)/t.height;t.anchor.set(s,r);}static ƀbj(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:ColorHelper.white,blendMode:"add"};return t&&(e={...e,...t}),e}};T.onHardReset.subscribe(()=>{re.ƀfb.clear();}).attachToRoot();var et=class n extends d{static{h(this,"Sprite");}static createByName(t){let e=y.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.ƀiv,i=e.parent;i&&i.removeChild(e);let s=y.instance.generateTexture({target:e,resolution:2,antialias:true,textureSourceOptions:{scaleMode:"linear"}});i&&i.addChild(e);let o={id:G.insertAsset(s),scale:t.scale,size:t.size,anchor:Vector.zero,destroyAssetOnDestroy:true};return new n(o,{ignoreAnchor:true})}constructor(t,e={}){if(super(),this.ƀlx=1,!t)throw new Error("Sprite: spriteDefinition cannot be nullish!");this.ƀlc=t,this.pixiSprite=new W.Sprite(G.getAsset(t.id)),this.ƀiv.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.ƀlc.destroyAssetOnDestroy&&(G.destroyAsset(this.ƀlc.id),this.ƀix&&G.destroyAsset(this.ƀix.texture.id)),this.ƀgw?.destroy(),this.ƀam?.destroy(),this.ƀix&&!this.ƀix.destroyed&&this.ƀix.destroy());}setTextureScale(t){return this.textureScale=t,this}get textureScale(){return this.ƀlx}set textureScale(t){this.ƀlx=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.ƀlc.boundingShapes&&!this.ƀiv.hitArea&&(this.ƀiv.hitArea=new vs(this.ƀlc.boundingShapes,this.size,Vector.fromVec2(this.ƀlc.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 W.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.ƀix)return this.ƀix.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀix)this.ƀix.alpha=t;else throw new Error("Sprite: setGlowFilterAlpha cannot be called before glow filter is added.")}getAlignmentVector(t){let e=Vector.fromVec2(this.ƀlc.anchor).to(t);return new Vector(this.size.x*e.x,this.size.y*e.y)}setGlowEffect(t){return this.ƀix&&(this.ƀix.destroy(),this.ƀix=void 0),t&&(this.ƀix=re.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀlc.destroyAssetOnDestroy),this.ƀix.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀix.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.ƀiv.addChild(this.ƀix)),this}showBoundingShape(t){return t?this.ƀam||(this.ƀam=this.ƀby().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀam&&(this.ƀam.destroy(),this.ƀam=void 0),this}getBoundingMask(){if(!this.ƀgw){if(!this.ƀlc.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀgw=this.ƀby(),this.ƀgw.displayParent(this);}return this.ƀgw}ƀby(){if(!this.ƀlc.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return A.createPolygon(this.ƀlc.boundingShapes,ColorHelper.white).toSprite().attach(this)}download(){let t=y.instance.renderer.extract.canvas(this.ƀiv);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}},vs=class{static{h(this,"CompositeHitArea");}constructor(t,e,i){this.ƀkr=t.map(s=>new W.Polygon(s.map(r=>new W.Point(r.x,r.y))));}contains(t,e){return this.ƀkr.some(i=>i.contains(t,e))}};var Me=class{static{h(this,"DashedLineHelper");}static getLines(t,e,i){let s=Vector.fromTo(t,e),r=s.normalize(),o=s.length-i.lineStartGap-i.lineEndGap,a=[];if(o<=0)return a;let l=t.add(r.normalize(i.lineStartGap));if(o<=i.dashGap+i.dashLength*.5)return a.push({from:l,to:l.add(r.normalize(o))}),a;let c=o-i.dashGap,p=i.dashLength+i.dashGap,f=Math.floor(c/p),g=c-p*f;f>=1&&g<i.dashLength&&(g+=p,f--);let v=r.normalize(g/2),x=r.normalize(i.dashGap);if(a.push({from:l,to:l.add(v)}),l=l.add(v),f>0){let M=r.normalize(i.dashLength);ArrayHelper.createEmptyArray(f).forEach(()=>{l=l.add(x),a.push({from:l,to:l.add(M)}),l=l.add(M);});}return l=l.add(x),a.push({from:l,to:l.add(v)}),a}};var A=class n extends d{static{h(this,"Graphics");}static{this.ƀdb=new Map;}static createArrow(t,e){let i=new W.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(r=>{i.poly(r.map(o=>new W.Point(o.x,o.y))).fill(e);}),new n(i,JSON.stringify({type:"arrow",size:t,color:e}))}static createDashedLine(t,e,i){let s={width:2,dashLength:10,dashGap:4,lineStartGap:0,lineEndGap:0,color:ColorHelper.white,...i},r=new W.Graphics;return Me.getLines(t,e,s).forEach(a=>{r.moveTo(a.from.x,a.from.y).lineTo(a.to.x,a.to.y);}),r.stroke({width:s.width,color:s.color}),new n(r,JSON.stringify({type:"dashedLine",from:t,to:e,options:s}))}static createVector(t,e,i){let s=new W.Graphics;return s.moveTo(t.x,t.y),s.lineTo(e.x,e.y),s.stroke({width:2,color:i}),s.circle(t.x,t.y,3),s.fill(ColorHelper.white),s.stroke({width:1,color:i}),new n(s,JSON.stringify({type:"line",start:t,end:e,color:i}))}static createRectangleBorders(t,e,i){let s=new W.Graphics;return s.rect(0,0,t.x,e),s.rect(0,e,e,t.y-e*2),s.rect(t.x-e,e,e,t.y-e*2),s.rect(0,t.y-e,t.x,e),s.fill(i),new n(s,JSON.stringify({type:"rectangle-borders",size:t,borderSize:e,color:i}))}static createRectangle(t,e=ColorHelper.white){let i=new W.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 W.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 W.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 W.Graphics,s=JSON.stringify({type:"polygon",polygon:t,color:e});return t.forEach(r=>{i.poly(r.map(o=>new W.Point(o.x,o.y))).fill(e);}),new n(i,s)}static createRegularPolygon(t,e,i){let s=new W.Graphics,r=new Radian(PI_360/t);s.moveTo(e,0);for(let o=1;o<=t;o++){let l=r.multiply(o).vector.normalize(e),c=e+l.x,p=e+l.y;s.lineTo(c,p);}return s.fill(i),new n(s,JSON.stringify({type:"regular-polygon",sides:t,radius:e,color:i}))}constructor(t,e){super(),this.ƀiv.addChild(t),this.pixiGraphics=t,this.ƀap=e;}destroy(){this.destroyed||(super.destroy(),!this.pixiGraphics.destroyed&&this.pixiGraphics.destroy());}toSprite(t){let e={cacheName:this.ƀap,cache:false,...t},i=this.ƀex(e.cacheName,e.cache),s={id:i.textureID,scale:1,size:i.bounds,anchor:{x:0,y:0},destroyAssetOnDestroy:!e.cache},r=new et(s,{texturePosition:i.bounds,ignoreAnchor:true});return this.attachToRoot(),this.destroy(),r}ƀex(t,e){if(e){let i=n.ƀdb.get(t);return i||(i=this.ƀck(),n.ƀdb.set(t,i)),i}else return this.ƀck()}ƀck(){let t=y.instance.generateTexture(this.pixiGraphics);t.id=G.insertAsset(t);let e=this.pixiGraphics.getBounds();return {textureID:t.id,bounds:new Vector(e.x,e.y)}}};var li=class{static{h(this,"AnimationEaseInOutFlatter");}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},Ot=class n extends d{static{h(this,"ScrollMaskUI");}static{this.ƀdb=new Map;}constructor(t,e,i,s=ct.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 r=new d;s===ct.Horizontal?this.ƀce(e,i,r):this.ƀcl(e,i,r),this.ƀgw=et.createSnapshotSprite(r).attach(this),r.destroy(),t.setMask(this.ƀgw);}ƀcl(t,e,i){e>0&&this.ƀcb(new Vector(t.x,e)).displayParent(i).attach(i),A.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.ƀcb(new Vector(t.x,e)).setPosition(new Vector(t.x,t.y),{round:false}).setRotation(Radian.get180).displayParent(i).attach(i);}ƀce(t,e,i){e>0&&this.ƀcb(new Vector(t.y,e)).setPosition(new Vector(0,t.y),{round:false}).setRotation(Radian.get270).displayParent(i).attach(i),A.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.ƀcb(new Vector(t.y,e)).setPosition(new Vector(t.x,0),{round:false}).setRotation(Radian.get90).displayParent(i).attach(i);}ƀcb(t){let i={id:this.ƀcc(t.y),scale:1,size:t,anchor:{x:0,y:0}};return new et(i,{textureSize:t,ignoreAnchor:true})}ƀcc(t){let e=JSON.stringify({type:"gradient",length:t}),i=n.ƀdb.get(e);if(!i){let s=document.createElement("canvas");s.width=1,s.height=t;let r=s.getContext("2d");if(r){let o=new li;ArrayHelper.createIntegerArray(t).forEach(l=>{let c=`rgba(255, 255, 255, ${o.multiplierFunction(l/t)})`;r.fillStyle=c,r.fillRect(0,l,1,1);});let a=W.Texture.from(s);i=G.insertAsset(a),n.ƀdb.set(e,i);}else throw new Error("Canvas context is null")}return i}};var pt;(function(n){n[n.Appear=1]="Appear",n[n.Disappear=2]="Disappear";})(pt||(pt={}));var De=class extends Attachable{static{h(this,"SlideStateAnimation");}onStateChange(t){return this.ƀhx.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀhz.subscribe(e=>t(e.value,e.index)).attach(this),this}get state(){return {value:this.ƀlj.state.value,item:this.ƀfy,nextItem:this.ƀho,queuedItem:this.ƀlj.state.queuedItem,animationState:this.ƀo}}constructor(t){super(),this.ƀo="idle",this.ƀhx=new Action,this.ƀhz=new Action,this.ƀic={duration:500,animation:b.easeInOutCubic,...t},this.ƀlj=new jt({duration:this.ƀic.duration,animation:this.ƀic.animation}).onStateChange((e,i)=>this.ƀfe(e,i)).onValueChange(e=>this.ƀfj(e)).attach(this);}setIndex(t,e){if(!Comparator.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfy===void 0?(this.ƀfy=t,this.ƀhx.trigger({state:pt.Appear,index:t}),this.ƀlj.setItem(t,e)):this.ƀfy!==t?this.ƀho!==t?this.ƀo==="idle"?(this.ƀo=t>this.ƀfy?"transitionForward":"transitionBackward",this.ƀho=t,this.ƀhx.trigger({state:pt.Appear,index:this.ƀho}),this.ƀlj.setItem(t,e)):this.ƀlj.setItem(t,e):this.ƀo==="reverting"&&this.ƀho===t&&(this.ƀo=t>this.ƀfy?"transitionForward":"transitionBackward",this.ƀlj.setItem(t,e)):(this.ƀo==="transitionForward"||this.ƀo==="transitionBackward")&&(this.ƀo="reverting",this.ƀlj.setItem(t,e));}ƀfe(t,e){switch(this.ƀfy!==void 0&&this.ƀfy!==t&&this.ƀfy!==e&&this.ƀhx.trigger({state:pt.Disappear,index:this.ƀfy}),this.ƀho!==void 0&&this.ƀho!==t&&this.ƀho!==e&&this.ƀhx.trigger({state:pt.Disappear,index:this.ƀho}),e!==void 0&&e!==this.ƀfy&&e!==this.ƀho&&this.ƀhx.trigger({state:pt.Appear,index:e}),this.ƀo){case "idle":break;case "transitionForward":case "transitionBackward":e===void 0?(this.ƀo="idle",this.ƀfy=this.ƀho,this.ƀho=void 0):this.ƀfy!==t&&this.ƀff(t,e);break;case "reverting":e===void 0?(this.ƀo="idle",this.ƀho=void 0):this.ƀfy!==e&&this.ƀff(t,e);break;default:{this.ƀo;throw new Error}}}ƀff(t,e){this.ƀfy=t,this.ƀho=e,this.ƀhz.trigger({value:0,index:this.ƀfy}),this.ƀo=this.ƀfy<this.ƀho?"transitionForward":"transitionBackward";}ƀfj(t){let e=1;(this.ƀo==="transitionBackward"||this.ƀo==="reverting"&&this.ƀfy!==void 0&&this.ƀho!==void 0&&this.ƀfy>this.ƀho)&&(e=-1),(this.ƀo==="idle"||t!==0)&&this.ƀhz.trigger({value:NumberHelper.ensurePositiveZero(-e*t),index:this.ƀfy}),this.ƀho!==void 0&&this.ƀhz.trigger({value:NumberHelper.ensurePositiveZero(e*(1-t)),index:this.ƀho});}};var ct;(function(n){n[n.Horizontal=1]="Horizontal",n[n.Vertical=2]="Vertical";})(ct||(ct={}));var ci=class extends d{static{h(this,"SlideInContentByIndex");}constructor(t,e){super(),this.ƀca=t,this.ƀcx="x",this.ƀbq=new Map,this.ƀic={duration:300,animation:b.easeInOutCubic,size:new Vector(500,500),margin:20,direction:ct.Horizontal,...e};let i=this.ƀic.direction===ct.Horizontal?new Vector(this.ƀic.size.x+this.ƀic.margin*2,this.ƀic.size.y):new Vector(this.ƀic.size.x,this.ƀic.size.y+this.ƀic.margin*2),s=new d().setPosition(this.ƀic.direction===ct.Horizontal?new Vector(-this.ƀic.margin,0):new Vector(0,-this.ƀic.margin),{round:false}).displayParent(this).attach(this);this.ƀcf(i,this.ƀic.margin,this.ƀic.direction,s),this.ƀcx=this.ƀic.direction===ct.Horizontal?"x":"y",this.ƀlj=new De({duration:this.ƀic.duration,animation:this.ƀic.animation}).onStateChange((r,o)=>{if(r===pt.Appear){let a=new d().displayParent(this).attach(this);this.ƀbq.set(o,a),this.ƀca({index:o,container:a});}else {let a=this.ƀbq.get(o);a&&(a.destroy(),this.ƀbq.delete(o));}}).onValueChange((r,o)=>{let a=this.ƀbq.get(o);if(a){let l={x:0,y:0};l[this.ƀcx]=i[this.ƀcx]*r+this.ƀic.margin,a.setPosition(Vector.fromVec2(l),{round:false});}}).attach(this),this.addChildTo=s;}setIndex(t,e){return this.ƀlj.setIndex(t,e),this}ƀcf(t,e,i,s){new Ot(s,new Vector(t.x,t.y),e,i).attach(this);}},tr=class extends ci{static{h(this,"SlideInContent");}constructor(t,e,i){super(s=>{let r=this.indexToItem.get(s.index);if(r)e({index:s.index,item:r,container:s.container});else throw new Error(`SlideInContent: The item with index '${s.index}' is not part of the items list`)},i),this.itemToIndex=new Map,this.indexToItem=new Map,t.forEach((s,r)=>{this.itemToIndex.set(s,r),this.indexToItem.set(r,s);});}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 oe=class{static{h(this,"VectorSet");}constructor(){this.ƀmk=new Map;}add(t){let e=this.ƀmk.get(t.x);e||(e=new Set,this.ƀmk.set(t.x,e)),e.add(t.y);}has(t){let e=this.ƀmk.get(t.x);return e?e.has(t.y):false}delete(t){let e=this.ƀmk.get(t.x);return e?e.delete(t.y):false}};var pi=class{static{h(this,"DeltaTime");}static adjustMultiplier(t,e){return Math.pow(t,e)}};var _=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 ne=class{static{h(this,"ClosestAvailableSpaceHelper");}static findByConvertingGridSpace(t,e,i){let s=new Vector(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),r=_.areaToGridArea(e,i);if(this.ƀax(t,r))return Vector.zero;let o=t.movePositionInsideGrid(r.topLeft),a=Vector.fromTo(r.topLeft,o),l=this.find(t,o,s);if(l){let c=l.add(a),p=Vector.fromTo(r.topLeft.multiplyNumber(i),e.topLeft);return new Vector(c.x*i+((s.x+1)*i-e.size.x)/2-p.x,c.y*i+((s.y+1)*i-e.size.y)/2-p.y)}}static find(t,e,i){let s=new oe,r=new Queue(e);for(;r.notEmpty;){let o=r.pop();s.add(o);let a=new Rectangle(o,o.add(i));if(this.ƀax(t,a))return Vector.fromTo(e,o);t.getNeighborPositions(o,"orthogonal").forEach(l=>{s.has(l)||r.add(l);});}}static ƀax(t,e){if(!t.isAreaWithinBounds(e))return false;for(let i=e.topLeft.y;i<=e.bottomRight.y;i++)for(let s=e.topLeft.x;s<=e.bottomRight.x;s++)if(!t.get(new Vector(s,i)))return false;return true}};var er=Math.SQRT2-1,_s=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}}},Vs=class{static{h(this,"PathfinderGrid");}constructor(t,e,i,s){this.ƀfd=t,this.ƀlr=i,this.ƀhn=s,this.ƀib=new BinaryHeap("min"),this.ƀhq=new Grid({size:t.size,defaultValue:void 0});let r=this.ƀcg(e);r.distanceFromStart=0,this.ƀib.add(r.pathLength,r),this.ƀaf=r;}get hasOpenNodes(){return this.ƀib.size>0}getNeighbors(t){let e=[];for(let i of this.ƀfd.getNeighborPositions(t.position,this.ƀhn))if(this.ƀfd.get(i)){let s=this.ƀhq.get(i)??this.ƀcg(i);s.closed||e.push(s);}return e}popLowestPathCostNode(){let t=this.ƀib.pop();return t.closed=true,t.distanceToEnd<this.ƀaf.distanceToEnd&&(this.ƀaf=t),t}changeNodeCost(t,e,i){t.distanceFromStart=e,t.parent=i,this.ƀib.updatePriority(t,t.pathLength)||this.ƀib.add(t.pathLength,t);}getBestClosedNode(){return this.ƀaf}ƀcg(t){let e=Math.abs(t.x-this.ƀlr.x),i=Math.abs(t.y-this.ƀlr.y),s=this.ƀhn==="orthogonal"?e+i:e>i?e+er*i:i+er*e,r=new _s(t,s);return this.ƀhq.isPointWithinBounds(t)&&this.ƀhq.set(t,r),r}},ae=class{static{h(this,"PathFinder");}static findPath(t,e,i,s){let r=new Vs(t,e,i,s);for(;r.hasOpenNodes;){let o=r.popLowestPathCostNode();if(o.position.isEqual(i))return o.createSolutionPath(true);for(let a of r.getNeighbors(o)){let l=o.distanceFromStart+o.getStepCost(a);l<a.distanceFromStart&&r.changeNodeCost(a,l,o);}}return r.getBestClosedNode().createSolutionPath(false)}};var Wt=[-1,0,0,1,-1,-1,1,1],$t=[0,-1,1,0,-1,1,-1,1],rr=[10,10,10,10,14,14,14,14],ui=Wt.map((n,t)=>new Vector(n,$t[t]).radian),he=class{static{h(this,"VectorFieldPathFinder");}constructor(t,e){this.ƀlq=t;let i=e.width,s=e.height,r=this.ƀel(e.size);this.ƀmt=i,this.ƀfm=s,this.ƀfn=r;let o=i*s,a=new Uint8Array(o),l=new Int32Array(o),c=e.snapshot();for(let x=0;x<s;x++){let M=c[x],L=x*i;for(let I=0;I<i;I++)M[I]?(a[L+I]=1,l[L+I]=r):l[L+I]=-1;}this.ƀz=a,this.ƀms=l,this.ƀcw=new Uint8Array(o),this.ƀcv=new Array(o);let p=[-1,-i,i,1,-i-1,i-1,-i+1,i+1],f=new Array(r),g=e.cropAreaOutsideOfTheGrid(t),v=[];for(let x=g.topLeft.y;x<=g.bottomRight.y;x++)for(let M=g.topLeft.x;M<=g.bottomRight.x;M++)l[x*i+M]=0,v.push(x*i+M);f[0]=v;for(let x=0;x<r;x++){let M=f[x];if(M){f[x]=void 0;for(let L=0;L<M.length;L++){let I=M[L];if(l[I]!==x)continue;let K=I%i;if(K>0&&K<i-1&&I>=i&&I<o-i){let _t=x+10,$=x+14;for(let H=0;H<8;H++){let j=I+p[H],at=H<4?_t:$;if(at<l[j]){l[j]=at;let Rt=f[at];Rt?Rt.push(j):f[at]=[j];}}}else {let _t=(I-K)/i;for(let $=0;$<8;$++){let H=K+Wt[$],j=_t+$t[$];if(H<0||j<0||H>=i||j>=s)continue;let at=j*i+H,Rt=x+rr[$];if(Rt<l[at]){l[at]=Rt;let Fi=f[Rt];Fi?Fi.push(at):f[Rt]=[at];}}}}}}for(let x=0;x<o;x++)l[x]===-1&&(l[x]=r);}getDirectionToTarget(t){if(t.isInsideRectangle(this.ƀlq))return;let e=this.ƀmt,i=Math.round(t.x),s=Math.round(t.y);i=Math.max(0,Math.min(e-1,i)),s=Math.max(0,Math.min(this.ƀfm-1,s));let r=s*e+i;if(this.ƀcw[r]===1)return this.ƀcv[r];let o=this.ƀaq(i,s,r);return this.ƀcw[r]=1,this.ƀcv[r]=o,o}ƀaq(t,e,i){let s=this.ƀmt,r=this.ƀfm,o=[];for(let a=0;a<8;a++){let l=t+Wt[a],c=e+$t[a];l>=0&&c>=0&&l<s&&c<r&&o.push(a);}if(this.ƀms[i]>=this.ƀfn){let a=o.filter(l=>this.ƀz[(e+$t[l])*s+t+Wt[l]]===1);if(a.length===0)return;if(a.length<o.length)return Radian.getAverage(...a.map(l=>ui[l]))}return this.ƀeb(t,e,o)}ƀeb(t,e,i){let s=this.ƀmt,r=[],o=this.ƀfn;for(let v=0;v<i.length;v++){let x=i[v],M=this.ƀms[(e+$t[x])*s+t+Wt[x]];if(M>=this.ƀfn)continue;let L=M+rr[x];L<o?(r.length=0,r.push(x),o=L):L===o&&r.push(x);}if(r.length===0)return;let a=0,l=0;for(let v=0;v<r.length;v++)a+=Wt[r[v]],l+=$t[r[v]];if(a===0&&l===0)return ui[Random.pickRandomElement(r)];let c=1/Math.sqrt(a*a+l*l),p=t+Math.round(a*c),f=e+Math.round(l*c);return p>=0&&f>=0&&p<s&&f<this.ƀfm&&this.ƀz[f*s+p]===1?new Vector(a,l).radian:ui[Random.pickRandomElement(r)]}get t(){let t=[];for(let e=0;e<this.ƀfm;e++){let i=new Array(this.ƀmt);for(let s=0;s<this.ƀmt;s++)i[s]=this.ƀms[e*this.ƀmt+s];t.push(i);}return new Grid(t)}ƀel(t){return (t.x+t.y)*20}};var R=class n{static{h(this,"AudioAssets");}static{this.ƀao=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.ƀao.set(e.id,i))));}static createSource(t){let e=n.ƀea(t),i=n.context.createBufferSource();return i.buffer=e,i}static ƀea(t){let e=this.ƀao.get(t);if(!e)throw new Error(`Audio: Sound with id ${t} was not loaded.`);return e}};T.onHardReset.subscribe(()=>{R.context=new AudioContext,R.ƀao.clear();}).attachToRoot();var rt=1e3,it=class n{static{h(this,"Audio");}static ƀkk(){return this.ƀgb=new n,this.ƀgb}constructor(){this.ƀgz=R.context.createGain(),this.ƀgy=R.context.createGain(),this.ƀhm=R.context.createGain(),this.ƀkv=R.context.createGain(),this.ƀgz.connect(R.context.destination),this.ƀgy.connect(this.ƀgz),this.ƀhm.connect(this.ƀgy),this.ƀkv.connect(this.ƀgy),this.ƀha=new O(this.ƀgz.gain,"value",{duration:500*2,animation:b.easeIn,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀha.set({value:0});}setVolumes(t){this.ƀgy.gain.value=t.master,this.ƀhm.gain.value=t.music,this.ƀkv.gain.value=t.sound;}appear(t,e="ease"){switch(e){case "ease":return this.ƀha.set({value:t?0:1}),this.ƀha.animate({value:t?1:0}).chainToRoot();case "instant":return this.ƀha.set({value:t?1:0}),SingleEvent.instant();default:{throw new Error}}}};T.onHardReset.subscribe(()=>{it.ƀkk();}).attachToRoot();var Hs=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},yt=class extends ht(){static{h(this,"CameraGateway");}};yt=Hs([u()],yt);var js=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Bt=class extends ht(){static{h(this,"CameraViewGateway");}};Bt=js([u()],Bt);var or;(function(n){n.BackgroundScreen="backgroundScreen",n.Background="background",n.Main="main",n.Foreground="foreground",n.ForegroundScreen="foregroundScreen";})(or||(or={}));var gt;(function(n){n[n.Instant=1]="Instant",n[n.EaseInOut=2]="EaseInOut",n[n.EaseOut=3]="EaseOut";})(gt||(gt={}));var le=class{static{h(this,"Camera");}get position(){return this.ƀas.getCameraPosition()}constructor(){this.ƀas=E.get(yt),this.ƀaw=E.get(Bt),this.ƀas.createCamera(),this.layers=this.ƀaw.getLayers();}setPosition(t){this.ƀas.setPosition(t);}setTransition(t){this.ƀas.setTransition(t);}appear(t,e="alpha",i=0){return this.ƀaw.appear(t,e,i)}screenPositonToStagePosition(t){return this.ƀaw.screenPositonToStagePosition(t)}};var y=class n{static{h(this,"Game");}static get instance(){return this.ƀgb}static{this.pause=Reducer.createOr();}static{this.freeze=Reducer.createOr();}static get camera(){return this.ƀar}static get audio(){return this.ƀy}static appear(t,e){let i=e?.audio??"ease",s=e?.camera??"alpha";return ActionLib.all([this.audio.appear(t,i),this.camera.appear(t,s,i!=="instant"?0:500)]).mapToVoid().chainToRoot()}static get time(){return w.ƀly}static get setupOptions(){return this.ƀko}constructor(t){if(this.ƀjz=new Variable(Vector.zero),this.screenSize=this.ƀjz.notifier,this.ƀka=new Variable(Vector.zero),this.screenSizeCenter=this.ƀka.notifier,this.devMode=false,n.ƀgb)throw new Error("There can be only one Game instance!");this.ƀbm={screenResolution:void 0,maxScreenResolution:void 0,devMode:false,backgroundColor:ColorHelper.black,antialias:false,resolution:1,...t},this.devMode=this.ƀbm.devMode||false,this.ƀiu=new W.Application;let e=n.pause.effect(false).attachToRoot();n.freeze.subscribe(i=>{e.update(i),i?R.context.suspend():R.context.resume();}).attachToRoot();}async setup(t){n.ƀko=t;let e=JsonHelper.removeUndefinedProperties({backgroundColor:ColorHelper.rgbToHex(this.ƀbm.backgroundColor),autoStart:false,antialias:this.ƀbm.antialias,resolution:this.ƀbm.resolution,width:this.ƀbm.screenResolution?.width,height:this.ƀbm.screenResolution?.height,useBackBuffer:true,powerPreference:"high-performance",eventFeatures:{globalMove:false}});await this.ƀiu.init(e);let i=document.body.appendChild(this.ƀiu.canvas);this.ƀkj(i),await Promise.all([G.loadGameAssets(t.spriteAssetDefinitions),G.loadGameAssets(t.fontAssetDefinitions),R.load(t.soundAssetDefinitions)]),n.ƀgb=this,this.renderer=this.ƀiu.renderer,globalThis.ƀa=this.ƀiu,this.ƀfh(),n.ƀar=new le,n.ƀy=it.ƀkk(),this.ƀiu.start(),this.ƀiu.ticker.add(()=>{n.freeze.value||w.triggerUpdateTick(this.ƀiu.ticker.deltaMS);}),this.devMode&&await this.renderer.layout.enableDebug(true);}generateTexture(t){let e=this.renderer.layout,i=e.autoUpdate;e.autoUpdate=false;let s=this.renderer.generateTexture(t);return e.autoUpdate=i,s}setResolution(t){if(this.ƀiu.renderer.resolution!==t){this.ƀiu.renderer.resolution=t;let e=this.ƀew();this.ƀiu.renderer.resize(e.x,e.y);}}ƀfh(){this.ƀdg(),this.ƀki(),window.addEventListener("resize",t=>{this.ƀdg(),this.ƀki();});}ƀdg(){let t=this.ƀew();(t.x!==this.ƀiu.screen.width||t.y!==this.ƀiu.screen.height)&&this.ƀiu.renderer.resize(t.x,t.y);}ƀki(){let t=new Vector(this.ƀiu.screen.width,this.ƀiu.screen.height);this.ƀjz.value=t,this.ƀka.value=t.multiplyNumber(.5).round();}ƀew(){let t=this.ƀbm.screenResolution?.width??window.innerWidth,e=this.ƀbm.screenResolution?.height??window.innerHeight;return this.ƀbm.maxScreenResolution&&(t=Math.min(t,this.ƀbm.maxScreenResolution.width),e=Math.min(e,this.ƀbm.maxScreenResolution.height)),new Vector(t,e)}ƀkj(t){this.ƀbm.maxScreenResolution&&(t.style.maxWidth=`${this.ƀbm.maxScreenResolution?.width}px`,t.style.maxHeight=`${this.ƀbm.maxScreenResolution?.height}px`),t.style.width="100%",t.style.height="100%",t.style.backgroundColor=ColorHelper.rgbColorToString(this.ƀbm.backgroundColor);}};var lr=class{static{h(this,"ElectronGame");}static async start(t,e){let{devMode:i,maxScreenResolution:s}=await window.api.getOptions(),r=new y({...t,devMode:i,maxScreenResolution:s});await r.setup(e);let o=y.pause.effect(false).attachToRoot();window.api.onWindowFocus(l=>{o.update(!l);});let a=y.freeze.effect(false).attachToRoot();return document.addEventListener("visibilitychange",()=>{a.update(document.hidden);}),window.api.rendererReady(),window.api.setFullScreen(false),r}};var ce=class n extends IDAttachable{static{h(this,"Sound");}static createByName(t,e){let i=y.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.ƀdw.gain.value}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀdw.gain.value=t,this}constructor(t,e){super(),this.ƀkw=t,this.ƀdw=R.context.createGain(),this.ƀdw.connect(it.ƀgb.ƀkv),this.ƀfl=this.ƀdw,e?.volume!==void 0&&(this.volume=e.volume),this.ƀjb(e?.time??0);}destroy(){this.destroyed||(super.destroy(),this.ƀll(),this.ƀdw?.disconnect());}ƀmi(){this.ƀfl.disconnect(),this.ƀfl.connect(it.ƀgb.ƀhm);}ƀjb(t){this.ƀll();let e=this.ƀkw.loop;if(this.ƀlf=NumberHelper.clamp(t,0,e?e.to:this.ƀkw.duration),e){let i=e.from,s=e.to;this.ƀjc({soundID:this.ƀkw.id,start:this.ƀlf,end:this.ƀlf<i?i:s,loop:false,onComplete:h(()=>{this.ƀkz.disconnect(),this.ƀjc({soundID:this.ƀkw.id,start:i,end:s,loop:true});},"onComplete")});}else this.ƀjc({soundID:this.ƀkw.id,start:this.ƀlf,end:void 0,loop:false,onComplete:h(()=>this.destroy(),"onComplete")});}ƀll(){this.ƀkz&&(this.ƀkz.onended=null,this.ƀkz.stop(),this.ƀkz.disconnect());}ƀjc(t){this.ƀkz=R.createSource(t.soundID),this.ƀkz.connect(this.ƀdw),t.onComplete&&(this.ƀkz.onended=t.onComplete),t.loop?(this.ƀkz.loop=true,this.ƀkz.loopStart=t.start,this.ƀkz.loopEnd=t.end??this.ƀkz.buffer.duration,this.ƀkz.start(0,t.start)):this.ƀkz.start(0,t.start,t.end?t.end-t.start:void 0);}};var Js=800,_e=-128,wt=class n extends ce{static{h(this,"AdvancedSound");}static createByName(t,e){let i=y.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.ƀly=new Variable(0),this.time=this.ƀly.notifier,this.ƀlh=R.context.currentTime-this.ƀlf,this.ƀly.value=this.ƀlf,w.beforeSceneUpdateAction.subscribe(()=>{this.ƀly.value=R.context.currentTime-this.ƀlh;}).attach(this),this.ƀfl.disconnect(),this.ƀkl(e?.fade?NumberHelper.clamp(e.fade,0,1):0),this.ƀkn(e?.muffle?NumberHelper.clamp(e.muffle,0,1):0),this.ƀfl.connect(it.ƀgb.ƀkv);}ƀkl(t=0){this.ƀdo=R.context.createGain(),this.ƀdo.gain.value=1-t,this.ƀdn=new O(this.ƀdo.gain,"value",{duration:500,animation:b.lineer,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀfl.connect(this.ƀdo),this.ƀfl=this.ƀdo;}ƀkn(t=0){this.ƀhk=R.context.createBiquadFilter(),this.ƀhk.type="highshelf",this.ƀhk.frequency.value=Js,this.ƀhk.gain.value=t*_e,this.ƀhl=new O(this.ƀhk.gain,"value",{duration:500,animation:b.lineer,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀfl.connect(this.ƀhk),this.ƀfl=this.ƀhk;}close(){return this.ƀbd?this.onDestroy():(this.ƀbd=true,this.fade(1,rt).notIdle().chain(this).tap(()=>this.destroy()).chainToRoot())}notifyOnTime(t){return this.time.value>t?SingleEvent.createDestroyed():SingleEvent.create(e=>{let i=this.time.filter(s=>s>=t).tap(()=>e()).attach(this);return ()=>i.destroy()})}setFade(t){t=NumberHelper.clamp(t,0,1),this.ƀdn.set({value:1-t});}fade(t,e=500){t=NumberHelper.clamp(t,0,1);let i=t>1-this.ƀdo.gain.value;return e===0?(this.ƀdn.set({value:1-t}),SingleEvent.instant()):this.ƀdn.animate({value:1-t},{duration:e,animation:i?b.easeOut:b.easeIn}).chain(this)}setMuffle(t){t=NumberHelper.clamp(t,0,1),this.ƀhl.set({value:t*_e});}muffle(t,e=500){return t=NumberHelper.clamp(t,0,1),e===0?(this.ƀhl.set({value:t*_e}),SingleEvent.instant()):this.ƀhl.animate({value:t*_e},{duration:e}).chain(this)}destroy(){this.destroyed||(this.ƀdo.disconnect(),this.ƀhk.disconnect()),super.destroy();}};var pe=class n extends IDAttachable{static{h(this,"Music");}static createByName(t,e){let i=y.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.ƀky.value.type){case "paused":return this.ƀky.value.value.time;case "playing":return this.ƀky.value.value.time.value;default:{this.ƀky.value;throw new Error}}}get volume(){return this.ƀky.value.value.volume}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀky.value.value.volume=t,this}constructor(t,e){super(),this.ƀic={stopPlayingOnPause:true,...e},this.ƀkx=t.id;let i;if(this.ƀic.stopPlayingOnPause&&y.pause.value)i={type:"paused",value:{time:0,volume:1}};else {let s=new wt(t,this.ƀic).attach(this);s.ƀmi(),i={type:"playing",value:s};}this.ƀky=new Variable(i),this.ƀic.stopPlayingOnPause&&(this.ƀih=y.pause.subscribe(s=>this.ƀfg(s)).attach(this));}notifyOnTime(t){return SingleEvent.create(e=>{let i=this.ƀky.asyncDropOngoing((s,r)=>{switch(s.type){case "paused":r.drop();break;case "playing":return s.value.notifyOnTime(t);default:{throw new Error}}}).toSingleEvent().tap(()=>e()).attach(this);return ()=>i.destroy()})}close(){return this.ƀbd?this.onDestroy():(this.ƀbd=true,this.ƀih?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀky.value.type==="playing"?this.ƀky.value.value.close():SingleEvent.instant(),this.ƀdp?.onDestroy()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀfg(t){if(t){if(this.ƀky.value.type==="playing"){let e=this.ƀky.value.value;this.ƀky.value={type:"paused",value:{time:e.time.value,volume:e.volume}},this.ƀdp=e,ActionLib.all([e.fade(1,rt),e.muffle(1,rt)]).tap(()=>{this.ƀdp=void 0,e.destroy();}).attach(this);}}else if(this.ƀky.value.type==="paused"){let{volume:e,time:i}=this.ƀky.value.value,s=wt.createByName(this.ƀkx,{volume:e,time:i,fade:1,muffle:1}).attach(this);s.ƀmi(),ActionLib.all([s.fade(0,rt),s.muffle(0,rt)]).attach(this),this.ƀky.value={type:"playing",value:s};}}};var mi=class extends IDAttachable{static{h(this,"MusicPlayer");}get time(){return this.ƀjd?this.ƀjd.time:0}get volume(){return this.ƀmr}set volume(t){this.setVolume(t);}setVolume(t){return this.ƀmr=t,this.ƀjd&&(this.ƀjd.volume=t),this.ƀig&&(this.ƀig.volume=t),this}constructor(t){super(),this.ƀmr=1,this.ƀic={stopPlayingOnPause:true,playWhenPaused:void 0,volume:1,...t},this.ƀmr=this.ƀic.volume,this.ƀic.playWhenPaused&&this.ƀkp(this.ƀic.playWhenPaused);}play(t){if(this.ƀbd)throw new Error("Play is called while music player is destroyed.");return this.ƀcq=t,SingleEvent.instant().async(()=>{let e=this.ƀjd;if(e)return this.ƀjd=void 0,e.close()}).map(()=>{if(this.ƀcq===t)return this.ƀjd=pe.createByName(t,{stopPlayingOnPause:this.ƀic.stopPlayingOnPause,volume:this.ƀmr}).attach(this),this.ƀjd}).chain(this)}stop(){return SingleEvent.instant().async(()=>{let t=this.ƀjd;if(t)return t.close().tap(()=>{t===this.ƀjd&&(this.ƀjd=void 0);})}).chain(this)}close(){return this.ƀbd?this.onDestroy():(this.ƀbd=true,this.ƀih?.destroy(),SingleEvent.instant().async(()=>ActionLib.all([this.ƀjd?.close()??SingleEvent.instant(),this.ƀig?.close()??SingleEvent.instant()]),"tap").chain(this).tap(()=>this.destroy()).chainToRoot())}ƀkp(t){this.ƀih=y.pause.toSequence().asyncDropOngoing(e=>e&&w.wait(rt).map(()=>e)).tap(e=>{if(e)this.ƀig=wt.createByName(t,{fade:1,volume:this.ƀmr}).attach(this),this.ƀig.ƀmi(),this.ƀig.fade(0);else if(this.ƀig){let i=this.ƀig;this.ƀig.fade(1).tap(()=>i.destroy()).attach(this),this.ƀig=void 0;}}).attach(this);}};var yi=class extends d{static{h(this,"Placeholder");}constructor(t){super(),this.ƀiy=new W.Graphics,this.ƀiy.rect(0,0,t.x,t.y).fill({color:0,alpha:1e-9}),this.ƀiv.addChild(this.ƀiy);}destroy(){this.destroyed||(super.destroy(),this.ƀiy.destroy());}};var zt=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,s={};if(i){let r={blur:4,angle:Radian.get60,distance:10,color:ColorHelper.black,alpha:.5,...i};s={dropShadow:{blur:r.blur,angle:r.angle.value,distance:r.distance,color:ColorHelper.rgbToHex(r.color),alpha:r.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,...s})}};var Ne=class{static{h(this,"RichTextDataInConverter");}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),s=RichTextSeparator.process(t,i),r=this.ƀfx(s,e),o=this.ƀs(r);return this.ƀla(o)}static ƀfx(t,e){let i=new Map,s=new Map,r=h((a,l)=>{if(s.has(l))return s.get(l);let c=zt.getPixiTextStyle(a);return s.set(l,c),c},"GetPixiStyle");return t.map(a=>{let{style:l,cacheKey:c}=this.ƀee(a.tags,e,i),p=r(l,c),f=W.CanvasTextMetrics.measureText(" ",new W.TextStyle(p),void 0,false);return {text:a.text,cacheKey:c,style:l,pixiStyle:p,spaceWidth:f.width}})}static ƀee(t,e,i){let s=t.join("+");if(i.has(s))return {style:i.get(s),cacheKey:s};let r=this.ƀbh(t,e);return i.set(s,r),{style:r,cacheKey:s}}static ƀbh(t,e){let i={...e.default};for(let l of t)e.styles&&e.styles[l]&&(i={...i,...e.styles[l]});let{wordWrapWidth:s,align:r,dropShadow:o,...a}=i;return a}static ƀs(t){let e=[],i=[];return t.forEach((s,r)=>{s.text.split(/\r?\n/).forEach((a,l)=>{l>0&&(e.push(i),i=[]),i.push({text:a,cacheKey:s.cacheKey,style:s.style,pixiStyle:s.pixiStyle,spaceWidth:s.spaceWidth});});}),e.push(i),e}static ƀla(t){let e=[];return t.forEach(i=>{if(i.length===0)throw new Error("Internal Error: Line is unexpectedly empty");let s=i.flatMap(r=>this.ƀlb(r.text).map(a=>{let l=new W.TextStyle(r.pixiStyle),c=W.CanvasTextMetrics.measureText(a,l,void 0,false);return {text:a,whitespace:a.trim()==="",style:{cacheKey:r.cacheKey,style:r.style,pixiStyle:l,height:c.height,ascent:c.fontProperties.ascent,descent:c.fontProperties.descent,width:c.width,spaceWidth:r.spaceWidth}}}));e.push(s);}),e}static ƀlb(t){if(t==="")return [""];let e=[],i="",s=t[0]===" ";for(let r=0;r<t.length;r++){let o=t[r],a=o===" ";a===s?i+=o:(e.push(i),i=o,s=a);}return i&&e.push(i),e}};var Le=class{static{h(this,"RichTextTypewriter");}get lineIsEmpty(){return this.ƀco.length===0}get remainingWidth(){return this.ƀmu-this.ƀcr}constructor(t,e){this.ƀmu=t,this.ƀgo=[],this.ƀco=[],this.ƀcr=0,this.ƀgn=new Vector(0,0),this.ƀcp=0;let i={rectangleCutOption:void 0,horizontalAlignment:"left",verticalAlignment:"bottom",...e};if(this.ƀfp=i.horizontalAlignment,this.ƀml=i.verticalAlignment,i.rectangleCutOption){if(i.rectangleCutOption.position.x<0||i.rectangleCutOption.position.x>=this.ƀmu||i.rectangleCutOption.position.y<0)throw new Error("Rectangle cut position is out of bounds");this.ƀcs={direction:i.rectangleCutOption.direction,rectangle:this.ƀbu(i.rectangleCutOption)};}}isSpaceAvailable(t){let e=Math.max(this.ƀcp,t.y),i=this.ƀen(this.ƀgn.y,this.ƀgn.y+e);return this.ƀcr+t.x<=i}insertWord(t){let e=Math.max(this.ƀcp,t.style.height);if(this.ƀco.length===0){let i=this.ƀeo(this.ƀgn.y,this.ƀgn.y+e);this.ƀgn=new Vector(i,this.ƀgn.y),this.ƀcr=this.ƀgn.x;}this.ƀco.push({chunk:t,position:new Vector(this.ƀcr,this.ƀgn.y)}),this.ƀcp=e,this.ƀcr+=t.style.width;}newLine(){let t=this.ƀgn.y+this.ƀcp,e=this.ƀeo(t,t);this.ƀds(),this.ƀgn=new Vector(e,t),this.ƀcr=this.ƀgn.x,this.ƀcp=0;}print(){return this.ƀds(),this.ƀgo}ƀds(){this.ƀco.length>0&&(this.ƀgo.push(this.ƀg(this.ƀco)),this.ƀco=[]);}ƀg(t){return t=this.ƀmn(t),t=this.ƀfr(t),t}ƀfr(t){if(this.ƀfp==="left")return t;let e=this.ƀgn.y+this.ƀcp,i=this.ƀeo(this.ƀgn.y,e),r=this.ƀen(this.ƀgn.y,e)-i,o=Math.min(r,t.reduce((l,c)=>l+c.chunk.style.width,0)),a;return this.ƀfp==="center"?a=(r-o)/2:a=r-o,t.map(l=>(l={chunk:l.chunk,position:new Vector(l.position.x+a,l.position.y)},l))}ƀmn(t){let e=Math.max(...t.map(s=>s.chunk.style.ascent)),i=Math.max(...t.map(s=>s.chunk.style.descent));return t.map(s=>{let r;switch(this.ƀml){case "top":r=i-s.chunk.style.descent;break;case "center":r=(i-s.chunk.style.descent+e-s.chunk.style.ascent)*.5;break;case "bottom":r=e-s.chunk.style.ascent;break;default:{this.ƀml;throw new Error}}return s={chunk:s.chunk,position:new Vector(s.position.x,s.position.y+r)},s})}ƀeo(t,e){return this.ƀcs&&(this.ƀcs.direction==="topLeft"||this.ƀcs.direction==="bottomLeft")&&(this.ƀcs.rectangle.isPointInside(new Vector(0,t),{includeEdges:false})||this.ƀcs.rectangle.isPointInside(new Vector(0,e),{includeEdges:false}))?this.ƀcs.rectangle.bottomRight.x:0}ƀen(t,e){return this.ƀcs&&(this.ƀcs.direction==="topRight"||this.ƀcs.direction==="bottomRight")&&(this.ƀcs.rectangle.isPointInside(new Vector(this.ƀmu,t),{includeEdges:false})||this.ƀcs.rectangle.isPointInside(new Vector(this.ƀmu,e),{includeEdges:false}))?this.ƀcs.rectangle.topLeft.x:this.ƀmu}ƀbu(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 He=class{static{h(this,"ConsistentSpaceTextWrapper");}static wrapText(t,e){return t.forEach(i=>{i.forEach((s,r)=>{if(e.isSpaceAvailable(new Vector(s.style.width,s.style.height)))if(s.whitespace&&r===i.length-2){let o=i[i.length-1];e.isSpaceAvailable(new Vector(o.style.width+s.style.width,o.style.height))?e.insertWord(s):this.ƀmv(s,e);}else e.insertWord(s);else e.lineIsEmpty?e.insertWord(s):s.whitespace?this.ƀmv(s,e):(e.newLine(),e.insertWord(s));}),e.newLine();}),e.print()}static ƀmv(t,e){let i=Math.max(0,Math.floor(e.remainingWidth/t.style.spaceWidth)),s=Math.max(0,Math.min(i,t.text.length-1));if(s>0){let o={text:" ".repeat(s),whitespace:true,style:{...t.style,width:s*t.style.spaceWidth}};e.insertWord(o);}e.newLine();let r=t.text.length-s-1;if(r>0){let o={text:" ".repeat(r),whitespace:true,style:{...t.style,width:r*t.style.spaceWidth}};e.insertWord(o);}}};var je=class{static{h(this,"RichTextDataOutConverter");}static process(t){return t=this.ƀhe(t),t=this.ƀmc(t),this.ƀaz(t)}static ƀhe(t){return t.map(e=>{let i=[],s,r=true;return e.forEach(o=>{if(!s||s.chunk.style.cacheKey!==o.chunk.style.cacheKey)s&&i.push(s),s=o,r=o.chunk.whitespace;else {let a=s.chunk.text+o.chunk.text;r=o.chunk.whitespace&&r,s={chunk:{text:a,whitespace:r,style:{...s.chunk.style,width:s.chunk.style.width+o.chunk.style.width}},position:s.position};}}),s&&i.push(s),i})}static ƀmc(t){return t.map(e=>{if(e.length===0)return [];let i=e.pop();if(!i.chunk.whitespace||i.chunk.text===""){let s=i.chunk.text.length,r=i.chunk.text.trimEnd();s!==r.length?e.push({chunk:{text:r,whitespace:false,style:{...i.chunk.style,width:i.chunk.style.width-(s-r.length)*i.chunk.style.spaceWidth}},position:i.position}):e.push(i);}return e})}static ƀaz(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 fe=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=Ne.process(t,e),s=JsonHelper.removeUndefinedProperties({rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),r=new Le(e.default.wordWrapWidth??1/0,s),o=He.wrapText(i,r);return je.process(o)}};var oo=1,ur=1/oo,de=class extends d{static{h(this,"Text");}get ƀlv(){if(!this.ƀlw){let t=new W.TextStyle(this.ƀja);this.ƀlw=W.CanvasTextMetrics.measureText(this.ƀlu,t);}return this.ƀlw}get ascent(){return this.ƀlv.fontProperties.ascent}constructor(t,e){super(),this.ƀja=zt.getPixiTextStyle(e),this.setText(t);}destroy(){this.destroyed||(super.destroy(),!this.ƀiz.destroyed&&this.ƀiz.destroy());}setAnchor(t){return this.anchor=t,this}get anchor(){return new Vector(this.ƀiz.anchor.x,this.ƀiz.anchor.y)}set anchor(t){this.ƀi=t,this.ƀiz.anchor.set(t.x,t.y),this.ƀjq();}setText(t){return this.ƀlu!==t&&(this.ƀlu=t,this.ƀjm()),this}setColor(t){let e=ColorHelper.rgbToHex(t);return this.ƀja.fill!==e&&(this.ƀja.fill=e,this.ƀjm()),this}ƀjm(){this.ƀiz?.destroy(),this.ƀlo?.destroy(),this.ƀlo=void 0,this.ƀlw=void 0;let t=new W.TextStyle(this.ƀja);this.ƀiz=new W.Text({text:this.ƀlu,style:t}),this.ƀi&&this.ƀiz.anchor.set(this.ƀi.x,this.ƀi.y),this.ƀjq(),this.ƀiz.scale.set(ur,ur),this.ƀiv.addChild(this.ƀiz),this.ƀja.lineThrough&&(this.ƀlo=this.ƀe(this.ƀiz,this.ƀja.fill),this.ƀiv.addChild(this.ƀlo));}ƀjq(){let t=W.CanvasTextMetrics.measureText(this.ƀlu,new W.TextStyle({...this.ƀja,dropShadow:false})),e=-this.ƀiz.anchor.x*t.width,i=-this.ƀiz.anchor.y*t.height;this.ƀiz.boundsArea=new W.Rectangle(e,i,t.width,t.height);}ƀe(t,e){let i=W.CanvasTextMetrics.measureText(t.text,t.style),s=Math.max(1,Math.round(i.lineHeight*.07)),r=s%2*.5,o=new W.Graphics,a=0;return i.lines.forEach((l,c)=>{let p=W.CanvasTextMetrics.measureText(l,t.style),f=Math.round(a+(p.fontProperties.ascent-p.fontProperties.descent)*.6+p.fontProperties.descent)+r,g=0;t.style.align==="center"?g=0+(t.width-p.width)*.5:t.style.align==="right"&&(g=0+t.width-p.width),g=Math.floor(g),o.moveTo(Math.floor(g),f),o.lineTo(Math.floor(g+p.width),f),a+=p.lineHeight;}),o.stroke({width:s,color:e}),o}};var gi=class extends d{static{h(this,"RichText");}constructor(t,e){super(),fe.process(t,e).forEach(s=>new de(s.text,s.style).setPosition(s.position).displayParent(this).attach(this));}};var wi=class extends d{static{h(this,"UpdatableContainer");}},xi=class extends d{static{h(this,"DisplayObjectArray");}constructor(t,e){super(),this.ƀca=t,this.ƀcy=new Map,this.ƀic={trackBy:h((i,s)=>s,"trackBy"),positioning:{direction:"vertical",spacing:0},...e};}set(t){let e=new Set(this.ƀcy.keys()),i=0;t.forEach((s,r)=>{let o=this.ƀic.trackBy(s,r),a;this.ƀcy.has(o)?(a=this.ƀcy.get(o),e.delete(o),a.update(s)):(a=this.ƀca(s).displayParent(this).attach(this),this.ƀcy.set(o,a)),this.ƀic.positioning.direction==="horizontal"?(a.x=i,i+=a.size.x+this.ƀic.positioning.spacing):(a.y=i,i+=a.size.y+this.ƀic.positioning.spacing);}),e.forEach(s=>{this.ƀcy.get(s).destroy(),this.ƀcy.delete(s);});}};var me=class n extends d{static{h(this,"MenuUI");}static{this.ƀgd=Reducer.createExistenceChecker();}static{this.isAnyMenuTransitioning=this.ƀgd.notifier;}constructor(t,e){super(),this.ƀhu=new SingleAction,this.onCreate=this.ƀhu.notifier,this.ƀhw=new SingleAction,this.onOpen=this.ƀhw.notifier,this.ƀhr=new SingleAction,this.onClose=this.ƀhr.notifier,this.ƀbd=false;let i={closeOnBackgroundClick:true,appearAnimationDuration:150,backgroundDarkeningRatio:.3,...e};this.setAlpha(0),this.ƀp=new O(this,"alpha",{animation:b.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState});let s=A.createRectangle(new Vector(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(i.backgroundDarkeningRatio).setInteractive(true).displayParent(this).attach(this);this.ƀhc=et.createByName(t).setPosition(new Vector(0,0)).setInteractive(true).displayParent(this).attach(this),y.instance.screenSize.subscribe(o=>{s.aspectRatio=o.x/o.y,s.scale=Math.max(o.x,o.y),s.setPosition(Vector.zero,{holdFrom:Vector.half}),this.setPosition(o.multiplyNumber(.5));}).attach(this),this.ƀhu.resolve();let r=n.ƀgd.effect().attach(this);this.ƀp.animate({alpha:1}).chain(this).tap(()=>{this.ƀhw.resolve(),r.destroy(),i.closeOnBackgroundClick&&s.on(Ht.Click).take(1).tap(()=>this.close()).attach(this);}).attachToRoot();}getBoundingMask(){return this.ƀhc.getBoundingMask()}close(){if(!this.ƀbd){this.ƀbd=true;let t=n.ƀgd.effect().attach(this);this.ƀp.animate({alpha:0}).chain(this).map(()=>{this.ƀhr.resolve(),t.destroy(),this.destroy();}).chainToRoot();}return this.onClose.toSingleEvent()}};var bi=class extends dt{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.ƀic=t,queueMicrotask(()=>{if(!this.ƀhd)throw new Error("MenuEntity: MenuEntity has to have a MenuView.")});}ƀjo(t){this.ƀhd=t,this.ƀhd.onClose.subscribe(()=>this.destroy()).attach(this);}onCreate(){return this.ƀhd.onCreate.toSingleEvent()}onOpen(){return this.ƀhd.onOpen.toSingleEvent()}onClose(){return this.ƀhd.onClose.toSingleEvent()}close(){return this.ƀhd.close()}};var Pi=class extends Z{static{h(this,"MenuView");}constructor(t,e,i){super();let s=JsonHelper.removeUndefinedProperties({appearAnimationDuration:i.appearAnimationDuration,backgroundDarkeningRatio:i.backgroundDarkeningRatio,closeOnBackgroundClick:t.ƀic.closeOnBackgroundClick}),r=new me(e,s).displayParent(y.camera.layers.foregroundScreen).attach(this);t.ƀjo(r);let o=new SingleAction;r.onCreate.subscribe(()=>o.resolve(r)).attach(this),this.onCreate=o.notifier,this.onOpen=r.onOpen.notifier,this.onClose=r.onClose.notifier;}};var fo=.65,mo=.01,We=class{static{h(this,"SmoothScroller");}get scrollHeight(){return this.ƀkb}get contentSize(){return this.ƀbo.size.ceil()}constructor(t,e,i,s){this.ƀbo=t,this.ƀw=e,this.ƀie=i,this.ƀku=s,this.ƀga=false,this.ƀkb=e-i*2,this.ƀbo.y=i,this.ƀlp=i;}onWheel(t){this.setTarget(this.ƀlp-t*fo);}scrollToTop(){this.setTarget(1/0);}scrollToBottom(){this.setTarget(-1/0);}setTarget(t){this.ƀlp=NumberHelper.clamp(t,this.ƀw-this.ƀie-this.contentSize.y,this.ƀie);}jumpToTarget(){this.ƀbo.y=this.ƀlp;}update(t){let e=this.contentSize;if(e.y<=this.ƀkb){switch(this.ƀku){case "start":this.ƀlp=this.ƀie;break;case "center":this.ƀlp=(this.ƀw-e.y)*.5;break;case "end":this.ƀlp=this.ƀw-e.y-this.ƀie;break;default:{this.ƀku;throw new Error}}this.ƀga||(this.ƀbo.y=this.ƀlp);}this.ƀga=true;let i=this.ƀlp-this.ƀbo.y;this.ƀbo.y=this.ƀbo.y+i*mo*t;}};var go=15,Si=class extends d{static{h(this,"ScrollAreaUI");}get contentAreaSize(){return this.ƀbp}get contentSize(){return this.ƀkc.contentSize}constructor(t,e={}){super();let i={padding:go,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 s=new d().displayParent(this).attach(this);new Ot(s,t,i.padding).attach(this);let r=new W.Graphics;r.rect(0,0,t.x,t.y).fill({color:0,alpha:1e-9}),s.ƀiv.addChild(r);let o=new d().displayParent(s).attach(this);this.ƀkc=new We(o,t.y,i.padding,i.smallContentAlign),this.ƀbp=new Vector(t.x,this.ƀkc.scrollHeight),r.eventMode="dynamic",r.addEventListener("wheel",a=>{this.ƀkc.onWheel(a.deltaY);}),o.setInteractive(true),o.ƀiv.addEventListener("wheel",a=>{this.ƀkc.onWheel(a.deltaY);}),w.afterSceneUpdateAction.subscribe(a=>this.ƀkc.update(a.delta)).attach(this),this.addChildTo=o;}scrollToTop(t){this.ƀkc.scrollToTop(),t?.instant&&this.ƀkc.jumpToTarget();}scrollToBottom(t){this.ƀkc.scrollToBottom(),t?.instant&&this.ƀkc.jumpToTarget();}};var Ti=class extends d{static{h(this,"LayoutContainer");}constructor(t={}){super(new LayoutContainer),this.ƀiv.layout={isLeaf:false,...t};}setLayout(t){return this.ƀiv.layout=t,this}debug(){return this.ƀiv.layout={debug:true},this}debugBackground(){return this.ƀiv.layout={backgroundColor:"#3080FF"},this}};var xo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},N=class extends dt{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);}};N=xo([It()],N);var vo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},bo=1500,ke=class{static{h(this,"CameraService");}createCamera(){return new N().attachToRoot()}getCameraPosition(){let t=N.getInstanceOrFail();return Vector.fromTo(t.offset.value,t.position.value)}setPosition(t){let e=N.getInstanceOrFail();e.targetPosition.value=t;}setTransition(t){let e=N.getInstanceOrFail();e.focusingNewTargetInfo.value={time:y.time,duration:t?.duration??bo,position:e.position.value,roundPosition:t?.roundPosition??false,roundPositionThreshold:t?.roundPositionThreshold??0,focusingAnimation:t?.animation??gt.Instant};}update(t,e){let i=N.getInstanceOrFail(),s=i.targetPosition.value;s&&(i.focusingNewTargetInfo.value?this.ƀgh(i,s,t):i.position.value=s);}ƀgh(t,e,i){let s=t.focusingNewTargetInfo.value;if(s.focusingAnimation===gt.Instant)this.ƀbi(t,e);else {let r=(i-s.time)/s.duration;if(r>=1)this.ƀbi(t,e);else {let o;s.focusingAnimation===gt.EaseInOut?o=U.easeInOut(r):s.focusingAnimation===gt.EaseOut?o=U.easeOut(r):o=1;let a=s.position.lerp(e,o);s.roundPosition&&(Math.abs(a.x-s.position.x)>=s.roundPositionThreshold&&(a=new Vector(Math.round(a.x),a.y)),Math.abs(a.y-s.position.y)>=s.roundPositionThreshold&&(a=new Vector(a.x,Math.round(a.y)))),t.position.value=a;}}}ƀbi(t,e){t.position.value=e,t.focusingNewTargetInfo.value=void 0;}};ke=vo([u()],ke);var Po=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},So=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ri=class{static{h(this,"CameraController");}constructor(t){this.ƀav=t;}createCamera(){return this.ƀav.createCamera().id}update(t,e){this.ƀav.update(t,e);}setPosition(t){this.ƀav.setPosition(t);}setTransition(t){this.ƀav.setTransition(t);}getCameraPosition(){return this.ƀav.getCameraPosition()}};Ri=Po([lt(yt),So("design:paramtypes",[ke])],Ri);var ze=class{static{h(this,"PositionConversionHelper");}static includeScaleInScreenPosition(t,e,i){if(e!==1){let s=Vector.fromTo(i,t).multiplyNumber(1/e);return i.add(s)}else return t}};var Eo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Ro=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Gt=class extends Z{static{h(this,"CameraView");}constructor(t){super(),this.ƀdi=t,this.ƀld=(()=>{let e=new d().attach(this);return e.ƀiv=y.instance.ƀiu.stage,e})(),this.ƀjw=new d().setAlpha(0).displayParent(this.ƀld).attach(this),this.ƀag=A.createRectangle(new Vector(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(0).displayParent(this.ƀld).attach(this),this.ƀad=new d().displayParent(this.ƀjw).attach(this),this.ƀau=new d().displayParent(this.ƀjw).attach(this),this.ƀdv=new d().setSortableChildren(true).displayParent(this.ƀjw).attach(this),this.ƀat=new d().setSortableChildren(true).displayParent(this.ƀau).attach(this),this.ƀdu=new d().setSortableChildren(true).setRenderGroup().setZIndex(20).displayParent(this.ƀat).attach(this),this.ƀgu=new d().setSortableChildren(true).setRenderGroup().setZIndex(10).displayParent(this.ƀat).attach(this),this.ƀac=new d().setRenderGroup().setZIndex(0).displayParent(this.ƀat).attach(this),this.ƀh=new O(this.ƀjw,"alpha",{duration:500,animation:b.easeInOutCubic,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),this.ƀah=new O(this.ƀag,"alpha",{duration:500,animation:b.easeInOutCubic,reAnimateHandling:B.CompletePrevious,completionHandling:C.StayInCurrentState}),y.instance.screenSize.subscribe(e=>{this.ƀag.aspectRatio=e.x/e.y,this.ƀag.scale=Math.max(e.x,e.y),this.ƀag.setPosition(Vector.zero,{holdFrom:Vector.zero});}).attach(this),this.ƀdi.position.subscribe(e=>{this.ƀat.position=this.ƀbv(e);}).attach(this),this.ƀdi.offset.subscribe(e=>{this.ƀau.position=e;}).attach(this),this.ƀah.set({alpha:0}),this.ƀh.set({alpha:0});}screenPositonToStagePosition(t){let e=ze.includeScaleInScreenPosition(t,this.ƀld.scale,y.instance.screenSizeCenter.value);return new Vector(e.x-this.ƀat.position.x-this.ƀau.position.x,e.y-this.ƀat.position.y-this.ƀau.position.y)}getLayers(){return {backgroundScreen:this.ƀad.id,background:this.ƀac.id,main:this.ƀgu.id,foreground:this.ƀdu.id,foregroundScreen:this.ƀdv.id}}appear(t,e,i){switch(e){case "alpha":return this.ƀah.set({alpha:0}),this.ƀh.set({alpha:t?0:1}),SingleEvent.instant().async(()=>i>0&&w.wait(i),"tap").async(()=>this.ƀh.animate({alpha:t?1:0})).chain(this);case "pureBlack":return this.ƀh.set({alpha:1}),this.ƀah.set({alpha:t?1:0}),SingleEvent.instant().async(()=>i>0&&w.wait(i),"tap").async(()=>this.ƀah.animate({alpha:t?0:1})).chain(this);case "instant":return this.ƀh.set({alpha:t?1:0}),this.ƀah.set({alpha:t?0:1}),SingleEvent.instant();default:{throw new Error}}}ƀbv(t){return Vector.fromTo(t,y.instance.screenSizeCenter.value)}};Gt=Eo([oi({entity:N}),Ro("design:paramtypes",[N])],Gt);var Co=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Ci=class{static{h(this,"CameraViewController");}getLayers(){let t=N.getInstanceOrFail().id;return Gt.getInstanceOrFail(t).getLayers()}appear(t,e,i){let s=N.getInstanceOrFail().id;return Gt.getInstanceOrFail(s).appear(t,e,i)}screenPositonToStagePosition(t){let e=N.getInstanceOrFail().id;return Gt.getInstanceOrFail(e).screenPositonToStagePosition(t)}};Ci=Co([lt(Bt)],Ci);var Ao=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Oo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ai=class{static{h(this,"KeyboardService");}constructor(){this.ƀgj=new Action,this.keyPressed=this.ƀgj.notifier,this.ƀgk=new Action,this.keyReleased=this.ƀgk.notifier,this.ƀgq=new Set,this.ƀgp=new Set,window.addEventListener("keydown",t=>{this.ƀgq.add(t.code),this.ƀgp.add(t.code),!t.repeat&&this.ƀgj.trigger({key:t.key,code:t.code});}),window.addEventListener("keyup",t=>{this.ƀgq.delete(t.code),this.ƀgk.trigger({key:t.key,code:t.code});}),window.addEventListener("blur",()=>{this.ƀgq.clear();}),w.afterSceneUpdateAction.subscribe(()=>this.ƀgp.clear()).attachToRoot();}isKeyDown(t,e){return (e?.onlyPressedThisFrame?this.ƀgp:this.ƀgq).has(t)}};Ai=Ao([u(),Oo("design:paramtypes",[])],Ai);var Mo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Do=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},we=class{static{h(this,"MouseService");}constructor(){this.ƀfz=new Variable(false),this.initialMouseMovementHappened=this.ƀfz.notifier,this.ƀle=new Variable(Vector.zero,{notifyOnChange:true}),this.stagePosition=this.ƀle.notifier,this.ƀjy=new Variable(Vector.zero,{notifyOnChange:true}),this.screenPosition=this.ƀjy.notifier,this.ƀgt=new Variable(false),this.mainButtonState=this.ƀgt.notifier,this.ƀkd=new Variable(false),this.secondaryButtonState=this.ƀkd.notifier,this.ƀlg(),window.addEventListener("pointerdown",t=>{t.button===0?this.ƀgt.value=true:t.button===2&&(this.ƀkd.value=true);},{capture:true}),window.addEventListener("pointerup",t=>{t.button===0?this.ƀgt.value=false:t.button===2&&(this.ƀkd.value=false);},{capture:true}),window.addEventListener("blur",()=>{this.ƀgt.value=false,this.ƀkd.value=false;},{capture:true});}ƀlg(){let t=Vector.zero;window.addEventListener("pointermove",e=>{t=new Vector(e.clientX,e.clientY),this.ƀfz.value=true;},{capture:true}),w.beforeSceneUpdateAction.subscribe(()=>{this.ƀjy.value=this.ƀbc(t);}).attachToRoot(),w.afterSceneUpdateAction.subscribe(()=>{this.ƀle.value=y.camera.screenPositonToStagePosition(this.ƀjy.value);}).attachToRoot();}ƀbc(t){let i=y.instance.renderer.canvas.getBoundingClientRect(),s=i.width,r=i.height;if(s<=0||r<=0)return Vector.zero;let o=y.instance.renderer.screen,a=(t.x-i.left)/s*o.width,l=(t.y-i.top)/r*o.height;return a=NumberHelper.clamp(a,0,o.width),l=NumberHelper.clamp(l,0,o.height),new Vector(a,l)}};we=Mo([u(),Do("design:paramtypes",[])],we);var Bo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Go=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Oi=class{static{h(this,"MouseTargetFocusService");}get focusedInLastFrame(){return this.ƀdt}get lastFocusedPosition(){return this.ƀgm}constructor(t){this.ƀhi=t,this.ƀhy=new Action,this.onTargetFocus=this.ƀhy.notifier,this.ƀma=0,this.ƀmb=false,this.ƀdt=false,this.ƀgm=void 0,w.beforeSceneUpdateAction.subscribe(e=>this.ƀme(e.delta)).attachToRoot();}ƀme(t){if(this.ƀhj){let e=this.ƀeu(this.ƀhi.stagePosition.value,this.ƀhj);this.ƀij===void 0?this.ƀij=e:this.ƀay(e,t);}this.ƀhj=this.ƀhi.stagePosition.value;}ƀay(t,e){this.ƀij-t>10?(this.ƀma=Math.max(250,this.ƀma),this.ƀmb=true):this.ƀma>1e3&&(this.ƀmb=true);let i=this.ƀma>=300&&this.ƀmb;this.ƀgi(i,t,e);}ƀgi(t,e,i){(t||e>this.ƀij)&&(this.ƀij=e),t?(this.ƀmb=false,this.ƀma=0,this.ƀdt=true,this.ƀgm=this.ƀhi.stagePosition.value,this.ƀhy.trigger(this.ƀgm)):(this.ƀma+=i,this.ƀdt=false);}ƀeu(t,e){let i=Vector.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};Oi=Bo([u(),Go("design:paramtypes",[we])],Oi);var Mi=10.8,Di=10.01,ut;(function(n){n[n.Point=1]="Point",n[n.Circle=2]="Circle",n[n.Polygon=3]="Polygon",n[n.Rectangle=4]="Rectangle";})(ut||(ut={}));var m=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,s){return (t&s)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(s=>n.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,s.collisionGroup,s.collisionMask)))}static cloneP2Body(t){let e=new X.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};var xt="border";var Ho=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},xe=class extends ht(){static{h(this,"PhysicsGateway");}};xe=Ho([u()],xe);var jo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},vt=class extends ht(){static{h(this,"PhysicsInternalGateway");}};vt=jo([u()],vt);var S=class n extends Q{static{h(this,"PhysicsEntity");}static{this.ƀid=new Map;}static{this.ƀin=new Map;}static getFromP2BodyID(t){return n.ƀid.get(t)}static getFromP2BodyIDOrFail(t){let e=n.ƀid.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=n.ƀin.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(n.ƀin.values())}get area(){return this.ƀv}get mass(){return this.ƀgx}get collisions(){return this.ƀbe}constructor(t,e,i){super(),this.ƀhs=new Action,this.onCollision=this.ƀhs.notifier,this.type="dynamic",this.ƀv=0,this.ƀgx=0,this.ƀbe=[],this.physicsWorldID=t,this.ƀip=E.get(vt);let s=this.ƀip.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),r=this.ƀip.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀio=this.ƀip.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀiq=this.ƀip.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀip.createBody(this.physicsWorldID,e,s,r,this.type),this.ƀv=this.p2Body.getArea(),this.ƀgx=this.p2Body.mass,this.p2Body.position=m.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀip.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.ƀid.set(this.p2Body.id,this),n.ƀin.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀip.removeBody(this.physicsWorldID,this.p2Body),n.ƀid.delete(this.p2Body.id),n.ƀin.delete(this.id));}canCollideWith(t){return m.arePhysicsGroupsCollidable(this.ƀio,this.ƀiq,t.ƀio,t.ƀiq)}ƀkf(t){this.ƀbe=t,t.length>0&&this.ƀhs.trigger(t);}};var ve=class extends S{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=m.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 Bi=class extends Q{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),w.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀlk(t,e);}).attach(this);}ƀlk(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 Gi=class extends S{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.ƀfs=false,this.ƀft=false,this.ƀfv=false,this.ƀfu=false,this.ƀik(),this.ƀgr(),E.get(vt).subscribeToPhysicsStep(t,({time:i,delta:s})=>this.ƀlk(i,s)).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}}ƀlk(t,e){this.ƀfs=true,this.ƀft=true,this.ƀfv=true,this.ƀfu=true,this.ƀik();}ƀik(){this.position.value=m.arrayToVector(this.p2Body.position),this.rotation.value=new Radian(this.p2Body.angle),this.velocity.value=m.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀgr(){this.position.subscribe(t=>{this.ƀfs?this.ƀfs=false:this.p2Body.position=[t.x,t.y];}).attach(this),this.rotation.subscribe(t=>{this.ƀft?this.ƀft=false:this.p2Body.angle=t.value;}).attach(this),this.velocity.subscribe(t=>{this.ƀfv?this.ƀfv=false:this.p2Body.velocity=[t.x,t.y];}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀfu?this.ƀfu=false:this.p2Body.angularVelocity=t;}).attach(this);}};var ko=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},zo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},P=class extends Q{static{h(this,"PhysicsWorldEntity");}constructor(t,e,i,s,r,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=s,this.materialDefinitions=r,this.physicsBodyGroupToP2Group=o,this.physicsBodyGroupToP2Mask=a;}};P=ko([It(),zo("design:paramtypes",[Vector,Boolean,X.World,Map,Map,Map,Map])],P);var Ko=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},st=class{static{h(this,"PhysicsBodyGroupService");}createBodyGroupsAndMasks(t,e){let i=new Map,s=new Map;return t.map((r,o)=>{if(o>31)return console.error("Cannot have more than 32 physics body groups"),{};i.set(r,1<<o),s.set(r,0);}),e.map(([r,o])=>{if(!i.has(r))throw new Error(`Physics body group "${r}" not found`);if(!i.has(o))throw new Error(`Physics body group "${o}" not found`);let a=s.get(r),l=s.get(o),c=i.get(r),p=i.get(o);s.set(r,a|p),s.set(o,l|c);}),{physicsBodyGroupToP2Group:i,physicsBodyGroupToP2Mask:s}}getGroupConstant(t,e){return P.getInstanceByIDOrFail(t).physicsBodyGroupToP2Group.get(e)}getMaskConstant(t,e){return P.getInstanceByIDOrFail(t).physicsBodyGroupToP2Mask.get(e)}canCollide(t,e,i){let s=t.physicsBodyGroupToP2Group.get(e),r=t.physicsBodyGroupToP2Mask.get(e),o=t.physicsBodyGroupToP2Group.get(i),a=t.physicsBodyGroupToP2Mask.get(i);return (r&o)!==0&&(a&s)!==0}};st=Ko([u()],st);var Zo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Qo=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Xe=class{static{h(this,"AvailabilityGridCacheService");}constructor(t){this.ƀim=t;}getCollidableGrids(t,e){let i=[];return t.availabilityGridCache.forEach((s,r)=>{s.forEach((o,a)=>{this.ƀim.canCollide(t,a,e)&&i.push({grid:o,cellSize:r});});}),i}get(t,e,i){return t.availabilityGridCache.get(e)?.get(i)}set(t,e,i,s){let r=t.availabilityGridCache.get(e);r||(r=new Map,t.availabilityGridCache.set(e,r)),r.set(i,s);}clear(t){t.availabilityGridCache.clear();}};Xe=Zo([u(),Qo("design:paramtypes",[st])],Xe);var qo=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},tn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},bt=class{static{h(this,"AvailabilityGridService");}constructor(t,e){this.ƀim=t,this.ƀaa=e;}onBodyAdded(t,e,i){e.aabbNeedsUpdate=true,e.updateAABB();let s=m.aabbToBoundingBox(e.aabb);this.ƀaa.getCollidableGrids(t,i).forEach(r=>{let o=_.areaToGridArea(s,r.cellSize);r.grid.setArea(o,false);});}findClosestAvailableSpace(t,e,i,s=50){return e.aabbNeedsUpdate=true,e.updateAABB(),ne.findByConvertingGridSpace(this.getAvilabilityGrid(t,s,i),m.aabbToBoundingBox(e.aabb),s)}getAvilabilityGrid(t,e,i){let s=this.ƀaa.get(t,e,i);return s||(s=this.ƀcd(t,e,i),this.ƀaa.set(t,e,i,s)),s}ƀcd(t,e,i){let s=new Grid({size:new Vector(Math.floor(t.mapSize.x/e),Math.floor(t.mapSize.y/e)),defaultValue:true});return t.p2World.bodies.forEach(r=>{let o=S.getFromP2BodyIDOrFail(r.id);if(o.includeInPathfinding&&this.ƀim.canCollide(t,o.physicsBodyGroup,i)){let a=this.ƀek(r,e);s.setArea(a,false);}}),s}ƀek(t,e){let i=m.aabbToBoundingBox(t.aabb);return _.areaToGridArea(i,e)}};bt=qo([u(),tn("design:paramtypes",[st,Xe])],bt);var sn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},on=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Kt=class{static{h(this,"PathFinderService");}constructor(t){this.ƀil=t;}findPathAStar(t,e,i,s,r){r||(r={}),r.neighborType===void 0&&(r.neighborType="orthogonal"),r.gridCellSize===void 0&&(r.gridCellSize=50);let o=P.getInstanceByIDOrFail(t),a,l;Comparator.isNumber(i)?(l=S.getPhysicsInstanceOrFail(i).p2Body,a=m.arrayToVector(l.position)):a=i;let c=_.positionToGridPosition(e,r.gridCellSize),p=_.positionToGridPosition(a,r.gridCellSize),f=this.ƀil.getAvilabilityGrid(o,r.gridCellSize,s);if(l){let v=m.aabbToBoundingBox(l.aabb),x=_.areaToGridArea(v,r.gridCellSize);f.setArea(x,true);}let g=ae.findPath(f,c,p,r.neighborType);return g.path=g.path.map(v=>_.gridPositionToPosition(v,r.gridCellSize)),g}findPathDirection(t,e,i,s,r=50){let o=P.getInstanceByIDOrFail(t),a;if(Comparator.isNumber(i)){let g=S.getPhysicsInstanceOrFail(i);a=m.aabbToBoundingBox(g.p2Body.aabb);}else a=new Rectangle(i,i);let l=_.areaToGridArea(a,r),c=JSON.stringify({targetGridArea:l,collidableWithGroup:s}),p=o.vectorFieldCache.get(c);if(!p){let g=this.ƀil.getAvilabilityGrid(o,r,s);p=new he(l,g),o.vectorFieldCache.set(c,p);}let f=_.positionToGridPosition(e,r);return p.getDirectionToTarget(f)}};Kt=sn([u(),on("design:paramtypes",[bt])],Kt);var an=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},hn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},nt=class{static{h(this,"TestVisualsService");}constructor(t,e){this.ƀab=t,this.ƀif=e;}printPathfindingTestGrid(t,e,i,s,r,o){let a=P.getInstanceByIDOrFail(t);this.ƀab.getAvilabilityGrid(a,o,s).map((c,p)=>({position:_.gridPositionToPosition(p,o),availability:c})).forEach(c=>{if(c.position.isInsideRectangle(r)){let p=this.ƀif.findPathDirection(t,c.position,i,s),f;p===void 0?f=A.createRectangleBorders(new Vector(8,8),2,ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).attach(a):f=A.createArrow(25,c.availability?ColorHelper.green:ColorHelper.red).toSprite().displayParent(e).setPosition(c.position,{round:false}).setRotation(p).attach(a),new O(f,"alpha",{duration:1e3,animation:b.easeIn}).animate({alpha:0}).tap(()=>f.destroy()).attach(f);}});}createExplosionDebugVisual(t,e,i,s,r,o=300){let a=new d().displayParent(e).setAlpha(.5).attach(t);A.createCircle(r,ColorHelper.blue).toSprite().displayParent(a).setPosition(s,{round:false}).setAlpha(.5).attach(t),i.forEach(c=>{let p=c.hits.length>0?ColorHelper.red:ColorHelper.white;A.createVector(s,c.line.to,p).toSprite().displayParent(a).attach(t);}),new O(a,"alpha",{duration:o,animation:b.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}createElipticExplosionDebugVisual(t,e,i,s,r,o,a=300){let l=new d().displayParent(e).setAlpha(.5).attach(t);A.createElipse(o,ColorHelper.blue).toSprite().displayParent(l).setPosition(s,{round:false}).setRotation(r).setAlpha(.5).attach(t),i.forEach(p=>{let f=p.hits.length>0?ColorHelper.red:ColorHelper.white;A.createVector(p.line.from,p.line.to,f).toSprite().displayParent(l).attach(t);}),new O(l,"alpha",{duration:a,animation:b.easeIn}).animate({alpha:0}).tap(()=>l.destroy()).attach(l);}createPhysicsEntityShapeVisual(t,e,i){let s=i?.overridePosition??m.arrayToVector(t.position),r=i?.overrideRotation??new Radian(t.angle),o=i?.color??ColorHelper.blue,a=new d().displayParent(e).setPosition(s,{round:false}).setRotation(r).setAlpha(.5).attachToRoot();t.shapes.forEach(c=>{this.ƀda(c,o).displayParent(a).attachToRoot();}),new O(a,"alpha",{duration:1e3,animation:b.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a);}ƀda(t,e){switch(t.type){case X.Shape.PARTICLE:throw new Error("Not implemented");case X.Shape.LINE:throw new Error("Not implemented");case X.Shape.PLANE:throw new Error("Not implemented");case X.Shape.CIRCLE:throw new Error("Not implemented");case X.Shape.CAPSULE:throw new Error("Not implemented");case X.Shape.BOX:throw new Error("Not implemented");case X.Shape.HEIGHTFIELD:throw new Error("Not implemented");case X.Shape.CONVEX:return this.ƀcz(t,e);default:{t.type;throw new Error}}}ƀcz(t,e){let i=[t.vertices.map(s=>({x:s[0],y:s[1]}))];return A.createPolygon(i,e).toSprite()}};nt=an([u(),hn("design:paramtypes",[bt,Kt])],nt);var pn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},un=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Ke=class{static{h(this,"HitTestService");}constructor(t){this.ƀlt=t;}hitTest(t,e){let i=t.world,s=S.getFromP2BodyIDOrFail(t.id),r=m.cloneP2Body(t);this.ƀt(r,e);let o=i.broadphase.aabbQuery(i,this.ƀdy(r)).map(l=>S.getFromP2BodyIDOrFail(l.id)).filter(l=>l.includeInPathfinding).filter(l=>s.canCollideWith(l)).map(l=>m.cloneP2Body(l.p2Body)),a=false;if(o.length!==0){let l=new X.World;l.addBody(r),o.forEach(c=>l.addBody(c)),l.step(1,1,1),a=l.narrowphase.contactEquations.some(c=>c.bodyA===r||c.bodyB===r),l.clear();}if(e?.testLayerID){let l=a?ColorHelper.red:ColorHelper.green;this.ƀlt.createPhysicsEntityShapeVisual(t,e.testLayerID,{overridePosition:e.overridePosition,overrideRotation:e.overrideRotation,color:l});}return a}ƀt(t,e){e?.overridePosition&&(t.position=m.vectorToArray(e.overridePosition)),e?.overrideRotation&&(t.angle=e.overrideRotation.value);}ƀdy(t){return t.aabbNeedsUpdate=true,t.updateAABB(),t.aabb}};Ke=pn([u(),un("design:paramtypes",[nt])],Ke);var dn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Ze=class{static{h(this,"CollisionsService");}registerPhysicsWorld(t){t.p2World.on("beginContact",e=>{e.contactEquations.forEach(i=>{this.ƀjn(t,i);});});}step(t,e,i){S.getPhysicsEntities().forEach(s=>{s.ƀbe=[];}),t.p2World.narrowphase.contactEquations.forEach(s=>{this.ƀjn(t,s);}),t.bodiesInContactWith.forEach((s,r)=>{this.ƀfi(s.p2Body),s.entity.ƀkf(t.collisionReports.get(r)||[]);}),t.bodiesInContactWith.clear(),t.collisionReports.clear();}ƀfi(t){let e=m.arrayToVector(t.velocity);e.length>Mi&&(e=e.normalize(Mi),t.velocity=m.vectorToArray(e)),t.angularVelocity=Math.min(Math.max(t.angularVelocity,-Di),Di);}ƀjn(t,e){let i=S.getFromP2BodyID(e.bodyA.id),s=S.getFromP2BodyID(e.bodyB.id);if(i&&s){t.bodiesInContactWith.set(e.bodyA.id,{p2Body:e.bodyA,entity:i}),t.bodiesInContactWith.set(e.bodyB.id,{p2Body:e.bodyB,entity:s});let r=t.collisionReports.get(e.bodyA.id)||[],o=t.collisionReports.get(e.bodyB.id)||[],{collisionDetailsA:a,collisionDetailsB:l}=this.ƀed(i,s,e);r.push({self:a,target:l}),o.push({self:l,target:a}),t.collisionReports.set(e.bodyA.id,r),t.collisionReports.set(e.bodyB.id,o);}else console.warn("ContactEquationOrganiser: Entity not found for contact equation",e);}ƀed(t,e,i){let s=t.convertToDTO(),r=e.convertToDTO(),o=m.arrayToVector(i.contactPointA),a=m.arrayToVector(i.contactPointB),{normalA:l,normalB:c}=this.ƀes(i);return {collisionDetailsA:this.ƀec(s,i.bodyA.mass,o,l,t.area),collisionDetailsB:this.ƀec(r,i.bodyB.mass,a,c,e.area)}}ƀec(t,e,i,s,r){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:r,normal:s}}ƀes(t){let e=m.arrayToVector(t.normalA),i=e.multiplyNumber(-1);return {normalA:e,normalB:i}}};Ze=dn([u()],Ze);var mn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},yn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Qe=class extends ve{static{h(this,"BorderEntity");}constructor(t,e){super(t,e);}};Qe=mn([It(),yn("design:paramtypes",[Number,Object])],Qe);var gn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Y=1e4,qe=class{static{h(this,"BorderService");}createBorders(t,e,i){this.ƀbx(t,new Vector(e.x/2,-Y/2),new Vector(e.x+Y*2,Y),i),this.ƀbx(t,new Vector(e.x/2,e.y+Y/2),new Vector(e.x+Y*2,Y),i),this.ƀbx(t,new Vector(-Y/2,e.y/2),new Vector(Y,e.y+Y*2),i),this.ƀbx(t,new Vector(e.x+Y/2,e.y/2),new Vector(Y,e.y+Y*2),i);}ƀbx(t,e,i,s){return new Qe(t,{shapeDefinition:{materialName:xt,group:s,shapeType:ut.Rectangle,shapeData:i},position:e,rotation:Radian.get0,addInEmptySpace:false,includeOnPathfinding:true}).attachByID(t)}};qe=gn([u()],qe);var xn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Tr=new X.Material,vn={id:xt,density:Number.MAX_SAFE_INTEGER,velocityDrag:1,rotationalDrag:1},Zt=class{static{h(this,"MaterialsService");}createMaterials(t,e,i,s){let r=new Map,o=new Map;if(i.forEach(a=>{r.set(a.id,new X.Material),o.set(a.id,a);}),r.has(xt))throw new Error(`Material with name ${xt} cannot be defined, pick another name for the material.`);return r.set(xt,Tr),o.set(xt,vn),this.ƀc(t,e,i,s,r),{materials:r,materialDefinitions:o}}getMaterial(t,e){let i=P.getInstanceByIDOrFail(t);return this.ƀer(e,i.materials)}getMaterialDefinition(t,e){let i=P.getInstanceByIDOrFail(t);return this.ƀeq(e,i.materialDefinitions)}ƀer(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material with name ${t}.`);return i}ƀeq(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,s,r){this.ƀeh(i.map(o=>o.id),s).forEach(o=>{let a=this.ƀer(o.materialA,r),l=this.ƀer(o.materialB,r);t.addContactMaterial(new X.ContactMaterial(a,l,{friction:o.friction,restitution:o.bounciness,stiffness:o.stiffness,relaxation:o.relaxation}));}),this.ƀd(t,e,i,r);}ƀeh(t,e){let i=new Map;e.forEach(r=>{let o=i.get(r.materialA);o||(o=new Map,i.set(r.materialA,o)),o.set(r.materialB,r);});let s=[];return t.forEach((r,o)=>{for(let a=o;a<t.length;a++){let l=t[a],c=i.get(r)?.get(l);c?s.push(c):s.push({materialA:r,materialB:l,friction:0,bounciness:0,relaxation:4,stiffness:1e6});}}),s}ƀd(t,e,i,s){i.forEach(r=>{let o=this.ƀer(r.id,s);t.addContactMaterial(new X.ContactMaterial(o,Tr,{friction:e.friction,restitution:e.bounciness,stiffness:e.stiffness,relaxation:e.relaxation}));});}};Zt=xn([u()],Zt);var bn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Pn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Qt=class{static{h(this,"PhysicsWorldService");}constructor(t,e,i,s,r){this.ƀhb=t,this.ƀal=e,this.ƀab=i,this.ƀbf=s,this.ƀim=r;}createPhysicsWorld(t){let e=new X.World({gravity:[0,0]}),{materials:i,materialDefinitions:s}=this.ƀhb.createMaterials(e,t.borderProperties,t.materialDefinitions,t.materialContactDefinitions),{physicsBodyGroupToP2Group:r,physicsBodyGroupToP2Mask:o}=this.ƀim.createBodyGroupsAndMasks(t.physicsBodyGroups,t.interactingBodyGroups),a=new P(t.mapSize,t.modifyUpdateCycle,e,i,s,r,o).attachByID(t.attachTo);return a.onDestroy().tap(()=>{e.clear(),t.modifyUpdateCycle&&w.cleanUpdateModifier();}).attachToRoot(),this.ƀal.createBorders(a.id,t.mapSize,t.borderProperties.borderBodyGroup),this.ƀbf.registerPhysicsWorld(a),t.modifyUpdateCycle?w.registerUpdateModifier((l,c)=>this.ƀlk(a,l,c)):w.beforeSceneUpdateAction.subscribe(({time:l,delta:c})=>{this.ƀlk(a,l,c);}).attach(a),a.id}addBody(t,e,i,s,r){let o=P.getInstanceByIDOrFail(t);if(i){let a=this.ƀab.findClosestAvailableSpace(o,e,s);return a?(e.position[0]+=a.x,e.position[1]+=a.y,o.p2World.addBody(e),r&&this.ƀab.onBodyAdded(o,e,s),true):false}else return o.p2World.addBody(e),r&&this.ƀab.onBodyAdded(o,e,s),true}removeBody(t,e){P.getInstanceByID(t)?.p2World.removeBody(e);}ƀlk(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 s=e+i;this.ƀbf.step(t,s,i),t.onPhysicsStep.trigger({time:s,delta:i}),t.lastP2Time.value=t.p2World.time;}return i}setPaused(t,e){P.getInstanceByIDOrFail(e).paused.set(t);}};Qt=bn([u(),Pn("design:paramtypes",[Zt,qe,bt,Ze,st])],Qt);var Tn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},te=class{static{h(this,"RayCastingService");}castClosest(t,e,i){let s=new X.RaycastResult,r=new X.Ray({mode:X.Ray.CLOSEST,from:m.vectorToArray(e.from),to:m.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i)});if(t.p2World.raycast(s,r),s.hasHit())return this.ƀbs(s,e)}castAllFirstContacts(t,e,i){let s=new Map,r=new X.Ray({mode:X.Ray.ALL,from:m.vectorToArray(e.from),to:m.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i),callback:h(o=>{let a=s.get(o.body);!s.has(o.body)||o.fraction<a.fraction?s.set(o.body,this.ƀbs(o,e)):o.fraction===a.fraction&&a.isExternal()&&s.set(o.body,this.ƀbs(o,e));},"callback")});return t.p2World.raycast(new X.RaycastResult,r),Array.from(s.values())}ƀbs(t,e){let i=t.fraction,s=m.arrayToVector(t.normal),r,o,a;return {body:t.body,hitPosition:h(()=>(r===void 0&&(r=e.from.lerp(e.to,i)),r),"hitPosition"),hitDistance:h(()=>(o===void 0&&(o=e.length*i),o),"hitDistance"),isExternal:h(()=>(a===void 0&&(a=e.fromTo.dotProduct(s)<0),a),"isExternal"),normal:s,fraction:i,line:e}}};te=Tn([u()],te);var En=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Tt=class{static{h(this,"ImpactService");}applyImpulse(t,e,i,s){let r=i.normalize(s),o=[e.x-t.position[0],e.y-t.position[1]];t.applyImpulse(m.vectorToArray(r),o);}};Tt=En([u()],Tt);var Rn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},ee=class{static{h(this,"RayCastHitConverterService");}toExplosionHits(t,e=true){let i=new Map;return t.forEach(s=>{s.hits.forEach(r=>{let o=i.get(r.body);if(o){let a=r.fraction<o.closestRaycastHit.fraction?r:o.closestRaycastHit;o.rayCastHits.push(r),i.set(r.body,{hitCount:o.hitCount+1,closestRaycastHit:a,rayCastHits:o.rayCastHits,isExternal:e?o.isExternal:o.isExternal&&r.isExternal(),explosionCenter:r.line.from});}else {let a=r.isExternal();i.set(r.body,{hitCount:1,closestRaycastHit:r,rayCastHits:[r],isExternal:a,explosionCenter:r.line.from});}});}),[...i.values()].map(s=>this.ƀbt(s,t.length))}ƀbt(t,e){let i=t.hitCount/e,s=t.rayCastHits;if(t.isExternal)return {body:S.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:true,normal:t.closestRaycastHit.normal,fraction:t.closestRaycastHit.fraction,ratioOfHits:i,raycastResults:s,getHitPosition:t.closestRaycastHit.hitPosition,getHitDistance:t.closestRaycastHit.hitDistance};{let r=m.arrayToVector(t.closestRaycastHit.body.position);return {body:S.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:false,normal:Vector.fromTo(r,t.explosionCenter).normalize(),fraction:0,ratioOfHits:i,raycastResults:s,getHitPosition:h(()=>t.explosionCenter,"getHitPosition"),getHitDistance:h(()=>0,"getHitDistance")}}}};ee=Rn([u()],ee);var Cn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},An=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Dn=15,ei=class{static{h(this,"ElipticExplosionService");}constructor(t,e,i,s){this.ƀji=t,this.ƀlt=e,this.ƀjh=i,this.ƀfw=s;}createElipticExplosion(t,e,i,s,r,o,a){let l=P.getInstanceByIDOrFail(t),c=this.ƀci(e,i,s,r,a?.hitOnlyClosest===true,l),p=this.ƀjh.toExplosionHits(c,false);return this.ƀr(p,o),a?.testLayerID&&this.ƀlt.createElipticExplosionDebugVisual(l,a.testLayerID,c,e,i,s,a.debugRayDuration),p.map(f=>{let{p2Body:g,...v}=f;return v})}ƀci(t,e,i,s,r,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 f=l.normalize(i.y);a.push(new Line(t,t.add(f))),a.push(new Line(t,t.add(f.multiplyNumber(-1))));let g=Math.round(i.y/Dn),v=i.y/(g*2+1)*2,x=l.normalize(v),M=i.x,L=Math.pow(i.y,2);return ArrayHelper.createIntegerArray(g).forEach(I=>{let K=v*(I+1),_t=x.multiplyNumber(I+1),$=c.normalize(this.ƀfa(M,L,K)),H=t.add(_t);a.push(new Line(H,H.add($))),a.push(new Line(H,H.add($.multiplyNumber(-1))));let j=t.add(_t.multiplyNumber(-1));a.push(new Line(j,j.add($))),a.push(new Line(j,j.add($.multiplyNumber(-1))));}),a.map(I=>{if(r){let K=this.ƀji.castClosest(o,I,s);return {line:I,hits:K?[K]:[]}}else {let K=this.ƀji.castAllFirstContacts(o,I,s);return {line:I,hits:K}}})}ƀfa(t,e,i){return Math.sqrt(1-Math.pow(i,2)/e)*t}ƀr(t,e){t.forEach(i=>{i.raycastResults.forEach(s=>{let r,o;s.isExternal()?(r=s.line.fromTo,o=e*2):(r=s.line.fromTo.multiplyNumber(-1),o=e*(1-s.fraction)*8),this.ƀfw.applyImpulse(s.body,s.hitPosition(),r,o);});});}};ei=Cn([u(),An("design:paramtypes",[te,nt,ee,Tt])],ei);var Bn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},Gn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},ii=class{static{h(this,"ExplosionService");}constructor(t,e,i,s){this.ƀji=t,this.ƀlt=e,this.ƀjh=i,this.ƀfw=s;}createExplosion(t,e,i,s,r,o){let a=P.getInstanceByIDOrFail(t),l=this.ƀey(i),c=this.ƀci(e,i,s,l,o?.hitOnlyClosest===true,a),p=this.ƀjh.toExplosionHits(c);return this.ƀr(e,i,r,l,p),o?.testLayerID&&this.ƀlt.createExplosionDebugVisual(a,o.testLayerID,c,e,i,o.debugRayDuration),p}ƀci(t,e,i,s,r,o){let a=new Radian(PI_360/s),l=new Vector(0,-e),c=a.vector;return ArrayHelper.createEmptyArray(s).map(()=>{let p=t.add(l);return l=l.rotate(c),new Line(t,p)}).map(p=>{if(r){let f=this.ƀji.castClosest(o,p,i);return {line:p,hits:f?[f]:[]}}else {let f=this.ƀji.castAllFirstContacts(o,p,i);return {line:p,hits:f}}})}ƀr(t,e,i,s,r){r.forEach(o=>{if(o.isExternal)o.raycastResults.forEach(a=>{let l=i*(1-a.fraction);this.ƀfw.applyImpulse(a.body,a.hitPosition(),a.line.fromTo,l);});else {let a=Vector.fromTo(t,m.arrayToVector(o.p2Body.position)),l=a.length/e,c=i*s*l/2;this.ƀfw.applyImpulse(o.p2Body,o.getHitPosition(),a,c);}});}ƀey(t){return t>100?Math.floor(t*.3):Math.floor(t*.26+4)}};ii=Bn([u(),Gn("design:paramtypes",[te,nt,ee,Tt])],ii);var Ln=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},ie=class{static{h(this,"PhysicsQueryService");}getMapSize(t){let e=P.getInstanceByIDOrFail(t);return {dimentions:e.mapSize,center:e.mapSizeCenter}}subscribeToPhysicsStep(t,e){return P.getInstanceByIDOrFail(t).onPhysicsStep.subscribe(e)}};ie=Ln([u()],ie);var Hn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},jn=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},_i=class{static{h(this,"PhysicsController");}constructor(t,e,i,s,r,o,a,l){this.ƀit=t,this.ƀif=e,this.ƀlt=i,this.ƀdm=s,this.ƀde=r,this.ƀfo=o,this.ƀis=a,this.ƀfw=l;}createPhysicsWorld(t){return this.ƀit.createPhysicsWorld(t)}getMapSize(t){return this.ƀis.getMapSize(t)}setPaused(t,e){this.ƀit.setPaused(t,e);}hitTest(t,e){let i=S.getPhysicsInstanceOrFail(t);return this.ƀfo.hitTest(i.p2Body,e)}findPath(t,e,i,s,r){return this.ƀif.findPathAStar(t,e,i,s,{neighborType:r})}findPathDirection(t,e,i,s){return this.ƀif.findPathDirection(t,e,i,s)}applyImpulse(t,e,i,s){let r=S.getPhysicsInstanceOrFail(t);this.ƀfw.applyImpulse(r.p2Body,e,i,s);}createExplosion(t,e,i,s,r,o){return this.ƀdm.createExplosion(t,e,i,s,r,o)}createElipticExplosion(t,e,i,s,r,o,a){return this.ƀde.createElipticExplosion(t,e,i,s,r,o,a)}printPathfindingTestGrid(t,e,i,s,r,o=50){this.ƀlt.printPathfindingTestGrid(t,e,i,s,r,o);}};_i=Hn([lt(xe),jn("design:paramtypes",[Qt,Kt,nt,ii,ei,Ke,ie,Tt])],_i);var Un=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},ri=class{static{h(this,"ShapeCreationService");}createBody(t,e,i,s,r){let o=P.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 ut.Point:return this.ƀbz(o,void 0,i,s,e.shapeDefinition.group,r);case ut.Circle:return this.ƀbz(o,e.shapeDefinition.shapeData,i,s,e.shapeDefinition.group,r);case ut.Polygon:return this.ƀch(o,e.shapeDefinition.shapeData,i,s,e.shapeDefinition.group,r);case ut.Rectangle:return this.ƀcj(o,e.shapeDefinition.shapeData,i,s,e.shapeDefinition.group,r);default:{e.shapeDefinition.shapeType;throw new Error}}}ƀbz(t,e,i,s,r,o){let a=new X.Circle({collisionGroup:t.physicsBodyGroupToP2Group.get(r),collisionMask:t.physicsBodyGroupToP2Mask.get(r),radius:e});a.material=i;let l=new X.Body({type:o==="dynamic"?X.Body.DYNAMIC:X.Body.STATIC,mass:s.density,damping:s.velocityDrag,angularDamping:s.rotationalDrag});return l.addShape(a),l}ƀch(t,e,i,s,r,o){let a=t.physicsBodyGroupToP2Group.get(r),l=t.physicsBodyGroupToP2Mask.get(r),c=e.map(g=>new X.Convex({vertices:g.map(v=>[v.x,v.y]),collisionGroup:a,collisionMask:l})).map(g=>(g.material=i,g)),p=c.reduce((g,v)=>g+v.area,0),f=new X.Body({type:o==="dynamic"?X.Body.DYNAMIC:X.Body.STATIC,mass:p,damping:s.velocityDrag,angularDamping:s.rotationalDrag});return c.forEach(g=>f.addShape(g)),f.setDensity(s.density),f}ƀcj(t,e,i,s,r,o){let a=new X.Box({width:e.x,height:e.y,collisionGroup:t.physicsBodyGroupToP2Group.get(r),collisionMask:t.physicsBodyGroupToP2Mask.get(r)});a.material=i;let l=e.x*e.y,c=new X.Body({type:o==="dynamic"?X.Body.DYNAMIC:X.Body.STATIC,mass:l,damping:s.velocityDrag,angularDamping:s.rotationalDrag});return c.addShape(a),c.setDensity(s.density),c}};ri=Un([u()],ri);var Wn=function(n,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(n,t,e,i);else for(var a=n.length-1;a>=0;a--)(o=n[a])&&(r=(s<3?o(r):s>3?o(t,e,r):o(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},$n=function(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)},Vi=class{static{h(this,"PhysicsInternalController");}constructor(t,e,i,s,r){this.ƀit=t,this.ƀir=e,this.ƀkq=i,this.ƀis=s,this.ƀim=r;}createBody(t,e,i,s,r){return this.ƀkq.createBody(t,e,i,s,r)}getMaterial(t,e){return this.ƀir.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀir.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀim.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀim.getMaskConstant(t,e)}addBody(t,e,i,s,r){return this.ƀit.addBody(t,e,i,s,r)}removeBody(t,e){this.ƀit.removeBody(t,e);}subscribeToPhysicsStep(t,e){return this.ƀis.subscribeToPhysicsStep(t,e)}};Vi=Wn([lt(vt),$n("design:paramtypes",[Qt,Zt,ri,ie,st])],Vi);export{wt as AdvancedSound,Li as AnimationFlicker,U as AnimationInterpolationFunctions,b as Animations,C as AnimationsCompletionHandlingType,O as Animator,xt as BORDER_MATERIAL_NAME,T as BardLegendsTestingHelper,le as Camera,yt as CameraGateway,ne as ClosestAvailableSpaceHelper,d as Container,Ht as ContainerEventType,lt as ControllerDecorator,ni as Cursor,k as DEFAULT_SHADER_RESOLUTION,pi as DeltaTime,xi as DisplayObjectArray,lr as ElectronGame,Q as Entity,It as EntityDecorator,Yi as FadeInContent,gt as FocusingAnimation,y as Game,ht as Gateway,A as Graphics,ve as ImmovablePhysicsEntity,Ai as KeyboardService,Ti as LayoutContainer,bi as MenuEntity,me as MenuUI,Pi as MenuView,we as MouseService,Oi as MouseTargetFocusService,Bi as MovableEntity,Gi as MovablePhysicsEntity,pe as Music,mi as MusicPlayer,ae as PathFinder,S as PhysicsEntity,xe as PhysicsGateway,ut as PhysicsShapeType,yi as Placeholder,Di as ROTATIONAL_SPEED_LIMIT,B as ReAnimateHandlingType,gi as RichText,rt as SOUND_TRANSITION_DURATION,Mi as SPEED_LIMIT,Vt as Scene,Nr as SceneDecorator,Si as ScrollAreaUI,ct as ScrollDirection,Ot as ScrollMaskUI,E as Service,u as ServiceDecorator,dt as SingletonEntity,tr as SlideInContent,ci as SlideInContentByIndex,De as SlideStateAnimation,pt as SlideStateAnimationState,ce as Sound,et as Sprite,jt as StateAnimation,de as Text,Re as ThroughEmptyStateAnimation,wi as UpdatableContainer,w as UpdateCycle,he as VectorFieldPathFinder,oe as VectorSet,Z as View,oi as ViewDecorator};
|