bard-legends-framework 1.0.0-rc0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import {Action,ActionLib,SingleEvent,IDAttachable,Variable,Attachable,ActionSubscription,Reducer,SingleAction}from'actions-lib';import'reflect-metadata';import {Rectangle,Vector as Vector$1,Radian,Random,MapToWeakRefs,Comparator,NumberHelper,ArrayHelper,ColorHelper,PI_360,Queue,GridNeighborType,BinaryHeap,Grid}from'helpers-lib';import ki from'p2';import*as R from'pixi.js';import {RichTextSeparator}from'script-engine-lib';var Ii=Object.defineProperty;var a=(n,t)=>Ii(n,"name",{value:t,configurable:true});var v=class{static{a(this,"BardLegendsHardReset");}static ƀer=new Action;static onHardReset=this.ƀer.notifier;static hardReset(){ActionLib.hardReset(),this.ƀer.trigger();}};function S(){return function(n){let t=m.ƀeb(n);n.$meta={paramtypes:t,type:"service"};}}a(S,"ServiceDecorator");var m=class{static{a(this,"Service");}static ƀip=new Map;static get(t){let e=this.ƀip.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀib([],t.$meta.paramtypes);e=new t(...i),this.ƀip.set(t,e);}return e}static ƀeb(t){let e=Reflect.getMetadata("design:paramtypes",t)||[];return e.some(i=>!i)&&console.error(`Circular dependency: ${t.name}`),e}static ƀib(t,e){let i=[...t];if(e.length>t.length){let s=e.slice(t.length).map(o=>{if(o){if(o.$meta?.type==="service")return this.get(o);console.log(o);}});i.push(...s);}return i}};v.onHardReset.subscribe(()=>{m.ƀip=new Map;}).attachToRoot();var D=class{static{a(this,"ControllerLink");}ƀbm=[];ƀia=[];trigger(t,...e){let i=this.ƀbm.find(r=>!!r[t]);if(i)return i[t](...e);throw new Error(`ServiceLink: no defined function with the name: "${t}", found in the linked controllers!`)}registerController(t){Reflect.ownKeys(t.constructor.prototype).filter(e=>e!=="constructor").map(e=>e.toString()).forEach(e=>{if(this.ƀia.includes(e))throw new Error(`ServiceLink: the function is already registered, function name: "${e}"`);this.ƀia.push(e);}),this.ƀbm.push(t);}};function k(n){return function(t){let e=m.ƀeb(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=m.ƀib([],e);i.some(s=>s===void 0)&&console.error(i,e,t.name);let r=new t(...i);n.controllerLink.registerController(r);}t.$meta={type:"controller"};}}a(k,"ControllerDecorator");var d=class n{static{a(this,"UpdateCycle");}static ƀac=new Action;static beforeSceneUpdateAction=this.ƀac.notifier;static ƀih=new Action;static sceneUpdateAction=this.ƀih.notifier;static ƀf=new Action;static afterSceneUpdateAction=this.ƀf.notifier;static ƀjs=0;static ƀjz=void 0;static wait(t){let e=this.ƀjs+t;return SingleEvent.create(i=>{let r=n.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀjz)this.ƀjz=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀjz=void 0;}static triggerUpdateTick(t){this.ƀjz&&(t=this.ƀjz(this.ƀjs,t)),this.ƀjs+=t,this.ƀfp=t,t>0&&(n.ƀac.trigger({time:this.ƀjs,delta:t}),n.ƀih.trigger({time:this.ƀjs,delta:t}),n.ƀf.trigger({time:this.ƀjs,delta:t}));}static get lastDelta(){return this.ƀfp}static ƀfp=0};v.onHardReset.subscribe(()=>{d.ƀac.clear(),d.ƀih.clear(),d.ƀf.clear(),d.ƀjz=void 0,d.ƀjs=0;}).attachToRoot();var C=class n{static{a(this,"EntityStoreHelper");}static ƀaw=new Map;static registerEntityClass(t){this.ƀaw.set(t.id,new Map);}static registerEntity(t){this.ƀaw.get(t.classID).set(t.id,t);}static unregisterEntity(t,e){let i=t.id;this.ƀaw.get(i)?.delete(e);}static getEntity(t,e){return this.ƀaw.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.ƀaw.get(t.id);return Array.from(e.values())}};v.onHardReset.subscribe(()=>{C.ƀaw.clear();}).attachToRoot();var z=class n{static{a(this,"EntityViewsHelper");}ƀcv;static ƀki=new Map;static entityID;static registerView(t,e){n.ƀki.has(e)||n.ƀki.set(e,[]);let i=n.ƀki.get(e);i&&i.push(t),C.getEntities(e).forEach(s=>{this.ƀch(s,t);});}static ƀch(t,e){try{let i=m.ƀib([this],e.$meta.paramtypes);n.entityID=t.id;let r=new e(t,...i.slice(1));t.destroyed?r.destroy():t.ƀkh.ƀkj.push(r);}catch(i){console.error(i);}}ƀkj=[];constructor(t){this.ƀcv=t;}createViews(){if(!this.ƀcv.destroyed){let t=n.ƀki.get(this.ƀcv.constructor);t&&t.forEach(e=>{n.ƀch(this.ƀcv,e);});}}updateViews(t,e){for(let i=0;i<this.ƀkj.length;i++){let r=this.ƀkj[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀkj.forEach(t=>{t.destroy();});}};v.onHardReset.subscribe(()=>{z.ƀki=new Map;}).attachToRoot();function ft(){return function(n){n.$meta={type:"entity"},C.registerEntityClass(n);}}a(ft,"EntityDecorator");var F=class extends IDAttachable{static{a(this,"Entity");}static getInstanceByID(t){if(t)return C.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=C.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return C.getEntities(this)}ƀkh=new z(this);constructor(){super(),C.registerEntity(this),d.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀkh.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀkh.destroyViews(),C.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀkh.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀkh.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀkh.createViews(),this}update(t,e){}};var Y=class extends F{static{a(this,"SingletonEntity");}static getInstance(){return C.getSingleton(this)}static getInstanceOrFail(){return C.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}"`)}};function Vi(){return function(n){return n.$meta={paramtypes:m.ƀeb(n),type:"scene"},n}}a(Vi,"SceneDecorator");var ot=class n extends IDAttachable{static{a(this,"Scene");}static ƀig=false;static ƀb=new Variable(void 0);static activeScene=this.ƀb.notifier;static getActiveScene(){return n.ƀb.value}static getActiveSceneOrFail(){if(!n.ƀb.value)throw new Error("Scene: getActiveSceneOrFail is called when there is no active scene!");return n.ƀb.value}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.ƀig)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=t[0];n.ƀig=true;let i=m.ƀib([],this.$meta.paramtypes),r=new this(...i).attachToRoot();return n.ƀb.set(r),r.init(e).map(()=>(n.ƀig=false,r)).chainToRoot()}ƀgl=new Action;onClose=this.ƀgl.notifier;constructor(){super(),d.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(n.ƀb.value!==this)throw n.ƀig?new Error("Scene: you cannot close a scene while a scene is transitioning!"):new Error("Internal Error: Scene instance is accessed while it is not the active scene!");let e=t[0];return n.ƀig=true,this.prepareToClose().map(()=>(super.destroy(),n.ƀb.set(void 0),n.ƀig=false,this.ƀgl.trigger(e),e)).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};v.onHardReset.subscribe(()=>{ot.ƀb.set(void 0);}).attachToRoot();function me(n){return function(t){t.$meta={paramtypes:m.ƀeb(t),viewInstances:new Map,entity:n.entity,type:"view"},z.registerView(t,n.entity);}}a(me,"ViewDecorator");var mt=class extends IDAttachable{static{a(this,"View");}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}ƀcw;constructor(){super(),this.attachToRoot(),this.ƀcw=z.entityID,this.ƀeh().set(this.ƀcw,this);}destroy(){this.destroyed||(super.destroy(),this.ƀeh().delete(this.ƀcw));}update(t,e){}ƀeh(){return this.constructor.$meta.viewInstances}};var E=class n{static{a(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$1(t[0],t[1])}static vectorToArray(t){return [t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return (t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>n.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new ki.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};function Hi(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Hi,"_ts_decorate");var W=new D,_=class{static{a(this,"PhysicsInternalGateway");}createBody(t,e,i,r,s){return W.trigger("createBody",t,e,i,r,s)}getMaterial(t,e){return W.trigger("getMaterial",t,e)}getMaterialDefinition(t,e){return W.trigger("getMaterialDefinition",t,e)}getGroupConstant(t,e){return W.trigger("getGroupConstant",t,e)}getMaskConstant(t,e){return W.trigger("getMaskConstant",t,e)}addBody(t,e,i,r,s){return W.trigger("addBody",t,e,i,r,s)}removeBody(t,e){return W.trigger("removeBody",t,e)}subscribeToPhysicsStep(t,e){return W.trigger("subscribeToPhysicsStep",t,e)}};_=Hi([S()],_);var T=class n extends F{static{a(this,"PhysicsEntity");}static ƀgz=new Map;static ƀhg=new Map;static getFromP2BodyID(t){return n.ƀgz.get(t)}static getFromP2BodyIDOrFail(t){let e=n.ƀgz.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=n.ƀhg.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(n.ƀhg.values())}ƀgm=new Action;onCollision=this.ƀgm.notifier;get area(){return this.ƀt}get mass(){return this.ƀgb}get collisions(){return this.ƀay}physicsWorldID;physicsBodyGroup;includeInPathfinding;p2Body;type="dynamic";ƀhi;ƀhh;ƀhj;ƀt=0;ƀgb=0;ƀay=[];constructor(t,e,i){super(),this.physicsWorldID=t,this.ƀhi=m.get(_);let r=this.ƀhi.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀhi.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀhh=this.ƀhi.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀhj=this.ƀhi.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀhi.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀt=this.p2Body.getArea(),this.ƀgb=this.p2Body.mass,this.p2Body.position=E.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀhi.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.ƀgz.set(this.p2Body.id,this),n.ƀhg.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀhi.removeBody(this.physicsWorldID,this.p2Body),n.ƀgz.delete(this.p2Body.id),n.ƀhg.delete(this.id));}canCollideWith(t){return E.arePhysicsGroupsCollidable(this.ƀhh,this.ƀhj,t.ƀhh,t.ƀhj)}ƀiq(t){this.ƀay=t,t.length>0&&this.ƀgm.trigger(t);}};var ge=class extends T{static{a(this,"ImmovablePhysicsEntity");}position;rotation;constructor(t,e){super(t,e,"static"),this.position=E.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$1.zero,rotationalSpeed:0}}};var ye=class extends F{static{a(this,"MovableEntity");}position=new Variable(Vector$1.zero);rotation=new Variable(Radian.get0);velocity=new Variable(Vector$1.zero);rotationalSpeed=new Variable(0);constructor(){super(),d.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀjh(t,e);}).attach(this);}ƀjh(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 xe=class extends T{static{a(this,"MovablePhysicsEntity");}position=new Variable(Vector$1.zero);rotation=new Variable(Radian.get0);velocity=new Variable(Vector$1.zero);rotationalSpeed=new Variable(0);ƀey=false;ƀez=false;ƀfb=false;ƀfa=false;constructor(t,e){super(t,e,"dynamic"),this.ƀhd(),this.ƀfv(),m.get(_).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀjh(i,r)).attach(this);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position.value,rotation:this.rotation.value,velocity:this.velocity.value,rotationalSpeed:this.rotationalSpeed.value}}ƀjh(t,e){this.ƀey=true,this.ƀez=true,this.ƀfb=true,this.ƀfa=true,this.ƀhd();}ƀhd(){this.position.value=E.arrayToVector(this.p2Body.position),this.rotation.value=new Radian(this.p2Body.angle),this.velocity.value=E.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀfv(){this.position.subscribe(t=>{this.ƀey?this.ƀey=false:this.p2Body.position=[t.x,t.y];}).attach(this),this.rotation.subscribe(t=>{this.ƀez?this.ƀez=false:this.p2Body.angle=t.value;}).attach(this),this.velocity.subscribe(t=>{this.ƀfb?this.ƀfb=false:this.p2Body.velocity=[t.x,t.y];}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀfa?this.ƀfa=false:this.p2Body.angularVelocity=t;}).attach(this);}};var no=10.8,oo=10.01,ao=(function(n){return n[n.Point=1]="Point",n[n.Circle=2]="Circle",n[n.Polygon=3]="Polygon",n[n.Rectangle=4]="Rectangle",n})({});var lo="border";var X=class{static{a(this,"AnimationInterpolationFunctions");}static boomerangTime(t){return 1-Math.abs(t-.5)*2}static lineer(t){return t}static easeIn(t){return Math.pow(t,2)}static easeOut(t){return 1-Math.pow(1-t,2)}static easeInOut(t){return t<.5?2*t*t:(t-=1,1-2*t*t)}static easeInOutCubic(t){let e=2*t-2;return t<.5?4*Math.pow(t,3):(t-1)*Math.pow(e,2)+1}},_i=class{static{a(this,"AnimationLineer");}start(){}multiplierFunction(t){return X.lineer(t)}},Ji=class{static{a(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return X.easeIn(t)}},qi=class{static{a(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return X.easeOut(t)}},Yi=class{static{a(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return X.easeInOut(t)}},Xi=class{static{a(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return X.easeInOutCubic(t)}},$e=class{static{a(this,"AnimationFlicker");}ƀjt;start(){this.ƀjt=new Array(10).fill(0),Random.integerBetween(0,9),this.ƀjt[Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(Random.integerBetween(0,9),this.ƀjt[Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(Random.integerBetween(0,9),this.ƀjt[Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀjt[e]}},x=class{static{a(this,"Animations");}static lineer=new _i;static easeIn=new Ji;static easeOut=new qi;static easeInOut=new Yi;static easeInOutCubic=new Xi};var H=(function(n){return n[n.ThrowError=1]="ThrowError",n[n.IgnoreNewAnimation=2]="IgnoreNewAnimation",n[n.CompletePrevious=3]="CompletePrevious",n})({}),$=(function(n){return n[n.ReturnToOriginal=1]="ReturnToOriginal",n[n.StayInCurrentState=2]="StayInCurrentState",n[n.JumpToEnd=3]="JumpToEnd",n[n.Loop=4]="Loop",n})({}),L=class n{static{a(this,"Animator");}static ƀj=new WeakMap;static ƀdi(t){let e=n.ƀj.get(t);return e||(e=new MapToWeakRefs,n.ƀj.set(t,e)),e}ƀjk;ƀgy;ƀk;ƀgv;get animating(){return this.ƀgv!==void 0}get target(){return this.ƀjk}ƀkb;get value(){return this.ƀkb||(this.ƀkb=new Variable(this.ƀjk)),this.ƀkb.notifier}constructor(t,e,i){this.ƀjk=t,this.ƀgy={duration:200,animation:x.lineer,reAnimateHandling:1,completionHandling:2,...i},this.ƀk=Comparator.isArray(e)?e:[e],this.ƀfw(t,this.ƀk);}animate(t,e){let i={...this.ƀgy,...e};if(this.ƀgv)switch(i.reAnimateHandling){case 1:throw new Error("Animator: new animation triggered while another is not complete yet.");case 2:return SingleEvent.instant();case 3:this.ƀir(i.completionHandling,this.ƀgv.ƀhs,true);break;default:{throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return SingleEvent.create(s=>{let o=this.ƀk.reduce((u,g)=>(u[g]={ƀje:this.ƀjk[g],ƀjm:t[g]},u),{}),h,l={ƀcs:i.duration,ƀct:0,ƀhs:o,ƀbf:i.completionHandling,ƀl:i.animation,ƀbe:s};if(l.ƀbf!==4&&this.ƀfi(l)){this.ƀgv=void 0,s();return}else l.ƀl.start();let p=this.ƀgv;return this.ƀgv=l,h=d.beforeSceneUpdateAction.subscribe(u=>{l.ƀct+=u.delta;let g=l.ƀct>=l.ƀcs;if(g&&(l.ƀbf===4?(l.ƀct%=l.ƀcs,l.ƀl.start(),g=false):(this.ƀir(l.ƀbf,l.ƀhs,false),this.ƀgv=void 0,l.ƀbe())),!g){let y=l.ƀl.multiplierFunction(l.ƀct/l.ƀcs),M=false;for(let U=0;U<this.ƀk.length;U++){let nt=this.ƀk[U],de=l.ƀhs[nt],Ne=(de.ƀjm-de.ƀje)*y+de.ƀje;Ne!==this.ƀjk[nt]&&(M=true,this.ƀjk[nt]=Ne);}M&&this.ƀkb?.set(this.ƀjk);}}).attachToRoot(),p?.ƀbe(),()=>{h.destroy(),this.ƀgv===l&&(this.ƀjk instanceof Attachable&&this.ƀjk.destroyed||this.ƀir(this.ƀgv.ƀbf,this.ƀgv.ƀhs,true),this.ƀgv=void 0);}})}set(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjk[r]!==t[r]&&(e=true,this.ƀjk[r]=t[r]);}e&&this.ƀkb?.set(this.ƀjk),this.ƀgv?.ƀbe();}completeAnimation(t){if(this.ƀgv){t=t??this.ƀgv.ƀbf,this.ƀir(t,this.ƀgv.ƀhs,true);let e=this.ƀgv.ƀbe;this.ƀgv=void 0,e();}}ƀfi(t){for(let e=0;e<this.ƀk.length;e++){let i=this.ƀk[e];if(this.ƀjk[i]!==t.ƀhs[i].ƀjm)return false}return true}ƀir(t,e,i){switch(t){case 1:this.ƀid(e);break;case 2:i||this.ƀfm(e);break;case 3:this.ƀfm(e);break;case 4:this.ƀid(e);break;default:{throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀid(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjk[r]!==t[r].ƀje&&(e=true,this.ƀjk[r]=t[r].ƀje);}e&&this.ƀkb?.set(this.ƀjk);}ƀfm(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjk[r]!==t[r].ƀjm&&(e=true,this.ƀjk[r]=t[r].ƀjm);}e&&this.ƀkb?.set(this.ƀjk);}ƀfw(t,e){let i=n.ƀdi(t);for(let r of e){if(i.has(r))throw new Error(`Animator: target property is already animated! Target: "${JSON.stringify(t,void 0,2)}", Property: "${r}"`);i.set(r,this);}}};var we=(function(n){return 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})({}),rr=(function(n){return n.Default="default",n.Pointer="pointer",n})({}),jt=class extends IDAttachable{static{a(this,"ContainerAttributes");}pixiContainer;constructor(){super(),this.pixiContainer=new R.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new Vector$1(this.pixiContainer.width,this.pixiContainer.height)}setSize(t){return this.pixiContainer.width=t.x,this.pixiContainer.height=t.y,this}setPosition(t,e){if(e?.holdFrom){let i=this.pixiContainer.getLocalBounds(),r=new Vector$1(this.pixiContainer.scale.x,this.pixiContainer.scale.y),s=new Vector$1(i.x,i.y).multiply(r),o=new Vector$1(i.width,i.height).multiply(r),h=s.add(o.multiply(e.holdFrom));t=t.subtract(h);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new Vector$1(this.pixiContainer.x,this.pixiContainer.y)}set position(t){this.pixiContainer.position=t;}get x(){return this.pixiContainer.x}set x(t){this.pixiContainer.x=t;}get y(){return this.pixiContainer.y}set y(t){this.pixiContainer.y=t;}on(t,e){let i=a(r=>e(),"handle");return this.pixiContainer.on(t,i),new ActionSubscription(()=>{this.pixiContainer.off(t,i);})}setRotation(t){return this.rotation=t,this}get rotation(){return new Radian(this.pixiContainer.rotation)}set rotation(t){this.pixiContainer.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.pixiContainer.zIndex}set zIndex(t){this.pixiContainer.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new Radian(this.pixiContainer.skew.x)}set skewX(t){this.pixiContainer.skew.x=t.value;}setSkewY(t){return this.skewY=t,this}get skewY(){return new Radian(this.pixiContainer.skew.y)}set skewY(t){this.pixiContainer.skew.y=t.value;}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.pixiContainer.sortableChildren}set sortableChildren(t){this.pixiContainer.sortableChildren=t;}setAlpha(t){return this.pixiContainer.alpha=t,this}get alpha(){return this.pixiContainer.alpha}set alpha(t){this.pixiContainer.alpha=t;}setInteractive(t){return this.interactive=t,this}get interactive(){return this.pixiContainer.interactive}set interactive(t){t?this.pixiContainer.eventMode="dynamic":this.pixiContainer.eventMode="none";}setCursor(t){return this.cursor=t,this}get cursor(){return this.pixiContainer.cursor}set cursor(t){this.pixiContainer.cursor=t;}getMask(){throw new Error("ContainerAttributes: mask is not available!")}ƀfz;setMask(t){return t?(this.pixiContainer.addChild(t.pixiContainer),this.pixiContainer.mask=t.getMask(),this.ƀfz=t):(this.ƀfz&&this.pixiContainer.removeChild(this.ƀfz.pixiContainer),this.pixiContainer.mask=null),this}hitTest(t){if(this.pixiContainer.parent)if(this.pixiContainer.hitArea){let e=this.pixiContainer.toLocal(t);return this.pixiContainer.hitArea.contains(e.x,e.y)}else return this.pixiContainer.getBounds().contains(t.x,t.y);else return false}ƀgf=false;ƀdb=false;ƀie=1;ƀv=1;setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgf}set mirror(t){this.ƀgf=t,this.ƀka();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdb}set flip(t){this.ƀdb=t,this.ƀka();}setScale(t){return this.scale=t,this}get scale(){return this.ƀie}set scale(t){this.ƀie=t,this.ƀka();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀv}set aspectRatio(t){this.ƀv=t,this.ƀka();}ƀka(){this.pixiContainer.scale.set(this.ƀie,this.ƀie),this.ƀv<1?this.pixiContainer.scale.x*=this.ƀv:this.ƀv>1&&(this.pixiContainer.scale.y/=this.ƀv),this.ƀgf&&(this.pixiContainer.scale.x*=-1),this.ƀdb&&(this.pixiContainer.scale.y*=-1);}};var w=2,kt=(function(n){return n[n.Normal=R.BLEND_MODES.NORMAL]="Normal",n[n.Add=R.BLEND_MODES.ADD]="Add",n[n.Screen=R.BLEND_MODES.SCREEN]="Screen",n[n.Luminosity=R.BLEND_MODES.LUMINOSITY]="Luminosity",n[n.ColorDodge=R.BLEND_MODES.COLOR_DODGE]="ColorDodge",n})({});var Ht=class{static{a(this,"GaussianValuesHelper");}static ƀdg(t,e){let i=e*e,r=1/(PI_360*i),s=-(t*t)/(2*i);return r*Math.exp(s)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),r=.005*i,s=NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<r)i-=l*2;else return true}),o=1/i,h=s.map(l=>l*o);return this.ƀbr(h)}static getValuesForLinearSamplingGauss(t){if(t===0)return [{offset:0,multiplier:1}];if(t===1)return [{offset:0,multiplier:.5},{offset:1,multiplier:.25}];{let e=ArrayHelper.createIntegerArray(Math.ceil(t*.75)).map(r=>this.ƀdg(r,t*.4)),i=e.reduce((r,s)=>r+s,0);return i=i*2-e[0],e=e.map(r=>r/i),this.ƀbr(e)}}static ƀbr(t){let e=[{offset:0,multiplier:t[0]}];for(let i=1;i<t.length-1;i+=2){let r=t[i]+t[i+1],s=i+t[i+1]/r;e.push({offset:s,multiplier:r});}if(t.length%2===0){let i=t[t.length-1],r=t.length-1;e.push({offset:r,multiplier:i});}return e}};var _e=class Se extends R.Filter{static{a(this,"BlurFilterPass");}ƀeu;static ƀeg(){return `
1
+ var cr=Object.defineProperty;var h=(o,t)=>cr(o,"name",{value:t,configurable:!0});import{Action as pr,ActionLib as dr}from"actions-lib";var G=class{static{h(this,"BardLegendsHardReset")}static{this.ƀeq=new pr}static{this.onHardReset=this.ƀeq.notifier}static hardReset(){dr.hardReset(),this.ƀeq.trigger()}};import"reflect-metadata";function d(){return function(o){let t=P.ƀea(o);o.$meta={paramtypes:t,type:"service"}}}h(d,"ServiceDecorator");var P=class{static{h(this,"Service")}static{this.ƀio=new Map}static get(t){let e=this.ƀio.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀia([],t.$meta.paramtypes);e=new t(...i),this.ƀio.set(t,e)}return e}static ƀea(t){let e=Reflect.getMetadata("design:paramtypes",t)||[];return e.some(i=>!i)&&console.error(`Circular dependency: ${t.name}`),e}static ƀia(t,e){let i=[...t];if(e.length>t.length){let s=e.slice(t.length).map(n=>{if(n&&n.$meta?.type==="service")return this.get(n)});i.push(...s)}return i}};G.onHardReset.subscribe(()=>{P.ƀio=new Map}).attachToRoot();var U=class{static{h(this,"ControllerLink")}constructor(){this.ƀbl=[],this.ƀhz=[]}trigger(t,...e){let i=this.ƀbl.find(r=>!!r[t]);if(i)return i[t](...e);throw new Error(`ServiceLink: no defined function with the name: "${t}", found in the linked controllers!`)}registerController(t){Reflect.ownKeys(t.constructor.prototype).filter(e=>e!=="constructor").map(e=>e.toString()).forEach(e=>{if(this.ƀhz.includes(e))throw new Error(`ServiceLink: the function is already registered, function name: "${e}"`);this.ƀhz.push(e)}),this.ƀbl.push(t)}};function et(o){return function(t){let e=P.ƀea(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else{let i=P.ƀia([],e);i.some(s=>s===void 0)&&console.error(i,e,t.name);let r=new t(...i);o.controllerLink.registerController(r)}t.$meta={type:"controller"}}}h(et,"ControllerDecorator");import{IDAttachable as fr}from"actions-lib";import{Action as Ye,SingleEvent as ur}from"actions-lib";var y=class o{static{h(this,"UpdateCycle")}static{this.ƀac=new Ye}static{this.beforeSceneUpdateAction=this.ƀac.notifier}static{this.ƀig=new Ye}static{this.sceneUpdateAction=this.ƀig.notifier}static{this.ƀf=new Ye}static{this.afterSceneUpdateAction=this.ƀf.notifier}static{this.ƀjr=0}static{this.ƀjy=void 0}static wait(t){let e=this.ƀjr+t;return ur.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i()}).attachToRoot();return()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀjy)this.ƀjy=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀjy=void 0}static triggerUpdateTick(t){this.ƀjy&&(t=this.ƀjy(this.ƀjr,t)),this.ƀjr+=t,this.ƀfo=t,t>0&&(o.ƀac.trigger({time:this.ƀjr,delta:t}),o.ƀig.trigger({time:this.ƀjr,delta:t}),o.ƀf.trigger({time:this.ƀjr,delta:t}))}static get lastDelta(){return this.ƀfo}static{this.ƀfo=0}};G.onHardReset.subscribe(()=>{y.ƀac.clear(),y.ƀig.clear(),y.ƀf.clear(),y.ƀjy=void 0,y.ƀjr=0}).attachToRoot();var F=class o{static{h(this,"EntityStoreHelper")}static{this.ƀav=new Map}static registerEntityClass(t){this.ƀav.set(t.id,new Map)}static registerEntity(t){this.ƀav.get(t.classID).set(t.id,t)}static unregisterEntity(t,e){let i=t.id;this.ƀav.get(i)?.delete(e)}static getEntity(t,e){return this.ƀav.get(t.id)?.get(e)}static getSingleton(t){let e=o.getEntities(t);if(e.length>1)throw new Error(`EntityStoreHelper: selectSingleton is called with an entity that has multiple instances! Name: "${this.name}"`);return e[0]}static getSingletonOrFail(t){let e=this.getSingleton(t);if(!e)throw new Error(`EntityStoreHelper: selectSingleton is called with an entity that has no instance! Name: "${this.name}"`);return e}static getEntities(t){let e=this.ƀav.get(t.id);return Array.from(e.values())}};G.onHardReset.subscribe(()=>{F.ƀav.clear()}).attachToRoot();var at=class o{static{h(this,"EntityViewsHelper")}static{this.ƀkh=new Map}static registerView(t,e){o.ƀkh.has(e)||o.ƀkh.set(e,[]);let i=o.ƀkh.get(e);i&&i.push(t),F.getEntities(e).forEach(s=>{this.ƀcg(s,t)})}static ƀcg(t,e){try{let i=P.ƀia([this],e.$meta.paramtypes);o.entityID=t.id;let r=new e(t,...i.slice(1));t.destroyed?r.destroy():t.ƀkg.ƀki.push(r)}catch(i){console.error(i)}}constructor(t){this.ƀcu=t,this.ƀki=[]}createViews(){if(!this.ƀcu.destroyed){let t=o.ƀkh.get(this.ƀcu.constructor);t&&t.forEach(e=>{o.ƀcg(this.ƀcu,e)})}}updateViews(t,e){for(let i=0;i<this.ƀki.length;i++){let r=this.ƀki[i];r.destroyed||r.update(t,e)}}destroyViews(){this.ƀki.forEach(t=>{t.destroy()})}};G.onHardReset.subscribe(()=>{at.ƀkh=new Map}).attachToRoot();function mt(){return function(o){o.$meta={type:"entity"},F.registerEntityClass(o)}}h(mt,"EntityDecorator");var $=class extends fr{static{h(this,"Entity")}static getInstanceByID(t){if(t)return F.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=F.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return F.getEntities(this)}constructor(){super(),this.ƀkg=new at(this),F.registerEntity(this),y.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀkg.updateViews(t.time,t.delta))}).attach(this)}destroy(){this.destroyed||(this.ƀkg.destroyViews(),F.unregisterEntity(this.constructor,this.id),super.destroy())}attach(t){return super.attach(t),this.ƀkg.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀkg.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀkg.createViews(),this}update(t,e){}};var gt=class extends ${static{h(this,"SingletonEntity")}static getInstance(){return F.getSingleton(this)}static getInstanceOrFail(){return F.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}"`)}};import{Action as mr,IDAttachable as gr,Variable as yr}from"actions-lib";function wr(){return function(o){return o.$meta={paramtypes:P.ƀea(o),type:"scene"},o}}h(wr,"SceneDecorator");var St=class o extends gr{static{h(this,"Scene")}static{this.ƀif=!1}static{this.ƀb=new yr(void 0)}static{this.activeScene=this.ƀb.notifier}static getActiveScene(){return o.ƀb.value}static getActiveSceneOrFail(){if(!o.ƀb.value)throw new Error("Scene: getActiveSceneOrFail is called when there is no active scene!");return o.ƀb.value}static isActive(){return o.ƀb.value instanceof this}static getInstance(){return o.ƀb.value instanceof this?o.ƀb.value:void 0}static getInstanceOrFail(){if(!o.ƀb.value)throw new Error("Scene: getInstance is called when there is no active scene!");if(!(o.ƀb.value instanceof this))throw new Error(`Scene: getInstance is called while "${this.name}" was not the active scene. Current scene is: "${o.ƀb.value}"!`);return o.ƀb.value}static open(...t){if(o.ƀif)throw new Error("Scene: you cannot open a scene while a scene is transitioning!");if(o.ƀb.value)throw new Error("Scene: you cannot open a scene while there is already another active scene!");let e=t[0];o.ƀif=!0;let i=P.ƀia([],this.$meta.paramtypes),r=new this(...i).attachToRoot();return o.ƀb.set(r),r.init(e).map(()=>(o.ƀif=!1,r)).chainToRoot()}constructor(){super(),this.ƀgk=new mr,this.onClose=this.ƀgk.notifier,y.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this)}close(...t){if(o.ƀb.value!==this)throw o.ƀif?new Error("Scene: you cannot close a scene while a scene is transitioning!"):new Error("Internal Error: Scene instance is accessed while it is not the active scene!");let e=t[0];return o.ƀif=!0,this.prepareToClose().map(()=>(super.destroy(),o.ƀb.set(void 0),o.ƀif=!1,this.ƀgk.trigger(e),e)).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};G.onHardReset.subscribe(()=>{St.ƀb.set(void 0)}).attachToRoot();import{IDAttachable as xr}from"actions-lib";function Xe(o){return function(t){t.$meta={paramtypes:P.ƀea(t),viewInstances:new Map,entity:o.entity,type:"view"},at.registerView(t,o.entity)}}h(Xe,"ViewDecorator");var Ut=class extends xr{static{h(this,"View")}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}constructor(){super(),this.attachToRoot(),this.ƀcv=at.entityID,this.ƀeg().set(this.ƀcv,this)}destroy(){this.destroyed||(super.destroy(),this.ƀeg().delete(this.ƀcv))}update(t,e){}ƀeg(){return this.constructor.$meta.viewInstances}};import{Radian as Tr,Vector as Er}from"helpers-lib";import{Rectangle as vr,Vector as br}from"helpers-lib";import Pr from"p2";var m=class o{static{h(this,"P2JSHelper")}static aabbToBoundingBox(t){return vr.fromRect({topLeft:{x:t.lowerBound[0],y:t.lowerBound[1]},bottomRight:{x:t.upperBound[0],y:t.upperBound[1]}})}static arrayToVector(t){return new br(t[0],t[1])}static vectorToArray(t){return[t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return(t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>o.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new Pr.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};import{Action as Cr}from"actions-lib";var Sr=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Y=new U,Ct=class{static{h(this,"PhysicsInternalGateway")}createBody(t,e,i,r,s){return Y.trigger("createBody",t,e,i,r,s)}getMaterial(t,e){return Y.trigger("getMaterial",t,e)}getMaterialDefinition(t,e){return Y.trigger("getMaterialDefinition",t,e)}getGroupConstant(t,e){return Y.trigger("getGroupConstant",t,e)}getMaskConstant(t,e){return Y.trigger("getMaskConstant",t,e)}addBody(t,e,i,r,s){return Y.trigger("addBody",t,e,i,r,s)}removeBody(t,e){return Y.trigger("removeBody",t,e)}subscribeToPhysicsStep(t,e){return Y.trigger("subscribeToPhysicsStep",t,e)}};Ct=Sr([d()],Ct);var b=class o extends ${static{h(this,"PhysicsEntity")}static{this.ƀgy=new Map}static{this.ƀhf=new Map}static getFromP2BodyID(t){return o.ƀgy.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀgy.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀhf.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀhf.values())}get area(){return this.ƀt}get mass(){return this.ƀga}get collisions(){return this.ƀax}constructor(t,e,i){super(),this.ƀgl=new Cr,this.onCollision=this.ƀgl.notifier,this.type="dynamic",this.ƀt=0,this.ƀga=0,this.ƀax=[],this.physicsWorldID=t,this.ƀhh=P.get(Ct);let r=this.ƀhh.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀhh.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀhg=this.ƀhh.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀhi=this.ƀhh.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀhh.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀt=this.p2Body.getArea(),this.ƀga=this.p2Body.mass,this.p2Body.position=m.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀhh.addBody(this.physicsWorldID,this.p2Body,e.addInEmptySpace,e.shapeDefinition.group,e.includeOnPathfinding))throw new Error("PhysicsEntity was not able to be added to the world!");o.ƀgy.set(this.p2Body.id,this),o.ƀhf.set(this.id,this)}destroy(){this.destroyed||(super.destroy(),this.ƀhh.removeBody(this.physicsWorldID,this.p2Body),o.ƀgy.delete(this.p2Body.id),o.ƀhf.delete(this.id))}canCollideWith(t){return m.arePhysicsGroupsCollidable(this.ƀhg,this.ƀhi,t.ƀhg,t.ƀhi)}ƀip(t){this.ƀax=t,t.length>0&&this.ƀgl.trigger(t)}};var $t=class extends b{static{h(this,"ImmovablePhysicsEntity")}constructor(t,e){super(t,e,"static"),this.position=m.arrayToVector(this.p2Body.position),this.rotation=new Tr(this.p2Body.angle)}convertToDTO(){return{entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:Er.zero,rotationalSpeed:0}}};import{Variable as pe}from"actions-lib";import{Radian as Ei,Vector as Ri}from"helpers-lib";var Ze=class extends ${static{h(this,"MovableEntity")}constructor(){super(),this.position=new pe(Ri.zero),this.rotation=new pe(Ei.get0),this.velocity=new pe(Ri.zero),this.rotationalSpeed=new pe(0),y.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀjg(t,e)}).attach(this)}ƀjg(t,e){this.position.value=this.position.value.add(this.velocity.value.multiplyNumber(e)),this.rotation.value=new Ei(this.rotation.value.value+this.rotationalSpeed.value*e)}};import{Variable as de}from"actions-lib";import{Radian as Ii,Vector as Ai}from"helpers-lib";var Ke=class extends b{static{h(this,"MovablePhysicsEntity")}constructor(t,e){super(t,e,"dynamic"),this.position=new de(Ai.zero),this.rotation=new de(Ii.get0),this.velocity=new de(Ai.zero),this.rotationalSpeed=new de(0),this.ƀex=!1,this.ƀey=!1,this.ƀfa=!1,this.ƀez=!1,this.ƀhc(),this.ƀfu(),P.get(Ct).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀjg(i,r)).attach(this)}convertToDTO(){return{entityID:this.id,classID:this.classID,position:this.position.value,rotation:this.rotation.value,velocity:this.velocity.value,rotationalSpeed:this.rotationalSpeed.value}}ƀjg(t,e){this.ƀex=!0,this.ƀey=!0,this.ƀfa=!0,this.ƀez=!0,this.ƀhc()}ƀhc(){this.position.value=m.arrayToVector(this.p2Body.position),this.rotation.value=new Ii(this.p2Body.angle),this.velocity.value=m.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity}ƀfu(){this.position.subscribe(t=>{this.ƀex?this.ƀex=!1:this.p2Body.position=[t.x,t.y]}).attach(this),this.rotation.subscribe(t=>{this.ƀey?this.ƀey=!1:this.p2Body.angle=t.value}).attach(this),this.velocity.subscribe(t=>{this.ƀfa?this.ƀfa=!1:this.p2Body.velocity=[t.x,t.y]}).attach(this),this.rotationalSpeed.subscribe(t=>{this.ƀez?this.ƀez=!1:this.p2Body.angularVelocity=t}).attach(this)}};var Qe=10.8,qe=10.01,it;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle"})(it||(it={}));var ht="border";import{Comparator as nr,GridNeighborType as vo,Rectangle as bo}from"helpers-lib";import{Random as Tt}from"helpers-lib";var X=class{static{h(this,"AnimationInterpolationFunctions")}static boomerangTime(t){return 1-Math.abs(t-.5)*2}static lineer(t){return t}static easeIn(t){return Math.pow(t,2)}static easeOut(t){return 1-Math.pow(1-t,2)}static easeInOut(t){return t<.5?2*t*t:(t-=1,1-2*t*t)}static easeInOutCubic(t){let e=2*t-2;return t<.5?4*Math.pow(t,3):(t-1)*Math.pow(e,2)+1}},Rr=class{static{h(this,"AnimationLineer")}start(){}multiplierFunction(t){return X.lineer(t)}},Ir=class{static{h(this,"AnimationEaseIn")}start(){}multiplierFunction(t){return X.easeIn(t)}},Ar=class{static{h(this,"AnimationEaseOut")}start(){}multiplierFunction(t){return X.easeOut(t)}},Or=class{static{h(this,"AnimationEaseInOut")}start(){}multiplierFunction(t){return X.easeInOut(t)}},Mr=class{static{h(this,"AnimationEaseInOutCubic")}start(){}multiplierFunction(t){return X.easeInOutCubic(t)}},Oi=class{static{h(this,"AnimationFlicker")}start(){this.ƀjs=new Array(10).fill(0),Tt.integerBetween(0,9),this.ƀjs[Tt.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(Tt.integerBetween(0,9),this.ƀjs[Tt.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(Tt.integerBetween(0,9),this.ƀjs[Tt.integerBetween(0,9)]=Math.random())}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀjs[e]}},S=class{static{h(this,"Animations")}static{this.lineer=new Rr}static{this.easeIn=new Ir}static{this.easeOut=new Ar}static{this.easeInOut=new Or}static{this.easeInOutCubic=new Mr}};import{Attachable as Dr,SingleEvent as Mi,Variable as Br}from"actions-lib";import{Comparator as Gr,MapToWeakRefs as Fr}from"helpers-lib";var _;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious"})(_||(_={}));var I;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop"})(I||(I={}));var O=class o{static{h(this,"Animator")}static{this.ƀj=new WeakMap}static ƀdh(t){let e=o.ƀj.get(t);return e||(e=new Fr,o.ƀj.set(t,e)),e}get animating(){return this.ƀgu!==void 0}get target(){return this.ƀjj}get value(){return this.ƀka||(this.ƀka=new Br(this.ƀjj)),this.ƀka.notifier}constructor(t,e,i){this.ƀjj=t,this.ƀgx={duration:200,animation:S.lineer,reAnimateHandling:_.ThrowError,completionHandling:I.StayInCurrentState,...i},this.ƀk=Gr.isArray(e)?e:[e],this.ƀfv(t,this.ƀk)}animate(t,e){let i={...this.ƀgx,...e};if(this.ƀgu)switch(i.reAnimateHandling){case _.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case _.IgnoreNewAnimation:return Mi.instant();case _.CompletePrevious:this.ƀiq(i.completionHandling,this.ƀgu.ƀhr,!0);break;default:{let s=i.reAnimateHandling;throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return Mi.create(s=>{let n=this.ƀk.reduce((p,f)=>(p[f]={ƀjd:this.ƀjj[f],ƀjl:t[f]},p),{}),a,l={ƀcr:i.duration,ƀcs:0,ƀhr:n,ƀbe:i.completionHandling,ƀl:i.animation,ƀbd:s};if(l.ƀbe!==I.Loop&&this.ƀfh(l)){this.ƀgu=void 0,s();return}else l.ƀl.start();let c=this.ƀgu;return this.ƀgu=l,a=y.beforeSceneUpdateAction.subscribe(p=>{l.ƀcs+=p.delta;let f=l.ƀcs>=l.ƀcr;if(f&&(l.ƀbe===I.Loop?(l.ƀcs%=l.ƀcr,l.ƀl.start(),f=!1):(this.ƀiq(l.ƀbe,l.ƀhr,!1),this.ƀgu=void 0,l.ƀbd())),!f){let g=l.ƀl.multiplierFunction(l.ƀcs/l.ƀcr),T=!1;for(let J=0;J<this.ƀk.length;J++){let ot=this.ƀk[J],Wt=l.ƀhr[ot],tt=(Wt.ƀjl-Wt.ƀjd)*g+Wt.ƀjd;tt!==this.ƀjj[ot]&&(T=!0,this.ƀjj[ot]=tt)}T&&this.ƀka?.set(this.ƀjj)}}).attachToRoot(),c?.ƀbd(),()=>{a.destroy(),this.ƀgu===l&&(this.ƀjj instanceof Dr&&this.ƀjj.destroyed||this.ƀiq(this.ƀgu.ƀbe,this.ƀgu.ƀhr,!0),this.ƀgu=void 0)}})}set(t){let e=!1;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjj[r]!==t[r]&&(e=!0,this.ƀjj[r]=t[r])}e&&this.ƀka?.set(this.ƀjj),this.ƀgu?.ƀbd()}completeAnimation(t){if(this.ƀgu){t=t??this.ƀgu.ƀbe,this.ƀiq(t,this.ƀgu.ƀhr,!0);let e=this.ƀgu.ƀbd;this.ƀgu=void 0,e()}}ƀfh(t){for(let e=0;e<this.ƀk.length;e++){let i=this.ƀk[e];if(this.ƀjj[i]!==t.ƀhr[i].ƀjl)return!1}return!0}ƀiq(t,e,i){switch(t){case I.ReturnToOriginal:this.ƀic(e);break;case I.StayInCurrentState:i||this.ƀfl(e);break;case I.JumpToEnd:this.ƀfl(e);break;case I.Loop:this.ƀic(e);break;default:{let r=t;throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀic(t){let e=!1;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjj[r]!==t[r].ƀjd&&(e=!0,this.ƀjj[r]=t[r].ƀjd)}e&&this.ƀka?.set(this.ƀjj)}ƀfl(t){let e=!1;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjj[r]!==t[r].ƀjl&&(e=!0,this.ƀjj[r]=t[r].ƀjl)}e&&this.ƀka?.set(this.ƀjj)}ƀfv(t,e){let i=o.ƀdh(t);for(let r of e){if(i.has(r))throw new Error(`Animator: target property is already animated! Target: "${JSON.stringify(t,void 0,2)}", Property: "${r}"`);i.set(r,this)}}};import{Comparator as $r,Rectangle as zr,Vector as Fi}from"helpers-lib";import{ActionSubscription as _r,IDAttachable as Lr}from"actions-lib";import{Radian as ue,Vector as zt}from"helpers-lib";import*as Di from"pixi.js";var kt;(function(o){o.Click="click",o.MouseOver="mouseover",o.MouseOut="mouseout",o.PointerDown="pointerdown",o.PointerUp="pointerup",o.PointerUpOutside="pointerupoutside",o.PointerMove="pointermove",o.PointerCancel="pointercancel",o.PointerOver="pointerover",o.PointerOut="pointerout",o.PointerEnter="pointerenter",o.PointerLeave="pointerleave",o.Added="added",o.Removed="removed",o.Update="update",o.Change="change"})(kt||(kt={}));var ti;(function(o){o.Default="default",o.Pointer="pointer"})(ti||(ti={}));var fe=class extends Lr{static{h(this,"ContainerAttributes")}constructor(){super(),this.ƀge=!1,this.ƀda=!1,this.ƀid=1,this.ƀv=1,this.pixiContainer=new Di.Container}get size(){return this.getSize()}set size(t){this.setSize(t)}getSize(){return new zt(this.pixiContainer.width,this.pixiContainer.height)}setSize(t){return this.pixiContainer.width=t.x,this.pixiContainer.height=t.y,this}setPosition(t,e){if(e?.holdFrom){let i=this.pixiContainer.getLocalBounds(),r=new zt(this.pixiContainer.scale.x,this.pixiContainer.scale.y),s=new zt(i.x,i.y).multiply(r),n=new zt(i.width,i.height).multiply(r),a=s.add(n.multiply(e.holdFrom));t=t.subtract(a)}return e?.round!==!1&&(t=t.round({rollHalfsDown:!0})),this.position=t,this}get position(){return new zt(this.pixiContainer.x,this.pixiContainer.y)}set position(t){this.pixiContainer.position=t}get x(){return this.pixiContainer.x}set x(t){this.pixiContainer.x=t}get y(){return this.pixiContainer.y}set y(t){this.pixiContainer.y=t}on(t,e){let i=h(r=>e(),"handle");return this.pixiContainer.on(t,i),new _r(()=>{this.pixiContainer.off(t,i)})}setRotation(t){return this.rotation=t,this}get rotation(){return new ue(this.pixiContainer.rotation)}set rotation(t){this.pixiContainer.rotation=t.value}get rotationValue(){return this.rotation.value}set rotationValue(t){this.rotation=new ue(t)}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.pixiContainer.zIndex}set zIndex(t){this.pixiContainer.zIndex=t}setSkewX(t){return this.skewX=t,this}get skewX(){return new ue(this.pixiContainer.skew.x)}set skewX(t){this.pixiContainer.skew.x=t.value}setSkewY(t){return this.skewY=t,this}get skewY(){return new ue(this.pixiContainer.skew.y)}set skewY(t){this.pixiContainer.skew.y=t.value}setSortableChildren(t){return this.sortableChildren=t,this}get sortableChildren(){return this.pixiContainer.sortableChildren}set sortableChildren(t){this.pixiContainer.sortableChildren=t}setAlpha(t){return this.pixiContainer.alpha=t,this}get alpha(){return this.pixiContainer.alpha}set alpha(t){this.pixiContainer.alpha=t}setInteractive(t){return this.interactive=t,this}get interactive(){return this.pixiContainer.interactive}set interactive(t){t?this.pixiContainer.eventMode="dynamic":this.pixiContainer.eventMode="none"}setCursor(t){return this.cursor=t,this}get cursor(){return this.pixiContainer.cursor}set cursor(t){this.pixiContainer.cursor=t}getMask(){throw new Error("ContainerAttributes: mask is not available!")}setMask(t){return t?(this.pixiContainer.addChild(t.pixiContainer),this.pixiContainer.mask=t.getMask(),this.ƀfy=t):(this.ƀfy&&this.pixiContainer.removeChild(this.ƀfy.pixiContainer),this.pixiContainer.mask=null),this}hitTest(t){if(this.pixiContainer.parent)if(this.pixiContainer.hitArea){let e=this.pixiContainer.toLocal(t);return this.pixiContainer.hitArea.contains(e.x,e.y)}else return this.pixiContainer.getBounds().contains(t.x,t.y);else return!1}setMirror(t=!1){return this.mirror=t,this}get mirror(){return this.ƀge}set mirror(t){this.ƀge=t,this.ƀjz()}setFlip(t=!1){return this.flip=t,this}get flip(){return this.ƀda}set flip(t){this.ƀda=t,this.ƀjz()}setScale(t){return this.scale=t,this}get scale(){return this.ƀid}set scale(t){this.ƀid=t,this.ƀjz()}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀv}set aspectRatio(t){this.ƀv=t,this.ƀjz()}ƀjz(){this.pixiContainer.scale.set(this.ƀid,this.ƀid),this.ƀv<1?this.pixiContainer.scale.x*=this.ƀv:this.ƀv>1&&(this.pixiContainer.scale.y/=this.ƀv),this.ƀge&&(this.pixiContainer.scale.x*=-1),this.ƀda&&(this.pixiContainer.scale.y*=-1)}};import{Comparator as Wr,Vector as Ur}from"helpers-lib";import*as Gi from"pixi.js";import"pixi.js";var R=2,Et;(function(o){o[o.Normal=0]="Normal",o[o.Add=1]="Add",o[o.Screen=3]="Screen",o[o.Luminosity=16]="Luminosity",o[o.ColorDodge=7]="ColorDodge"})(Et||(Et={}));import{NumberHelper as ge,Vector as Hr}from"helpers-lib";import*as Jt from"pixi.js";import{ArrayHelper as Vr,NumberHelper as Nr,PI_360 as jr}from"helpers-lib";var me=class{static{h(this,"GaussianValuesHelper")}static ƀdf(t,e){let i=e*e,r=1/(jr*i),s=-(t*t)/(2*i);return r*Math.exp(s)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),r=.005*i,s=Nr.pascalTriangleRow(e).slice(t).filter(l=>{if(l<r)i-=l*2;else return!0}),n=1/i,a=s.map(l=>l*n);return this.ƀbq(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=Vr.createIntegerArray(Math.ceil(t*.75)).map(r=>this.ƀdf(r,t*.4)),i=e.reduce((r,s)=>r+s,0);return i=i*2-e[0],e=e.map(r=>r/i),this.ƀbq(e)}}static ƀbq(t){let e=[{offset:0,multiplier:t[0]}];for(let i=1;i<t.length-1;i+=2){let r=t[i]+t[i+1],s=i+t[i+1]/r;e.push({offset:s,multiplier:r})}if(t.length%2===0){let i=t[t.length-1],r=t.length-1;e.push({offset:r,multiplier:i})}return e}};var Bi=class ei extends Jt.Filter{static{h(this,"BlurFilterPass")}static ƀef(){return`
2
2
  attribute vec2 aVertexPosition;
3
3
  attribute vec2 aTextureCoord;
4
4
 
@@ -10,7 +10,7 @@ import {Action,ActionLib,SingleEvent,IDAttachable,Variable,Attachable,ActionSubs
10
10
  gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
11
11
  vTextureCoord = aTextureCoord;
12
12
  }
13
- `}static ƀdp(t,e){let i=`
13
+ `}static ƀdo(t,e){let i=`
14
14
  uniform sampler2D uSampler;
15
15
 
16
16
  varying vec2 vTextureCoord;
@@ -22,14 +22,14 @@ import {Action,ActionLib,SingleEvent,IDAttachable,Variable,Attachable,ActionSubs
22
22
  }
23
23
 
24
24
  void main() {
25
- gl_FragColor = texture2D(uSampler, vTextureCoord) * ${NumberHelper.toFloatString(t[0].multiplier)};
25
+ gl_FragColor = texture2D(uSampler, vTextureCoord) * ${ge.toFloatString(t[0].multiplier)};
26
26
  float offset;`;for(let r=1;r<t.length;r++){let s=`vec2(${e?"offset, 0.0":"0.0, offset"})`;i+=`
27
27
 
28
- offset = ${NumberHelper.toFloatString(t[r].offset)} * pixelSize;
29
- iterate(${s}, ${NumberHelper.toFloatString(t[r].multiplier)}, gl_FragColor);
30
- iterate(${s} * -1.0, ${NumberHelper.toFloatString(t[r].multiplier)}, gl_FragColor);`;}return i+=`
28
+ offset = ${ge.toFloatString(t[r].offset)} * pixelSize;
29
+ iterate(${s}, ${ge.toFloatString(t[r].multiplier)}, gl_FragColor);
30
+ iterate(${s} * -1.0, ${ge.toFloatString(t[r].multiplier)}, gl_FragColor);`}return i+=`
31
31
  }
32
- `,i}constructor(t,e){super(Se.ƀeg(),Se.ƀdp(Ht.getValuesForLinearSamplingGauss(t),e)),this.ƀeu=e,this.resolution=w;}apply(t,e,i,r){this.uniforms.pixelSize=this.ƀeu?1/(e.width*w):1/(e.height*w),t.applyFilter(this,e,i,r);}},lt=class extends R.Filter{static{a(this,"BlurFilter");}ƀji;ƀew;ƀkf;constructor(t=new Vector$1(2,2)){if(super(),this.ƀji=t,this.resolution=w,this.ƀji=t.multiplyNumber(w).floor(),this.ƀji.x<0||this.ƀji.y<0)throw new Error("BlurFilterLinearSampling: Strength * Resolution must be greater than 0");if(this.ƀji.x>100||this.ƀji.y>100)throw new Error("BlurFilterLinearSampling: Strength * Resolution cannot be higher than 100");this.ƀew=new _e(this.ƀji.x,true),this.ƀkf=new _e(this.ƀji.y,false),this.padding=Math.max(this.ƀji.x,this.ƀji.y);}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀkf.apply(t,e,s,R.CLEAR_MODES.CLEAR),this.ƀew.apply(t,s,i,r),t.returnFilterTexture(s);}get blendMode(){return this.ƀew.blendMode}set blendMode(t){this.ƀew.blendMode=t,this.ƀkf.blendMode=t;}};var Ut=class{static{a(this,"Filters");}ƀbh;ƀba;ƀhw=1;get red(){return this.ƀhw}set red(t){this.ƀhw=t,this.ƀhx();}ƀek=1;get green(){return this.ƀek}set green(t){this.ƀek=t,this.ƀhx();}ƀaf=1;get blue(){return this.ƀaf}set blue(t){this.ƀaf=t,this.ƀhx();}ƀal=1;get brightness(){return this.ƀal}set brightness(t){this.ƀal=t,this.ƀhx();}ƀbl=1;get contrast(){return this.ƀbl}set contrast(t){this.ƀbl=t,this.ƀhx();}ƀah;ƀag;get blur(){return this.ƀag}set blur(t){let e=Comparator.isNumber(t)?new Vector$1(t,t):t;(this.ƀag&&e&&!this.ƀag.isEqual(e)||this.ƀag&&!e||!this.ƀag&&e)&&(this.ƀag=e,this.ƀah&&(this.ƀah.destroy(),this.ƀah=void 0),e&&(this.ƀah=new lt(e),this.ƀgp()));}constructor(t){this.ƀbh=t,this.ƀgp();}removeColorFilter(){this.ƀba?.destroy(),this.ƀba=void 0,this.ƀgp();}ƀhx(){this.ƀhw===1&&this.ƀek===1&&this.ƀaf===1&&this.ƀal===1&&this.ƀbl===1?this.ƀba&&(this.ƀba.destroy(),this.ƀba=void 0,this.ƀgp()):(this.ƀba||(this.ƀba=new R.ColorMatrixFilter,this.ƀba.resolution=w,this.ƀgp()),this.ƀba.matrix=[this.ƀhw*this.ƀbl,0,0,0,this.ƀal-1,0,this.ƀek*this.ƀbl,0,0,this.ƀal-1,0,0,this.ƀaf*this.ƀbl,0,this.ƀal-1,0,0,0,1,0]);}ƀgp(){let t=[];this.ƀah&&t.push(this.ƀah),this.ƀba&&t.push(this.ƀba),this.ƀbh.filters=t;}};var c=class n extends jt{static{a(this,"Container");}static allContainers=new Map;filters;addChildTo=this;defaultChildOptions={addUnder:false,cropOverflowingParts:false};constructor(){super(),n.allContainers.set(this.id,this),this.filters=new Ut(this.pixiContainer);}destroy(){this.destroyed||(super.destroy(),n.allContainers.delete(this.id),!this.pixiContainer.destroyed&&this.pixiContainer.destroy());}getBoundingMask(){if(this.addChildTo!==this)return this.addChildTo.getBoundingMask();throw new Error(`Container: bounding mask cannot be used without bounding shapes. Display Object: "${this.id}"!`)}displayParent(t,e){let i;if(Comparator.isNumber(t)){if(i=n.allContainers.get(t),!i)throw new Error(`Container: parent not found! id: ${t}`)}else i=t;let r={addUnder:i.defaultChildOptions.addUnder,cropOverflowingParts:i.defaultChildOptions.cropOverflowingParts,...e};if(r.addUnder?i.addChildTo.pixiContainer.addChildAt(this.pixiContainer,0):i.addChildTo.pixiContainer.addChild(this.pixiContainer),r.cropOverflowingParts)if(i)this.pixiContainer.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}get boundingBox(){let t=this.pixiContainer.getLocalBounds();return new Rectangle(new Vector$1(t.x,t.y),new Vector$1(t.x+t.width,t.y+t.height))}};var b=class{static{a(this,"GameAssets");}static ƀic=new Map;static ƀo=0;static getAsset(t){let e=this.ƀic.get(t);if(e)return e;throw new Error(`Game Assets: Resource not found! Key: "${t}"`)}static insertAsset(t,e){return e||(e=`a-${this.ƀo++}`),this.ƀic.set(e,t),e}static destroyAsset(t){let e=this.ƀic.get(t);e&&(e.destroy(true),this.ƀic.delete(t));}static async loadGameAssets(t){let e=new Map,i=[];t.forEach(s=>{if(!Comparator.isString(s.url))throw new Error(`GameAssets: source url should be a string: ${s.url}`);let o=e.get(s.url);o?o.push(s.id):(e.set(s.url,[s.id]),i.push({url:s.url,callback:a(h=>{if(h instanceof R.Texture&&(h.id=s.id),o=e.get(s.url),o)o.forEach(l=>{this.ƀic.set(l,h);});else throw new Error(`GameAssets: unexpected error, nameGroup is not found! "./"! ${s}`)},"callback")}));});let r=performance.now();return Promise.all(i.map(s=>R.Assets.load(s.url))).then(s=>{let o=performance.now();console.info("Asset load completed in: ",Math.round(o-r)/1e3," seconds"),s.forEach((h,l)=>{i[l].callback(h);});}).catch(s=>{throw new Error(`GameAssets: during asset loading, an error occured: ${s}`)})}};var xt=class{static{a(this,"PositionConversionHelper");}static includeScaleInScreenPosition(t,e,i){if(e!==1){let r=Vector$1.fromTo(i,t).multiplyNumber(1/e);return i.add(r)}else return t}static normalizePolygonByAnchor(t,e,i){let r=new Vector$1(e.x*i.x,e.y*i.y);return t.map(s=>s.map(o=>r.to(Vector$1.fromVec2(o))))}},_t=class{static{a(this,"CompositeHitArea");}ƀiw;constructor(t,e,i){this.ƀiw=t.map(r=>new R.Polygon(r.map(s=>new R.Point(s.x,s.y))));}contains(t,e){return this.ƀiw.some(i=>i.contains(t,e))}};var dr=(function(n){return n[n.Instant=1]="Instant",n[n.EaseInOut=2]="EaseInOut",n[n.EaseOut=3]="EaseOut",n})({});function fr(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(fr,"_ts_decorate");var G=class extends Y{static{a(this,"CameraEntity");}position=new Variable(Vector$1.zero);offset=new Variable(Vector$1.zero);targetPosition=new Variable(void 0);focusingNewTargetInfo=new Variable(void 0)};G=fr([ft()],G);function mr(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(mr,"_ts_decorate");function Xe(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(Xe,"_ts_metadata");var J=class extends mt{static{a(this,"CameraView");}ƀcv;ƀif=new c().setAlpha(0).displayParent(f.instance.stage).attach(this);ƀad=O.createRectangle(new Vector$1(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(0).displayParent(f.instance.stage).attach(this);ƀab=new c().displayParent(this.ƀif).attach(this);ƀaq=new c().displayParent(this.ƀif).attach(this);ƀdf=new c().setSortableChildren(true).displayParent(this.ƀif).attach(this);ƀap=new c().setSortableChildren(true).displayParent(this.ƀaq).attach(this);ƀde=new c().setSortableChildren(true).setZIndex(20).displayParent(this.ƀap).attach(this);ƀfy=new c().setSortableChildren(true).setZIndex(10).displayParent(this.ƀap).attach(this);ƀaa=new c().setZIndex(0).displayParent(this.ƀap).attach(this);ƀh=new L(this.ƀif,"alpha",{duration:500,animation:x.easeInOutCubic,reAnimateHandling:H.CompletePrevious,completionHandling:$.StayInCurrentState});ƀae=new L(this.ƀad,"alpha",{duration:500,animation:x.easeInOutCubic,reAnimateHandling:H.CompletePrevious,completionHandling:$.StayInCurrentState});constructor(t){super(),this.ƀcv=t,f.instance.screenSize.subscribe(e=>{this.ƀad.aspectRatio=e.x/e.y,this.ƀad.scale=Math.max(e.x,e.y),this.ƀad.setPosition(Vector$1.zero,{holdFrom:Vector$1.zero});}).attach(this),f.instance.setScreenPositionToStagePositionFunction(e=>new Vector$1(e.x-this.ƀap.position.x-this.ƀaq.position.x,e.y-this.ƀap.position.y-this.ƀaq.position.y)),this.ƀcv.position.subscribe(e=>{this.ƀap.position=this.ƀbq(e);}).attach(this),this.ƀcv.offset.subscribe(e=>{this.ƀaq.position=e;}).attach(this),this.appear(true,"alpha");}destroy(){this.destroyed||(super.destroy(),f.instance.resetScreenPositionToStagePositionFunction());}getLayers(){return {backgroundScreen:this.ƀab.id,background:this.ƀaa.id,main:this.ƀfy.id,foreground:this.ƀde.id,foregroundScreen:this.ƀdf.id}}appear(t,e){switch(e){case "alpha":return this.ƀae.set({alpha:0}),this.ƀh.set({alpha:t?0:1}),this.ƀh.animate({alpha:t?1:0}).chain(this);case "pureBlack":return this.ƀh.set({alpha:1}),this.ƀae.set({alpha:t?1:0}),this.ƀae.animate({alpha:t?0:1}).chain(this);case "instant":return this.ƀh.set({alpha:t?1:0}),this.ƀae.set({alpha:t?0:1}),SingleEvent.instant();default:{throw new Error('Switch ended with value "never".')}}}ƀbq(t){return Vector$1.fromTo(t,f.instance.getScreenSizeCenter())}};J=mr([me({entity:G}),Xe("design:type",Function),Xe("design:paramtypes",[typeof G>"u"?Object:G])],J);function xr(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(xr,"_ts_decorate");var Z=new D,q=class{static{a(this,"CameraGateway");}createCamera(){return Z.trigger("createCamera")}update(t,e){return Z.trigger("update",t,e)}setPosition(t){return Z.trigger("setPosition",t)}setTransition(t){return Z.trigger("setTransition",t)}getCameraPosition(){return Z.trigger("getCameraPosition")}};q=xr([S()],q);function wr(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(wr,"_ts_decorate");function Ze(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(Ze,"_ts_metadata");var St=class{static{a(this,"CameraController");}ƀar;constructor(t){this.ƀar=t;}createCamera(){return this.ƀar.createCamera().id}update(t,e){this.ƀar.update(t,e);}setPosition(t){this.ƀar.setPosition(t);}setTransition(t){this.ƀar.setTransition(t);}getCameraPosition(){return this.ƀar.getCameraPosition()}};St=wr([k({controllerLink:Z}),Ze("design:type",Function),Ze("design:paramtypes",[typeof CameraService>"u"?Object:CameraService])],St);function Sr(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Sr,"_ts_decorate");var Yt=new D,K=class{static{a(this,"CameraViewGateway");}getLayers(){return Yt.trigger("getLayers")}appear(t,e){return Yt.trigger("appear",t,e)}};K=Sr([S()],K);function br(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(br,"_ts_decorate");var bt=class{static{a(this,"CameraViewController");}getLayers(){let t=G.getInstanceOrFail().id;return J.getInstanceOrFail(t).getLayers()}appear(t,e){let i=G.getInstanceOrFail().id;return J.getInstanceOrFail(i).appear(t,e)}};bt=br([k({controllerLink:Yt})],bt);var Pt=class{static{a(this,"Camera");}layers;ƀao;ƀas;get position(){return this.ƀao.getCameraPosition()}constructor(){this.ƀao=m.get(q),this.ƀas=m.get(K),this.ƀao.createCamera(),this.layers=this.ƀas.getLayers();}setPosition(t){this.ƀao.setPosition(t);}setTransition(t){this.ƀao.setTransition(t);}appear(t,e="alpha"){return this.ƀas.appear(t,e)}};var f=class n{static{a(this,"Game");}static ƀfh;static get instance(){return this.ƀfh}static pause=Reducer.createOr();static ƀan;static get camera(){return this.ƀan}static get time(){return d.ƀjs}static ƀiu;static get setupOptions(){return this.ƀiu}stage;renderer;ƀik=new Variable(Vector$1.zero);screenSize=this.ƀik.notifier;getScreenSize(){return this.ƀik.value}ƀil=new Variable(Vector$1.zero);screenSizeCenter=this.ƀil.notifier;getScreenSizeCenter(){return this.ƀil.value}devMode=false;ƀhn;ƀbg;ƀij;constructor(t){if(this.resetScreenPositionToStagePositionFunction(),n.ƀfh)throw new Error("There can be only one Game instance!");this.ƀbg={screenResolution:void 0,devMode:false,backgroundColor:ColorHelper.black,...t},this.devMode=this.ƀbg.devMode||false,this.ƀhn=new R.Application({backgroundColor:this.ƀbg.backgroundColor,autoStart:false,antialias:w<1.5,resolution:w,width:this.ƀbg.screenResolution?.width,height:this.ƀbg.screenResolution?.height,resizeTo:this.ƀbg.screenResolution===void 0?window:void 0});}async setup(t){n.ƀiu=t,document.body.appendChild(this.ƀhn.view),await Promise.all([b.loadGameAssets(t.assetDefinitions)]),n.ƀfh=this,this.stage=new c().attachToRoot(),this.stage.pixiContainer=this.ƀhn.stage,this.renderer=this.ƀhn.renderer,this.ƀit(),this.stage.sortableChildren=true,globalThis.ƀa=this.ƀhn,window.addEventListener("resize",e=>{setTimeout(()=>this.ƀit());}),n.ƀan=new Pt,this.ƀhn.start(),this.ƀhn.ticker.add(()=>{d.triggerUpdateTick(this.ƀhn.ticker.deltaMS);});}setResolution(t){this.ƀhn.renderer.resolution=t,this.ƀhn.renderer.resize(this.ƀhn.screen.width,this.ƀhn.screen.height);}screenPositonToStagePosition(t){let e=xt.includeScaleInScreenPosition(t,n.instance.stage.scale,n.instance.getScreenSizeCenter());return this.ƀij(e)}setScreenPositionToStagePositionFunction(t){this.ƀij=t;}resetScreenPositionToStagePositionFunction(){this.ƀij=t=>t;}destroyAsset(t){b.destroyAsset(t);}ƀit(){let t=new Vector$1(this.ƀhn.screen.width,this.ƀhn.screen.height);this.ƀik.value=t,this.ƀil.value=t.multiplyNumber(.5).round();}};var Zt=class n extends R.Filter{static{a(this,"ExpandWithColorFilter");}ƀcx;static ƀeg(){return `
32
+ `,i}constructor(t,e){super(ei.ƀef(),ei.ƀdo(me.getValuesForLinearSamplingGauss(t),e)),this.ƀet=e,this.resolution=R}apply(t,e,i,r){this.uniforms.pixelSize=this.ƀet?1/(e.width*R):1/(e.height*R),t.applyFilter(this,e,i,r)}},Rt=class extends Jt.Filter{static{h(this,"BlurFilter")}constructor(t=new Hr(2,2)){if(super(),this.ƀjh=t,this.resolution=R,this.ƀjh=t.multiplyNumber(R).floor(),this.ƀjh.x<0||this.ƀjh.y<0)throw new Error("BlurFilterLinearSampling: Strength * Resolution must be greater than 0");if(this.ƀjh.x>100||this.ƀjh.y>100)throw new Error("BlurFilterLinearSampling: Strength * Resolution cannot be higher than 100");this.ƀev=new Bi(this.ƀjh.x,!0),this.ƀke=new Bi(this.ƀjh.y,!1),this.padding=Math.max(this.ƀjh.x,this.ƀjh.y)}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀke.apply(t,e,s,Jt.CLEAR_MODES.CLEAR),this.ƀev.apply(t,s,i,r),t.returnFilterTexture(s)}get blendMode(){return this.ƀev.blendMode}set blendMode(t){this.ƀev.blendMode=t,this.ƀke.blendMode=t}};var ye=class{static{h(this,"Filters")}get red(){return this.ƀhv}set red(t){this.ƀhv=t,this.ƀhw()}get green(){return this.ƀej}set green(t){this.ƀej=t,this.ƀhw()}get blue(){return this.ƀaf}set blue(t){this.ƀaf=t,this.ƀhw()}get brightness(){return this.ƀak}set brightness(t){this.ƀak=t,this.ƀhw()}get contrast(){return this.ƀbk}set contrast(t){this.ƀbk=t,this.ƀhw()}get blur(){return this.ƀag}set blur(t){let e=Wr.isNumber(t)?new Ur(t,t):t;(this.ƀag&&e&&!this.ƀag.isEqual(e)||this.ƀag&&!e||!this.ƀag&&e)&&(this.ƀag=e,this.ƀah&&(this.ƀah.destroy(),this.ƀah=void 0),e&&(this.ƀah=new Rt(e),this.ƀgo()))}constructor(t){this.ƀbg=t,this.ƀhv=1,this.ƀej=1,this.ƀaf=1,this.ƀak=1,this.ƀbk=1,this.ƀgo()}removeColorFilter(){this.ƀaz?.destroy(),this.ƀaz=void 0,this.ƀgo()}ƀhw(){this.ƀhv===1&&this.ƀej===1&&this.ƀaf===1&&this.ƀak===1&&this.ƀbk===1?this.ƀaz&&(this.ƀaz.destroy(),this.ƀaz=void 0,this.ƀgo()):(this.ƀaz||(this.ƀaz=new Gi.ColorMatrixFilter,this.ƀaz.resolution=R,this.ƀgo()),this.ƀaz.matrix=[this.ƀhv*this.ƀbk,0,0,0,this.ƀak-1,0,this.ƀej*this.ƀbk,0,0,this.ƀak-1,0,0,this.ƀaf*this.ƀbk,0,this.ƀak-1,0,0,0,1,0])}ƀgo(){let t=[];this.ƀah&&t.push(this.ƀah),this.ƀaz&&t.push(this.ƀaz),this.ƀbg.filters=t}};var u=class o extends fe{static{h(this,"Container")}static{this.allContainers=new Map}constructor(){super(),this.addChildTo=this,this.defaultChildOptions={addUnder:!1,cropOverflowingParts:!1},o.allContainers.set(this.id,this),this.filters=new ye(this.pixiContainer)}destroy(){this.destroyed||(super.destroy(),o.allContainers.delete(this.id),!this.pixiContainer.destroyed&&this.pixiContainer.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($r.isNumber(t)){if(i=o.allContainers.get(t),!i)throw new Error(`Container: parent not found! id: ${t}`)}else i=t;let r={addUnder:i.defaultChildOptions.addUnder,cropOverflowingParts:i.defaultChildOptions.cropOverflowingParts,...e};if(r.addUnder?i.addChildTo.pixiContainer.addChildAt(this.pixiContainer,0):i.addChildTo.pixiContainer.addChild(this.pixiContainer),r.cropOverflowingParts)if(i)this.pixiContainer.mask=i.getBoundingMask().pixiSprite;else throw new Error("Container: cropOverflowingParts can only be used with Container parent!");return this}get boundingBox(){let t=this.pixiContainer.getLocalBounds();return new zr(new Fi(t.x,t.y),new Fi(t.x+t.width,t.y+t.height))}};import{ColorHelper as ai,PI_360 as ys,Radian as ws,Vector as xs}from"helpers-lib";import*as V from"pixi.js";import{Reducer as os,Variable as Vi}from"actions-lib";import{ColorHelper as ns,Vector as ni}from"helpers-lib";import*as Ni from"pixi.js";import{Comparator as kr}from"helpers-lib";import*as we from"pixi.js";var M=class{static{h(this,"GameAssets")}static{this.ƀib=new Map}static{this.ƀo=0}static getAsset(t){let e=this.ƀib.get(t);if(e)return e;throw new Error(`Game Assets: Resource not found! Key: "${t}"`)}static insertAsset(t,e){return e||(e=`a-${this.ƀo++}`),this.ƀib.set(e,t),e}static destroyAsset(t){let e=this.ƀib.get(t);e&&(e.destroy(!0),this.ƀib.delete(t))}static async loadGameAssets(t){let e=new Map,i=[];t.forEach(s=>{if(!kr.isString(s.url))throw new Error(`GameAssets: source url should be a string: ${s.url}`);let n=e.get(s.url);n?n.push(s.id):(e.set(s.url,[s.id]),i.push({url:s.url,callback:h(a=>{if(a instanceof we.Texture&&(a.id=s.id),n=e.get(s.url),n)n.forEach(l=>{this.ƀib.set(l,a)});else throw new Error(`GameAssets: unexpected error, nameGroup is not found! "./"! ${s}`)},"callback")}))});let r=performance.now();return Promise.all(i.map(s=>we.Assets.load(s.url))).then(s=>{let n=performance.now();console.info("Asset load completed in: ",Math.round(n-r)/1e3," seconds"),s.forEach((a,l)=>{i[l].callback(a)})}).catch(s=>{throw new Error(`GameAssets: during asset loading, an error occured: ${s}`)})}};import{Vector as ii}from"helpers-lib";import*as ve from"pixi.js";var Yt=class{static{h(this,"PositionConversionHelper")}static includeScaleInScreenPosition(t,e,i){if(e!==1){let r=ii.fromTo(i,t).multiplyNumber(1/e);return i.add(r)}else return t}static normalizePolygonByAnchor(t,e,i){let r=new ii(e.x*i.x,e.y*i.y);return t.map(s=>s.map(n=>r.to(ii.fromVec2(n))))}},xe=class{static{h(this,"CompositeHitArea")}constructor(t,e,i){this.ƀiv=t.map(r=>new ve.Polygon(r.map(s=>new ve.Point(s.x,s.y))))}contains(t,e){return this.ƀiv.some(i=>i.contains(t,e))}};var Jr=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},yt=new U,It=class{static{h(this,"CameraGateway")}createCamera(){return yt.trigger("createCamera")}update(t,e){return yt.trigger("update",t,e)}setPosition(t){return yt.trigger("setPosition",t)}setTransition(t){return yt.trigger("setTransition",t)}getCameraPosition(){return yt.trigger("getCameraPosition")}};It=Jr([d()],It);var Yr=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},be=new U,Xt=class{static{h(this,"CameraViewGateway")}getLayers(){return be.trigger("getLayers")}appear(t,e){return be.trigger("appear",t,e)}};Xt=Yr([d()],Xt);var _i;(function(o){o.BackgroundScreen="backgroundScreen",o.Background="background",o.Main="main",o.Foreground="foreground",o.ForegroundScreen="foregroundScreen"})(_i||(_i={}));var lt;(function(o){o[o.Instant=1]="Instant",o[o.EaseInOut=2]="EaseInOut",o[o.EaseOut=3]="EaseOut"})(lt||(lt={}));import{SingleEvent as Qr}from"actions-lib";import{ColorHelper as qr,Vector as Zt}from"helpers-lib";import{Variable as Pe}from"actions-lib";import{Vector as Li}from"helpers-lib";var Xr=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},L=class extends gt{static{h(this,"CameraEntity")}constructor(){super(...arguments),this.position=new Pe(Li.zero),this.offset=new Pe(Li.zero),this.targetPosition=new Pe(void 0),this.focusingNewTargetInfo=new Pe(void 0)}};L=Xr([mt()],L);var Zr=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Kr=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},At=class extends Ut{static{h(this,"CameraView")}constructor(t){super(),this.ƀcu=t,this.ƀie=new u().setAlpha(0).displayParent(w.instance.stage).attach(this),this.ƀad=E.createRectangle(new Zt(1,1),qr.black).toSprite({cache:!0}).setAlpha(0).displayParent(w.instance.stage).attach(this),this.ƀab=new u().displayParent(this.ƀie).attach(this),this.ƀap=new u().displayParent(this.ƀie).attach(this),this.ƀde=new u().setSortableChildren(!0).displayParent(this.ƀie).attach(this),this.ƀao=new u().setSortableChildren(!0).displayParent(this.ƀap).attach(this),this.ƀdd=new u().setSortableChildren(!0).setZIndex(20).displayParent(this.ƀao).attach(this),this.ƀfx=new u().setSortableChildren(!0).setZIndex(10).displayParent(this.ƀao).attach(this),this.ƀaa=new u().setZIndex(0).displayParent(this.ƀao).attach(this),this.ƀh=new O(this.ƀie,"alpha",{duration:500,animation:S.easeInOutCubic,reAnimateHandling:_.CompletePrevious,completionHandling:I.StayInCurrentState}),this.ƀae=new O(this.ƀad,"alpha",{duration:500,animation:S.easeInOutCubic,reAnimateHandling:_.CompletePrevious,completionHandling:I.StayInCurrentState}),w.instance.screenSize.subscribe(e=>{this.ƀad.aspectRatio=e.x/e.y,this.ƀad.scale=Math.max(e.x,e.y),this.ƀad.setPosition(Zt.zero,{holdFrom:Zt.zero})}).attach(this),w.instance.setScreenPositionToStagePositionFunction(e=>new Zt(e.x-this.ƀao.position.x-this.ƀap.position.x,e.y-this.ƀao.position.y-this.ƀap.position.y)),this.ƀcu.position.subscribe(e=>{this.ƀao.position=this.ƀbp(e)}).attach(this),this.ƀcu.offset.subscribe(e=>{this.ƀap.position=e}).attach(this),this.appear(!0,"alpha")}destroy(){this.destroyed||(super.destroy(),w.instance.resetScreenPositionToStagePositionFunction())}getLayers(){return{backgroundScreen:this.ƀab.id,background:this.ƀaa.id,main:this.ƀfx.id,foreground:this.ƀdd.id,foregroundScreen:this.ƀde.id}}appear(t,e){switch(e){case"alpha":return this.ƀae.set({alpha:0}),this.ƀh.set({alpha:t?0:1}),this.ƀh.animate({alpha:t?1:0}).chain(this);case"pureBlack":return this.ƀh.set({alpha:1}),this.ƀae.set({alpha:t?1:0}),this.ƀae.animate({alpha:t?0:1}).chain(this);case"instant":return this.ƀh.set({alpha:t?1:0}),this.ƀae.set({alpha:t?0:1}),Qr.instant();default:{let i=e;throw new Error('Switch ended with value "never".')}}}ƀbp(t){return Zt.fromTo(t,w.instance.getScreenSizeCenter())}};At=Zr([Xe({entity:L}),Kr("design:paramtypes",[L])],At);import{Vector as ri}from"helpers-lib";var ts=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},es=1500,Se=class{static{h(this,"CameraService")}createCamera(){return new L().attachToRoot()}getCameraPosition(){let t=L.getInstanceOrFail();return ri.fromTo(t.offset.value,t.position.value)}setPosition(t){let e=L.getInstanceOrFail();e.targetPosition.value=t}setTransition(t){let e=L.getInstanceOrFail();e.focusingNewTargetInfo.value={time:w.time,duration:t?.duration??es,position:e.position.value,roundPosition:t?.roundPosition??!1,roundPositionThreshold:t?.roundPositionThreshold??0,focusingAnimation:t?.animation??lt.Instant}}update(t,e){let i=L.getInstanceOrFail(),r=i.targetPosition.value;r&&(i.focusingNewTargetInfo.value?this.ƀfj(i,r,t):i.position.value=r)}ƀfj(t,e,i){let r=t.focusingNewTargetInfo.value;if(r.focusingAnimation===lt.Instant)this.ƀbb(t,e);else{let s=(i-r.time)/r.duration;if(s>=1)this.ƀbb(t,e);else{let n;r.focusingAnimation===lt.EaseInOut?n=X.easeInOut(s):r.focusingAnimation===lt.EaseOut?n=X.easeOut(s):n=1;let a=r.position.lerp(e,n);r.roundPosition&&(Math.abs(a.x-r.position.x)>=r.roundPositionThreshold&&(a=new ri(Math.round(a.x),a.y)),Math.abs(a.y-r.position.y)>=r.roundPositionThreshold&&(a=new ri(a.x,Math.round(a.y)))),t.position.value=a}}}ƀbb(t,e){t.position.value=e,t.focusingNewTargetInfo.value=void 0}};Se=ts([d()],Se);var is=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},rs=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},si=class{static{h(this,"CameraController")}constructor(t){this.ƀaq=t}createCamera(){return this.ƀaq.createCamera().id}update(t,e){this.ƀaq.update(t,e)}setPosition(t){this.ƀaq.setPosition(t)}setTransition(t){this.ƀaq.setTransition(t)}getCameraPosition(){return this.ƀaq.getCameraPosition()}};si=is([et({controllerLink:yt}),rs("design:paramtypes",[Se])],si);var ss=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},oi=class{static{h(this,"CameraViewController")}getLayers(){let t=L.getInstanceOrFail().id;return At.getInstanceOrFail(t).getLayers()}appear(t,e){let i=L.getInstanceOrFail().id;return At.getInstanceOrFail(i).appear(t,e)}};oi=ss([et({controllerLink:be})],oi);var Kt=class{static{h(this,"Camera")}get position(){return this.ƀan.getCameraPosition()}constructor(){this.ƀan=P.get(It),this.ƀar=P.get(Xt),this.ƀan.createCamera(),this.layers=this.ƀar.getLayers()}setPosition(t){this.ƀan.setPosition(t)}setTransition(t){this.ƀan.setTransition(t)}appear(t,e="alpha"){return this.ƀar.appear(t,e)}};var w=class o{static{h(this,"Game")}static get instance(){return this.ƀfg}static{this.pause=os.createOr()}static get camera(){return this.ƀam}static get time(){return y.ƀjr}static get setupOptions(){return this.ƀit}getScreenSize(){return this.ƀij.value}getScreenSizeCenter(){return this.ƀik.value}constructor(t){if(this.ƀij=new Vi(ni.zero),this.screenSize=this.ƀij.notifier,this.ƀik=new Vi(ni.zero),this.screenSizeCenter=this.ƀik.notifier,this.devMode=!1,this.resetScreenPositionToStagePositionFunction(),o.ƀfg)throw new Error("There can be only one Game instance!");this.ƀbf={screenResolution:void 0,devMode:!1,backgroundColor:ns.black,...t},this.devMode=this.ƀbf.devMode||!1,this.ƀhm=new Ni.Application({backgroundColor:this.ƀbf.backgroundColor,autoStart:!1,antialias:R<1.5,resolution:R,width:this.ƀbf.screenResolution?.width,height:this.ƀbf.screenResolution?.height,resizeTo:this.ƀbf.screenResolution===void 0?window:void 0})}async setup(t){o.ƀit=t,document.body.appendChild(this.ƀhm.view),await Promise.all([M.loadGameAssets(t.assetDefinitions)]),o.ƀfg=this,this.stage=new u().attachToRoot(),this.stage.pixiContainer=this.ƀhm.stage,this.renderer=this.ƀhm.renderer,this.ƀis(),this.stage.sortableChildren=!0,globalThis.ƀa=this.ƀhm,window.addEventListener("resize",e=>{setTimeout(()=>this.ƀis())}),o.ƀam=new Kt,this.ƀhm.start(),this.ƀhm.ticker.add(()=>{y.triggerUpdateTick(this.ƀhm.ticker.deltaMS)})}setResolution(t){this.ƀhm.renderer.resolution=t,this.ƀhm.renderer.resize(this.ƀhm.screen.width,this.ƀhm.screen.height)}screenPositonToStagePosition(t){let e=Yt.includeScaleInScreenPosition(t,o.instance.stage.scale,o.instance.getScreenSizeCenter());return this.ƀii(e)}setScreenPositionToStagePositionFunction(t){this.ƀii=t}resetScreenPositionToStagePositionFunction(){this.ƀii=t=>t}destroyAsset(t){M.destroyAsset(t)}ƀis(){let t=new ni(this.ƀhm.screen.width,this.ƀhm.screen.height);this.ƀij.value=t,this.ƀik.value=t.multiplyNumber(.5).round()}};import{ColorHelper as fs,Vector as te}from"helpers-lib";import*as N from"pixi.js";import{ColorHelper as ds,Comparator as us,Vector as Hi}from"helpers-lib";import*as Qt from"pixi.js";import{ColorHelper as ls,Comparator as cs,Vector as ps}from"helpers-lib";import*as Ot from"pixi.js";import{ColorHelper as as,Comparator as hs,NumberHelper as Ce}from"helpers-lib";import*as ji from"pixi.js";var Te=class o extends ji.Filter{static{h(this,"ExpandWithColorFilter")}static ƀef(){return`
33
33
  attribute vec2 aVertexPosition;
34
34
  attribute vec2 aTextureCoord;
35
35
 
@@ -41,7 +41,7 @@ import {Action,ActionLib,SingleEvent,IDAttachable,Variable,Attachable,ActionSubs
41
41
  gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
42
42
  vTextureCoord = aTextureCoord;
43
43
  }
44
- `}static ƀdp(t){let e=`
44
+ `}static ƀdo(t){let e=`
45
45
  uniform sampler2D uSampler;
46
46
  uniform vec2 pixelSize;
47
47
  uniform float expandSquared;
@@ -52,8 +52,8 @@ import {Action,ActionLib,SingleEvent,IDAttachable,Variable,Attachable,ActionSubs
52
52
  void main(void) {
53
53
  float highestAlpha = 0.0;`;return t>0?e+=`
54
54
 
55
- for (float x = -${NumberHelper.toFloatString(t)}; x <= ${NumberHelper.toFloatString(t)}; x++) {
56
- for (float y = -${NumberHelper.toFloatString(t)}; y <= ${NumberHelper.toFloatString(t)}; y++) {
55
+ for (float x = -${Ce.toFloatString(t)}; x <= ${Ce.toFloatString(t)}; x++) {
56
+ for (float y = -${Ce.toFloatString(t)}; y <= ${Ce.toFloatString(t)}; y++) {
57
57
  vec4 neighborColor = texture2D(uSampler, vTextureCoord + vec2(x * pixelSize.x, y * pixelSize.y));
58
58
  float distance = x * x + y * y;
59
59
  highestAlpha = max(highestAlpha, neighborColor.a * step(distance, expandSquared));
@@ -64,4 +64,4 @@ import {Action,ActionLib,SingleEvent,IDAttachable,Variable,Attachable,ActionSubs
64
64
  highestAlpha = centerColor.a;`,e+=`
65
65
 
66
66
  gl_FragColor = vec4(color, 1.0) * highestAlpha;
67
- }`,e}constructor(t,e){if(super(n.ƀeg(),n.ƀdp(t*w)),this.ƀcx=t,this.resolution=w,this.ƀcx=t*w,this.ƀcx<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀcx>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");Comparator.isInteger(this.ƀcx)||(this.ƀcx=Math.floor(this.ƀcx));let i=ColorHelper.normalize(e);this.uniforms.color=new Float32Array([i.red,i.green,i.blue]),this.uniforms.expandSquared=this.ƀcx*this.ƀcx,this.padding=this.ƀcx;}apply(t,e,i,r){this.uniforms.pixelSize=new Float32Array([1/(e.width*w),1/(e.height*w)]),t.applyFilter(this,e,i,r);}};var Kt=class extends R.Filter{static{a(this,"GlowFilter");}ƀcy;ƀah;constructor(t){super(),this.resolution=w;let e={blurRadius:1,expand:0,color:ColorHelper.white,blendMode:kt.Screen,...t};this.ƀcy=new Zt(e.expand,e.color);let i=Comparator.isNumber(e.blurRadius)?new Vector$1(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀah=new lt(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀah.blendMode=R.BLEND_MODES.SCREEN;}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀcy.apply(t,e,s,R.CLEAR_MODES.CLEAR),this.ƀah.apply(t,s,i,r),t.returnFilterTexture(s);}};var Ct=class n{static{a(this,"GlowSpriteGenerator");}static ƀej=new Map;static createGlowSpriteFromSprite(t,e,i){let r=this.ƀbd(e),s=Comparator.isNumber(r.blurRadius)?new Vector$1(r.blurRadius,r.blurRadius):r.blurRadius,o=this.ƀdr(t.texture,s,r.expand,r.color,i),h=new R.Sprite(o);return this.ƀis(h,Vector$1.fromVec2(t.anchor),Math.max(s.x,s.y)+r.expand),h.alpha=r.glowAlpha,h.blendMode=r.blendMode,h}static ƀdr(t,e,i,r,s){if(!t.id)throw new Error("GlowSpriteGenerator: baseTexture should have an id");if(s){let o=`${t.id}-${i}-${e.x}-${e.y}-${r.r}-${r.g}-${r.b}`;if(n.ƀej.has(o))return n.ƀej.get(o);{let h=this.ƀds(t,e,i,r);return n.ƀej.set(o,h),h}}else return this.ƀds(t,e,i,r)}static ƀds(t,e,i,r){let s=new R.Sprite(t);this.ƀda(s,Math.max(e.x,e.y)+i),s.filters=[new Kt({blurRadius:e,expand:i,color:r})];let o=f.instance.renderer.generateTexture(s);return o.id=b.insertAsset(o),s.destroy(),o}static ƀis(t,e,i){let r=(i+(t.width-i*2)*e.x)/t.width,s=(i+(t.height-i*2)*e.y)/t.height;t.anchor.set(r,s);}static ƀda(t,e){if(t.isSprite){let s=new R.Graphics;t.addChild(s);}let i=t.width,r=t.height;t.calculateBounds=function(){this.ƀak.clear(),this.ƀak.addFrame(this.transform,-e,-e,i+e,r+e);};}static ƀbd(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:ColorHelper.white,blendMode:kt.Add};return t&&(e={...e,...t}),e}};v.onHardReset.subscribe(()=>{Ct.ƀej.clear();}).attachToRoot();var j=class n extends c{static{a(this,"Sprite");}static createByName(t){let e=f.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.pixiContainer,i=e.parent;i&&i.removeChild(e);let r=f.instance.renderer.generateTexture(e,{resolution:2,scaleMode:R.SCALE_MODES.LINEAR,multisample:R.MSAA_QUALITY.HIGH});i&&i.addChild(e);let o={id:b.insertAsset(r),scale:t.scale,size:t.size,anchor:Vector$1.zero,boundingShapes:void 0,destroyAssetOnDestroy:true};return new n(o,{ignoreAnchor:true})}pixiSprite;ƀja;ƀga;ƀaj;ƀho;constructor(t,e={}){if(super(),!t)throw new Error("Sprite: spriteDefinition cannot be nullish!");this.ƀja=t,this.pixiSprite=new R.Sprite(b.getAsset(t.id)),this.pixiContainer.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.ƀga?.destroy(),this.ƀaj?.destroy(),this.ƀja.destroyAssetOnDestroy&&(b.destroyAsset(this.ƀja.id),this.ƀho&&b.destroyAsset(this.ƀho.texture.id)),this.ƀho&&!this.ƀho.destroyed&&this.ƀho.destroy());}ƀjr=1;setTextureScale(t){return this.textureScale=t,this}get textureScale(){return this.ƀjr}set textureScale(t){this.ƀjr=t,this.pixiSprite.scale.set(t);}get size(){return new Vector$1(this.pixiSprite.width,this.pixiSprite.height)}getMask(){return this.pixiSprite}set interactive(t){super.interactive=t,t&&this.ƀja.boundingShapes&&!this.pixiContainer.hitArea&&(this.pixiContainer.hitArea=new _t(this.ƀja.boundingShapes,this.size,Vector$1.fromVec2(this.ƀja.anchor)));}setMipmap(t){return this.mipmap=t,this}get mipmap(){return this.pixiSprite.texture.baseTexture.mipmap===R.MIPMAP_MODES.ON}set mipmap(t){t?this.pixiSprite.texture.baseTexture.mipmap=R.MIPMAP_MODES.ON:this.pixiSprite.texture.baseTexture.mipmap=R.MIPMAP_MODES.OFF;}setBlendMode(t){return this.blendMode=t,this}get blendMode(){return this.pixiSprite.blendMode}set blendMode(t){this.pixiSprite.blendMode=t;}setTint(t){return this.tint=t,this}get tint(){return new R.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.ƀho)return this.ƀho.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀho)this.ƀho.alpha=t;else throw new Error("Sprite: setGlowFilterAlpha cannot be called before glow filter is added.")}getAlignmentVector(t){let e=Vector$1.fromVec2(this.ƀja.anchor).to(t);return new Vector$1(this.size.x*e.x,this.size.y*e.y)}setGlowEffect(t){return this.ƀho&&(this.ƀho.destroy(),this.ƀho=void 0),t&&(this.ƀho=Ct.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀja.destroyAssetOnDestroy),this.ƀho.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀho.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.pixiContainer.addChild(this.ƀho)),this}showBoundingShape(t){return t?this.ƀaj||(this.ƀaj=this.ƀbt().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀaj&&(this.ƀaj.destroy(),this.ƀaj=void 0),this}getBoundingMask(){if(!this.ƀga){if(!this.ƀja.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀga=this.ƀbt(),this.ƀga.pixiSprite.t=Number.POSITIVE_INFINITY,this.ƀga.pixiSprite.renderable=false,this.ƀga.displayParent(this);}return this.ƀga}ƀbt(){if(!this.ƀja.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return O.createPolygon(this.ƀja.boundingShapes,ColorHelper.white).toSprite().attach(this)}download(){let t=f.instance.renderer.extract.canvas(this.pixiContainer);if(!t.toBlob)throw new Error("Sprite: canvas.toBlob is undefined!");return t.toBlob(e=>{if(!e)throw new Error("Sprite: blob is undefined!");let i=document.createElement("a");document.body.append(i),i.download="sprite.png",i.href=URL.createObjectURL(e),i.click(),i.remove();},"image/png"),this}};var Qt=class{static{a(this,"DashedLineHelper");}static getLines(t,e,i){let r=Vector$1.fromTo(t,e),s=r.normalize(),o=r.length-i.lineStartGap-i.lineEndGap,h=[];if(o<=0)return h;let l=t.add(s.normalize(i.lineStartGap));if(o<=i.dashGap+i.dashLength*.5)return h.push({from:l,to:l.add(s.normalize(o))}),h;let p=o-i.dashGap,u=i.dashLength+i.dashGap,g=Math.floor(p/u),y=p-u*g;g>=1&&y<i.dashLength&&(y+=u,g--);let M=s.normalize(y/2),U=s.normalize(i.dashGap);if(h.push({from:l,to:l.add(M)}),l=l.add(M),g>0){let nt=s.normalize(i.dashLength);ArrayHelper.createEmptyArray(g).forEach(()=>{l=l.add(U),h.push({from:l,to:l.add(nt)}),l=l.add(nt);});}return l=l.add(U),h.push({from:l,to:l.add(M)}),h}};var O=class n extends c{static{a(this,"Graphics");}static ƀcr=new Map;static createArrow(t,e){let i=new R.Graphics,r=[[{x:0,y:-t/2},{x:t*3/8,y:-t/8},{x:t/4,y:0},{x:0,y:-t/4},{x:-t/4,y:0},{x:-t*3/8,y:-t/8}],[{x:0,y:-t/4},{x:t/8-t/30,y:-t/8-t/30},{x:t/8-t/30,y:t*7/16},{x:-t/8+t/30,y:t*7/16},{x:-t/8+t/30,y:-t/8-t/30}]];return i.beginFill(e),r.forEach(s=>{i.drawPolygon(s.map(o=>new R.Point(o.x,o.y)));}),i.endFill(),new n(i,JSON.stringify({type:"arrow",size:t,color:e}))}static createDashedLine(t,e,i){let r={width:2,dashLength:10,dashGap:4,lineStartGap:0,lineEndGap:0,color:ColorHelper.white,...i},s=new R.Graphics;return s.lineStyle(r.width,r.color),Qt.getLines(t,e,r).forEach(h=>{s.moveTo(h.from.x,h.from.y).lineTo(h.to.x,h.to.y);}),new n(s,JSON.stringify({type:"dashedLine",from:t,to:e,options:r}))}static createVector(t,e,i){let r=new R.Graphics;return r.lineStyle(2,i),r.moveTo(t.x,t.y),r.lineTo(e.x,e.y),r.lineStyle(1,i),r.beginFill(ColorHelper.white),r.drawCircle(t.x,t.y,3),r.endFill(),new n(r,JSON.stringify({type:"line",start:t,end:e,color:i}))}static createRectangleBorders(t,e,i){let r=new R.Graphics;return r.beginFill(i),r.drawRect(0,0,t.x,e),r.drawRect(0,e,e,t.y-e*2),r.drawRect(t.x-e,e,e,t.y-e*2),r.drawRect(0,t.y-e,t.x,e),r.endFill(),new n(r,JSON.stringify({type:"rectangle-borders",size:t,borderSize:e,color:i}))}static createRectangle(t,e=ColorHelper.white){let i=new R.Graphics;return i.beginFill(e),i.drawRect(0,0,t.x,t.y),i.endFill(),new n(i,JSON.stringify({type:"rectangle",size:t,color:e}))}static createCircle(t,e){let i=new R.Graphics;return i.beginFill(e),i.drawCircle(0,0,t),i.endFill(),new n(i,JSON.stringify({type:"circle",radius:t,color:e}))}static createElipse(t,e){let i=new R.Graphics;return i.beginFill(e),i.drawEllipse(0,0,t.x,t.y),i.endFill(),new n(i,JSON.stringify({type:"elipse",size:t,color:e}))}static createPolygon(t,e){let i=new R.Graphics,r=JSON.stringify({type:"polygon",polygon:t,color:e});return i.beginFill(e),t.forEach(s=>{i.drawPolygon(s.map(o=>new R.Point(o.x,o.y)));}),i.endFill(),new n(i,r)}static createRegularPolygon(t,e,i){let r=new R.Graphics,s=new Radian(PI_360/t);r.beginFill(i),r.moveTo(e,0);for(let o=1;o<=t;o++){let l=s.multiply(o).vector.normalize(e),p=e+l.x,u=e+l.y;r.lineTo(p,u);}return r.endFill(),new n(r,JSON.stringify({type:"regular-polygon",sides:t,radius:e,color:i}))}pixiGraphics;ƀam;constructor(t,e){super(),this.pixiContainer.addChild(t),this.pixiGraphics=t,this.ƀam=e;}destroy(){this.destroyed||(super.destroy(),!this.pixiGraphics.destroyed&&this.pixiGraphics.destroy());}toSprite(t){let e={cacheName:this.ƀam,cache:false,...t},i=this.ƀed(e.cacheName,e.cache),r={id:i.assetID,scale:1,size:i.bounds,anchor:{x:0,y:0},boundingShapes:void 0,destroyAssetOnDestroy:!e.cache},s=new j(r,{texturePosition:i.bounds,ignoreAnchor:true});return this.attachToRoot(),this.destroy(),s}ƀed(t,e){if(e){let i=n.ƀcr.get(t);return i||(i=this.ƀcf(),n.ƀcr.set(t,i)),i}else return this.ƀcf()}ƀcf(){let t=f.instance.renderer.generateTexture(this.pixiGraphics);t.id=b.insertAsset(t);let e=this.pixiGraphics.getBounds();return {assetID:t.id,bounds:new Vector$1(e.x,e.y)}}};var Ce=class extends c{static{a(this,"Placeholder");}ƀhp;constructor(t){super(),this.ƀhp=new R.Graphics,this.ƀhp.beginFill(0,1e-9),this.ƀhp.drawRect(0,0,t.x,t.y),this.ƀhp.endFill(),this.pixiContainer.addChild(this.ƀhp);}destroy(){this.destroyed||(super.destroy(),this.ƀhp.destroy());}};var pt=class{static{a(this,"TextStyleConverter");}static getPixiTextStyle(t){let e={color:ColorHelper.white,align:"center",fontFamily:"Arial",fontStyle:"normal",fontSize:18,lineHeight:void 0,wordWrapWidth:void 0,lineThrough:false,...t},i=t?.dropShadow===true?{}:t?.dropShadow,r={};if(i){let s={blur:4,angle:Radian.get60,distance:10,color:ColorHelper.black,alpha:.5,...i};r={dropShadow:true,dropShadowBlur:s.blur,dropShadowAngle:s.angle.value,dropShadowDistance:s.distance,dropShadowColor:ColorHelper.rgbToHex(s.color),dropShadowAlpha:s.alpha};}return {fontFamily:e.fontFamily,fill:ColorHelper.rgbToHex(e.color),align:e.align,fontSize:e.fontSize,fontStyle:e.fontStyle,lineHeight:e.lineHeight,wordWrapWidth:e.wordWrapWidth,wordWrap:e.wordWrapWidth!==void 0,lineThrough:e.lineThrough,...r}}};var ee=class{static{a(this,"RichTextDataInConverter");}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),r=RichTextSeparator.process(t,i),s=this.ƀfd(r,e),o=this.ƀr(s);return this.ƀiy(o)}static ƀfd(t,e){let i=new Map,r=new Map,s=a((h,l)=>{if(r.has(l))return r.get(l);let p=pt.getPixiTextStyle(h);return r.set(l,p),p},"GetPixiStyle");return t.map(h=>{let{style:l,cacheKey:p}=this.ƀdn(h.tags,e,i),u=s(l,p),g=R.TextMetrics.measureText(" ",new R.TextStyle(u),false);return {text:h.text,cacheKey:p,style:l,pixiStyle:u,spaceWidth:g.width}})}static ƀdn(t,e,i){let r=t.join("+");if(i.has(r))return {style:i.get(r),cacheKey:r};let s=this.ƀbb(t,e);return i.set(r,s),{style:s,cacheKey:r}}static ƀbb(t,e){let i={...e.default};for(let l of t)e.styles&&e.styles[l]&&(i={...i,...e.styles[l]});let{wordWrapWidth:r,align:s,dropShadow:o,...h}=i;return h}static ƀr(t){let e=[],i=[];return t.forEach((r,s)=>{r.text.split(/\r?\n/).forEach((h,l)=>{l>0&&(e.push(i),i=[]),i.push({text:h,cacheKey:r.cacheKey,style:r.style,pixiStyle:r.pixiStyle,spaceWidth:r.spaceWidth});});}),e.push(i),e}static ƀiy(t){let e=[];return t.forEach(i=>{if(i.length===0)throw new Error("Internal Error: Line is unexpectedly empty");let r=i.flatMap(s=>this.ƀiz(s.text).map(h=>{let l=new R.TextStyle(s.pixiStyle),p=R.TextMetrics.measureText(h,l,false);return {text:h,whitespace:h.trim()==="",style:{cacheKey:s.cacheKey,style:s.style,pixiStyle:l,height:p.height,ascent:p.fontProperties.ascent,descent:p.fontProperties.descent,width:p.width,spaceWidth:s.spaceWidth}}}));e.push(r);}),e}static ƀiz(t){if(t==="")return [""];let e=[],i="",r=t[0]===" ";for(let s=0;s<t.length;s++){let o=t[s],h=o===" ";h===r?i+=o:(e.push(i),i=o,r=h);}return i&&e.push(i),e}};var ie=class{static{a(this,"ConsistentSpaceTextWrapper");}static wrapText(t,e){return t.forEach(i=>{i.forEach((r,s)=>{if(e.isSpaceAvailable(new Vector$1(r.style.width,r.style.height)))if(r.whitespace&&s===i.length-2){let o=i[i.length-1];e.isSpaceAvailable(new Vector$1(o.style.width+r.style.width,o.style.height))?e.insertWord(r):this.ƀkn(r,e);}else e.insertWord(r);else e.lineIsEmpty?e.insertWord(r):r.whitespace?this.ƀkn(r,e):(e.newLine(),e.insertWord(r));}),e.newLine();}),e.print()}static ƀkn(t,e){let i=Math.max(0,Math.floor(e.remainingWidth/t.style.spaceWidth)),r=Math.max(0,Math.min(i,t.text.length-1));if(r>0){let o={text:" ".repeat(r),whitespace:true,style:{...t.style,width:r*t.style.spaceWidth}};e.insertWord(o);}e.newLine();let s=t.text.length-r-1;if(s>0){let o={text:" ".repeat(s),whitespace:true,style:{...t.style,width:s*t.style.spaceWidth}};e.insertWord(o);}}};var re=class{static{a(this,"RichTextTypewriter");}ƀkm;ƀfs=[];ƀci=[];ƀck=0;ƀfr=new Vector$1(0,0);ƀcj=0;ƀcl;ƀev;ƀke;get lineIsEmpty(){return this.ƀci.length===0}get remainingWidth(){return this.ƀkm-this.ƀck}constructor(t,e){if(this.ƀkm=t,this.ƀev=e?.horizontalAlignment??"left",this.ƀke=e?.verticalAlignment??"bottom",e?.rectangleCutOption){if(e.rectangleCutOption.position.x<0||e.rectangleCutOption.position.x>=this.ƀkm||e.rectangleCutOption.position.y<0)throw new Error("Rectangle cut position is out of bounds");this.ƀcl={direction:e.rectangleCutOption.direction,rectangle:this.ƀbp(e.rectangleCutOption)};}}isSpaceAvailable(t){let e=Math.max(this.ƀcj,t.y),i=this.ƀdv(this.ƀfr.y,this.ƀfr.y+e);return this.ƀck+t.x<=i}insertWord(t){let e=Math.max(this.ƀcj,t.style.height);if(this.ƀci.length===0){let i=this.ƀdw(this.ƀfr.y,this.ƀfr.y+e);this.ƀfr=new Vector$1(i,this.ƀfr.y),this.ƀck=this.ƀfr.x;}this.ƀci.push({chunk:t,position:new Vector$1(this.ƀck,this.ƀfr.y)}),this.ƀcj=e,this.ƀck+=t.style.width;}newLine(){let t=this.ƀfr.y+this.ƀcj,e=this.ƀdw(t,t);this.ƀdc(),this.ƀfr=new Vector$1(e,t),this.ƀck=this.ƀfr.x,this.ƀcj=0;}print(){return this.ƀdc(),this.ƀfs}ƀdc(){this.ƀci.length>0&&(this.ƀfs.push(this.ƀg(this.ƀci)),this.ƀci=[]);}ƀg(t){return t=this.ƀkg(t),t=this.ƀex(t),t}ƀex(t){if(this.ƀev==="left")return t;let e=this.ƀfr.y+this.ƀcj,i=this.ƀdw(this.ƀfr.y,e),s=this.ƀdv(this.ƀfr.y,e)-i,o=Math.min(s,t.reduce((l,p)=>l+p.chunk.style.width,0)),h;return this.ƀev==="center"?h=(s-o)/2:h=s-o,t.map(l=>(l={chunk:l.chunk,position:new Vector$1(l.position.x+h,l.position.y)},l))}ƀkg(t){let e=Math.max(...t.map(r=>r.chunk.style.ascent)),i=Math.max(...t.map(r=>r.chunk.style.descent));return t.map(r=>{let s;switch(this.ƀke){case "top":s=i-r.chunk.style.descent;break;case "center":s=(i-r.chunk.style.descent+e-r.chunk.style.ascent)*.5;break;case "bottom":s=e-r.chunk.style.ascent;break}return r={chunk:r.chunk,position:new Vector$1(r.position.x,r.position.y+s)},r})}ƀdw(t,e){return this.ƀcl&&(this.ƀcl.direction==="topLeft"||this.ƀcl.direction==="bottomLeft")&&(this.ƀcl.rectangle.isPointInside(new Vector$1(0,t),{includeEdges:false})||this.ƀcl.rectangle.isPointInside(new Vector$1(0,e),{includeEdges:false}))?this.ƀcl.rectangle.bottomRight.x:0}ƀdv(t,e){return this.ƀcl&&(this.ƀcl.direction==="topRight"||this.ƀcl.direction==="bottomRight")&&(this.ƀcl.rectangle.isPointInside(new Vector$1(this.ƀkm,t),{includeEdges:false})||this.ƀcl.rectangle.isPointInside(new Vector$1(this.ƀkm,e),{includeEdges:false}))?this.ƀcl.rectangle.topLeft.x:this.ƀkm}ƀbp(t){let e,i;switch(t.direction){case "topRight":e=new Vector$1(t.position.x,-1/0),i=new Vector$1(1/0,t.position.y);break;case "topLeft":e=new Vector$1(-1/0,-1/0),i=t.position;break;case "bottomRight":e=t.position,i=new Vector$1(1/0,1/0);break;case "bottomLeft":e=new Vector$1(-1/0,t.position.y),i=new Vector$1(t.position.x,1/0);break}return new Rectangle(e,i)}};var se=class{static{a(this,"RichTextDataOutConverter");}static process(t){return t=this.ƀge(t),t=this.ƀjx(t),this.ƀav(t)}static ƀge(t){return t.map(e=>{let i=[],r,s=true;return e.forEach(o=>{if(!r||r.chunk.style.cacheKey!==o.chunk.style.cacheKey)r&&i.push(r),r=o,s=o.chunk.whitespace;else {let h=r.chunk.text+o.chunk.text;s=o.chunk.whitespace&&s,r={chunk:{text:h,whitespace:s,style:{...r.chunk.style,width:r.chunk.style.width+o.chunk.style.width}},position:r.position};}}),r&&i.push(r),i})}static ƀjx(t){return t.map(e=>{if(e.length===0)return [];let i=e.pop();if(!i.chunk.whitespace||i.chunk.text===""){let r=i.chunk.text.length,s=i.chunk.text.trimEnd();r!==s.length?e.push({chunk:{text:s,whitespace:false,style:{...i.chunk.style,width:i.chunk.style.width-(r-s.length)*i.chunk.style.spaceWidth}},position:i.position}):e.push(i);}return e})}static ƀav(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 Tt=class{static{a(this,"RichTextToPlaneText");}static process(t,e){if(e.default.wordWrapWidth===void 0){if(e.default.align==="right"||e.default.align==="center")throw new Error("wordWrapWidth is required for right or center alignment");if(e.rectangleCut&&(e.rectangleCut.direction==="topRight"||e.rectangleCut.direction==="bottomRight"))throw new Error("wordWrapWidth is required for topRight or bottomRight rectangle cut")}let i=ee.process(t,e),r=new re(e.default.wordWrapWidth??1/0,{rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),s=ie.wrapText(i,r);return se.process(s)}};var kr=1,ni=1/kr,Rt=class extends c{static{a(this,"Text");}ƀhq;ƀjj;ƀhr;ƀjo;ƀjq;get ƀjp(){if(!this.ƀjq){let t=new R.TextStyle(this.ƀhr);this.ƀjq=R.TextMetrics.measureText(this.ƀjo,t);}return this.ƀjq}get ascent(){return this.ƀjp.fontProperties.ascent}constructor(t,e){super(),this.ƀhr=pt.getPixiTextStyle(e),this.setText(t);}destroy(){this.destroyed||(super.destroy(),!this.ƀhq.destroyed&&this.ƀhq.destroy());}setAnchor(t){return this.anchor=t,this}get anchor(){return new Vector$1(this.ƀhq.anchor.x,this.ƀhq.anchor.y)}set anchor(t){this.ƀhq.anchor.set(t.x,t.y);}setPosition(t,e){if(e?.holdFrom){let i=this.ƀhr.dropShadowDistance??0,r=new Vector$1(e.holdFrom.x*i,e.holdFrom.y*i);t=t.add(r);}return super.setPosition(t,e),this}setText(t){return this.ƀjo!==t&&(this.ƀjo=t,this.ƀhy()),this}setColor(t){let e=ColorHelper.rgbToHex(t);return this.ƀhr.fill!==e&&(this.ƀhr.fill=e,this.ƀhy()),this}ƀhy(){this.ƀhq?.destroy(),this.ƀjj?.destroy(),this.ƀjj=void 0,this.ƀjq=void 0;let t=new R.TextStyle(this.ƀhr);this.ƀhq=new R.Text(this.ƀjo,t),this.ƀhq.scale.set(ni,ni),this.pixiContainer.addChild(this.ƀhq),this.ƀhr.lineThrough&&(this.ƀjj=this.ƀe(this.ƀhq,this.ƀhr.fill),this.pixiContainer.addChild(this.ƀjj));}ƀe(t,e){let i=R.TextMetrics.measureText(t.text,t.style),r=Math.max(1,Math.round(i.lineHeight*.07)),s=r%2*.5,o=new R.Graphics;o.lineStyle(r,e);let h=0;return i.lines.forEach((l,p)=>{let u=R.TextMetrics.measureText(l,t.style),g=Math.round(h+(u.fontProperties.ascent-u.fontProperties.descent)*.6+u.fontProperties.descent)+s,y=0;t.style.align==="center"?y=0+(t.width-u.width)*.5:t.style.align==="right"&&(y=0+t.width-u.width),y=Math.floor(y),o.moveTo(Math.floor(y),g),o.lineTo(Math.floor(y+u.width),g),h+=u.lineHeight;}),o.endFill(),o}};var Ee=class extends c{static{a(this,"RichText");}constructor(t,e){super(),Tt.process(t,e).forEach(r=>new Rt(r.text,r.style).setPosition(r.position).displayParent(this).attach(this));}};var Te=class extends c{static{a(this,"UpdatableContainer");}},Re=class extends c{static{a(this,"DisplayObjectArray");}ƀbv;ƀco=new Map;ƀgy;constructor(t,e){super(),this.ƀbv=t,this.ƀgy={trackBy:a((i,r)=>r,"trackBy"),positioning:{direction:"vertical",spacing:0},...e};}set(t){let e=new Set(this.ƀco.values()),i=0;t.forEach((r,s)=>{let o=this.ƀgy.trackBy(r,s),h;this.ƀco.has(o)?(h=this.ƀco.get(o),e.delete(h),h.update(r)):(h=this.ƀbv(r).displayParent(this).attach(this),this.ƀco.set(o,h)),this.ƀgy.positioning.direction==="horizontal"?(h.x=i,i+=h.size.x+this.ƀgy.positioning.spacing):(h.y=i,i+=h.size.y+this.ƀgy.positioning.spacing);}),e.forEach(r=>{r.destroy();});}};var dt=class n extends c{static{a(this,"Menu");}static ƀgx;static ƀjv=false;static closeAll(){return n.ƀgx?n.ƀgx.close():SingleEvent.instant()}ƀz;ƀgd;ƀn;ƀgq=new SingleAction;onOpen=this.ƀgq.notifier;ƀgl=new SingleAction;onClose=this.ƀgl.notifier;constructor(t,e){super();let i={closeOnBackgroundClick:true,appearAnimationDuration:150,darkeningAlpha:.3,...e};this.setZIndex(100).setAlpha(0),this.ƀn=new L(this,"alpha",{animation:x.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:H.CompletePrevious,completionHandling:$.StayInCurrentState}),this.ƀz=O.createRectangle(new Vector$1(1,1),ColorHelper.black).toSprite({cache:true}).setAlpha(i.darkeningAlpha).setInteractive(true).displayParent(this).attach(this),this.ƀgd=j.createByName(t).setPosition(new Vector$1(0,0)).setInteractive(true).displayParent(this).attach(this),f.instance.screenSize.subscribe(r=>{this.ƀz.aspectRatio=r.x/r.y,this.ƀz.scale=Math.max(r.x,r.y),this.ƀz.setPosition(Vector$1.zero,{holdFrom:Vector$1.half}),this.setPosition(r.multiplyNumber(.5));}).attach(this),n.ƀgx=this,this.onDestroy().tap(()=>{n.ƀgx=void 0;}).attachToRoot(),i.closeOnBackgroundClick&&this.ƀz.on(we.Click,()=>{n.ƀjv||this.ƀp(false);}).attach(this),this.ƀp(true);}getBoundingMask(){return this.ƀgd.getBoundingMask()}close(){return this.ƀp(false)}ƀp(t){if(n.ƀjv)throw new Error("WindowUI: cannot iterate while in transition");return n.ƀjv=true,this.ƀn.animate({alpha:t?1:0}).chain(this).tap(()=>{n.ƀjv=false,t?this.ƀgq.resolve():(this.ƀgl.resolve(),this.destroy());}).chainToRoot()}};var Ie=class extends Y{static{a(this,"MenuEntity");}ƀgo=new SingleAction;onCreate=this.ƀgo.notifier;ƀgq=new SingleAction;onOpen=this.ƀgq.notifier;ƀgl=new SingleAction;onClose=this.ƀgl.notifier;ƀgd;constructor(t,e){super(),dt.closeAll().tap(()=>{if(!ot.getActiveScene())throw new Error("WindowEntity: constructor is called when there is no active scene!");f.pause.effect(true).attach(this),this.ƀgd=new dt(t,e).displayParent(f.camera.layers.foregroundScreen).attach(this),this.ƀgo.resolve(this.ƀgd),this.ƀgd.onOpen.subscribe(()=>this.ƀgq.resolve()).attach(this),this.ƀgd.onClose.subscribe(()=>{this.ƀgl.resolve(),this.destroy();}).attach(this);}).attach(this);}close(){if(this.ƀgd){let t=this.onClose.toSingleEvent().destroyIfNotAttached();return this.ƀgd.close(),t}else return this.onCreate.asyncMapQueue(()=>this.close()).singleChain(this)}};function Ur(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Ur,"_ts_decorate");function ai(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(ai,"_ts_metadata");var Q=class{static{a(this,"MouseService");}ƀff=new Variable(false);onInitialMouseMove=this.ƀff.notifier;get initialMouseMoveHappened(){return this.ƀff.value}ƀjb=new Variable(Vector$1.zero,{notifyOnChange:true});stagePosition=this.ƀjb.notifier;getStagePosition(){return this.ƀjb.value}ƀii=new Variable(Vector$1.zero,{notifyOnChange:true});screenPosition=this.ƀii.notifier;getScreenPosition(){return this.ƀii.value}ƀfx=new Variable(false);mainButtonState=this.ƀfx.notifier;getMainButtonState(){return this.ƀfx.value}ƀio=new Variable(false);secondaryButtonState=this.ƀio.notifier;getSecondaryButtonState(){return this.ƀio.value}constructor(){this.ƀjc(),window.addEventListener("mousedown",t=>{t.button===0?this.ƀfx.value=true:t.button===2&&(this.ƀio.value=true);}),window.addEventListener("mouseup",t=>{t.button===0?this.ƀfx.value=false:t.button===2&&(this.ƀio.value=false);}),window.addEventListener("blur",()=>{this.ƀfx.value=false,this.ƀio.value=false;});}ƀjc(){let t=Vector$1.zero;window.addEventListener("mousemove",e=>{t=new Vector$1(e.clientX,e.clientY),this.ƀff.value=true;}),d.beforeSceneUpdateAction.subscribe(()=>{this.ƀii.value=t;}).attachToRoot(),d.afterSceneUpdateAction.subscribe(()=>{let e=f.instance.screenPositonToStagePosition(this.ƀii.value);e.isEqual(this.ƀjb.value)?f.instance.renderer.events.onPointerMove(new PointerEvent("pointermove",{clientX:this.ƀii.value.x,clientY:this.ƀii.value.y,pointerType:"mouse"})):this.ƀjb.value=e;}).attachToRoot();}};Q=Ur([S(),ai("design:type",Function),ai("design:paramtypes",[])],Q);var It=class extends c{static{a(this,"MouseWheelListenerUI");}ƀgu=new Action;onWheel=this.ƀgu.notifier;ƀkl;ƀeq=(t=>{let e=m.get(Q).getScreenPosition(),i=this.ƀkl.getBounds();e.x>=i.x&&e.x<=i.x+i.width&&e.y>=i.y&&e.y<=i.y+i.height&&this.ƀgu.trigger(t.deltaY);}).bind(this);constructor(t){super(),this.ƀkl=new R.Graphics,this.ƀkl.beginFill(0,1e-9),this.ƀkl.drawRect(0,0,t.x,t.y),this.ƀkl.endFill(),this.pixiContainer.addChild(this.ƀkl),window.addEventListener("wheel",this.ƀeq);}destroy(){this.destroyed||(super.destroy(),this.ƀkl.destroy(),window.removeEventListener("wheel",this.ƀeq));}};var Jr=.65,qr=.01,ae=class{static{a(this,"SmoothScroller");}ƀbi;ƀu;ƀha;ƀix;ƀjk;ƀim;ƀfg=false;get scrollHeight(){return this.ƀim}get contentSize(){return this.ƀbi.size.ceil()}constructor(t,e,i,r){this.ƀbi=t,this.ƀu=e,this.ƀha=i,this.ƀix=r,this.ƀim=e-i*2,this.ƀbi.y=i,this.ƀjk=i;}onWheel(t){this.setTarget(this.ƀjk-t*Jr);}scrollToTop(){this.setTarget(1/0);}scrollToBottom(){this.setTarget(-1/0);}setTarget(t){this.ƀjk=NumberHelper.clamp(t,this.ƀu-this.ƀha-this.contentSize.y,this.ƀha);}jumpToTarget(){this.ƀbi.y=this.ƀjk;}update(t){let e=this.contentSize;if(e.y<=this.ƀim){switch(this.ƀix){case "start":this.ƀjk=this.ƀha;break;case "center":this.ƀjk=(this.ƀu-e.y)*.5;break;case "end":this.ƀjk=this.ƀu-e.y-this.ƀha;break}this.ƀfg||(this.ƀbi.y=this.ƀjk);}this.ƀfg=true;let i=this.ƀjk-this.ƀbi.y;this.ƀbi.y=this.ƀbi.y+i*qr*t;}};var Me=class{static{a(this,"AnimationEaseInOutFlatter");}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},tt=class n extends c{static{a(this,"ScrollMaskUI");}static ƀcr=new Map;ƀga;constructor(t,e,i,r=De.Vertical){if(super(),i<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(e.y<i*2)throw new Error(`The height of the scroll mask cannot be lower than '${i*2}'`);let s=new c;r===De.Horizontal?this.ƀbz(e,i,s):this.ƀcg(e,i,s),this.ƀga=j.createSnapshotSprite(s).attach(this),s.destroy(),t.setMask(this.ƀga);}ƀcg(t,e,i){e>0&&this.ƀbw(new Vector$1(t.x,e)).displayParent(i).attach(i),O.createRectangle(new Vector$1(t.x,t.y-e*2),ColorHelper.white).toSprite().setPosition(new Vector$1(0,e),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbw(new Vector$1(t.x,e)).setPosition(new Vector$1(t.x,t.y),{round:false}).setRotation(Radian.get180).displayParent(i).attach(i);}ƀbz(t,e,i){e>0&&this.ƀbw(new Vector$1(t.y,e)).setPosition(new Vector$1(0,t.y),{round:false}).setRotation(Radian.get270).displayParent(i).attach(i),O.createRectangle(new Vector$1(t.x-e*2,t.y),ColorHelper.white).toSprite().setPosition(new Vector$1(e,0),{round:false}).displayParent(i).attach(i),e>0&&this.ƀbw(new Vector$1(t.y,e)).setPosition(new Vector$1(t.x,0),{round:false}).setRotation(Radian.get90).displayParent(i).attach(i);}ƀbw(t){let i={id:this.ƀbx(t.y),scale:1,size:t,anchor:{x:0,y:0},boundingShapes:void 0};return new j(i,{textureSize:t,ignoreAnchor:true})}ƀbx(t){let e=JSON.stringify({type:"gradient",length:t}),i=n.ƀcr.get(e);if(!i){let r=document.createElement("canvas");r.width=1,r.height=t;let s=r.getContext("2d");if(s){let o=new Me;ArrayHelper.createIntegerArray(t).forEach(l=>{let p=`rgba(255, 255, 255, ${o.multiplierFunction(l/t)})`;s.fillStyle=p,s.fillRect(0,l,1,1);});let h=R.Texture.from(r);i=b.insertAsset(h),n.ƀcr.set(e,i);}else throw new Error("Canvas context is null")}return i}};var Zr=15,Fe=class extends c{static{a(this,"ScrollAreaUI");}ƀin;ƀbj;get contentAreaSize(){return this.ƀbj}get contentSize(){return this.ƀin.contentSize}constructor(t,e={}){super();let i={padding:Zr,smallContentAlign:"start",...e};if(i.padding<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(i.padding>t.y*.5)throw new Error("The padding of the scroll mask cannot be higher than half of the size of the area");let r=new c().displayParent(this).attach(this);new tt(r,t,i.padding).attach(this);let s=new c().displayParent(r).attach(this);this.ƀin=new ae(s,t.y,i.padding,i.smallContentAlign),this.ƀbj=new Vector$1(t.x,this.ƀin.scrollHeight),new It(t).displayParent(r).attach(this).onWheel.subscribe(h=>this.ƀin.onWheel(h)).attach(this),d.afterSceneUpdateAction.subscribe(h=>this.ƀin.update(h.delta)).attach(this),this.addChildTo=s;}scrollToTop(t){this.ƀin.scrollToTop(),t?.instant&&this.ƀin.jumpToTarget();}scrollToBottom(t){this.ƀin.scrollToBottom(),t?.instant&&this.ƀin.jumpToTarget();}};function Kr(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Kr,"_ts_decorate");function pi(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(pi,"_ts_metadata");var At=class{static{a(this,"KeyboardService");}ƀfn=new Action;keyPressed=this.ƀfn.notifier;ƀfo=new Action;keyReleased=this.ƀfo.notifier;ƀfu=new Set;ƀft=new Set;constructor(){window.addEventListener("keydown",t=>{this.ƀfu.add(t.key),this.ƀft.add(t.key),!t.repeat&&this.ƀfn.trigger(t.key);}),window.addEventListener("keyup",t=>{this.ƀfu.delete(t.key),this.ƀfo.trigger(t.key);}),window.addEventListener("blur",()=>{this.ƀfu.clear();}),d.afterSceneUpdateAction.subscribe(()=>{this.ƀft.clear();}).attachToRoot();}isKeyDown(t){return this.ƀfu.has(t)}isKeyJustPressed(t){return this.ƀft.has(t)}};At=Kr([S(),pi("design:type",Function),pi("design:paramtypes",[])],At);function Qr(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Qr,"_ts_decorate");function di(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(di,"_ts_metadata");var Mt=class{static{a(this,"MouseTargetFocusService");}ƀgg;ƀgs=new Action;onTargetFocus=this.ƀgs.notifier;get focusedInLastFrame(){return this.ƀdd}get lastFocusedPosition(){return this.ƀfq}ƀgh;ƀhc;ƀju=0;ƀjw=false;ƀdd=false;ƀfq=void 0;constructor(t){this.ƀgg=t,d.beforeSceneUpdateAction.subscribe(e=>this.ƀjy(e.delta)).attachToRoot();}ƀjy(t){if(this.ƀgh){let e=this.ƀec(this.ƀgg.getStagePosition(),this.ƀgh);this.ƀhc===void 0?this.ƀhc=e:this.ƀau(e,t);}this.ƀgh=this.ƀgg.getStagePosition();}ƀau(t,e){this.ƀhc-t>10?(this.ƀju=Math.max(250,this.ƀju),this.ƀjw=true):this.ƀju>1e3&&(this.ƀjw=true);let i=this.ƀju>=300&&this.ƀjw;this.ƀfl(i,t,e);}ƀfl(t,e,i){(t||e>this.ƀhc)&&(this.ƀhc=e),t?(this.ƀjw=false,this.ƀju=0,this.ƀdd=true,this.ƀfq=this.ƀgg.getStagePosition(),this.ƀgs.trigger(this.ƀfq)):(this.ƀju+=i,this.ƀdd=false);}ƀec(t,e){let i=Vector$1.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};Mt=Qr([S(),di("design:type",Function),di("design:paramtypes",[typeof MouseService>"u"?Object:MouseService])],Mt);var he=class extends Attachable{static{a(this,"FadeInStateAnimation");}ƀn;ƀgy;ƀi={value:0};ƀjf;ƀht;ƀm=1;get currentState(){return {value:this.ƀi.value,state:this.ƀjf,queuedState:this.ƀht,animationState:this.ƀm}}constructor(t){super(),this.ƀgy={duration:500,animation:x.lineer,...t},this.ƀi.value=0,this.ƀn=new L(this.ƀi,"value",{duration:this.ƀgy.duration,animation:this.ƀgy.animation,reAnimateHandling:H.CompletePrevious,completionHandling:$.StayInCurrentState}),this.ƀn.value.subscribe(()=>{this.ƀi.value!==1&&this.ƀi.value!==0&&this.ƀgt.trigger(this.ƀi.value);}).attach(this);}setState(t,e){if(e?.instant){this.ƀn.completeAnimation(),this.ƀm=t!==void 0?2:1,this.ƀht=void 0;let i=t!==void 0?1:0,r=this.ƀjf!==t;r&&(this.ƀjf=t,this.ƀgr.trigger(this.ƀjf)),(r||this.ƀi.value!==i)&&(this.ƀi.value=i,this.ƀgt.trigger(this.ƀi.value));}else switch(this.ƀm){case 1:t!==void 0&&(this.ƀm=3,this.ƀht=void 0,this.ƀjf=t,this.ƀgr.trigger(this.ƀjf),this.ƀn.animate({value:1}).tap(()=>this.ƀgn()).attach(this));break;case 2:t===void 0?(this.ƀm=4,this.ƀht=void 0,this.ƀn.animate({value:0}).tap(()=>this.ƀgn()).attach(this)):t!==this.ƀjf&&(this.ƀm=5,this.ƀht=t,this.ƀn.animate({value:0}).tap(()=>this.ƀgn()).attach(this));break;case 3:t===void 0?(this.ƀm=4,this.ƀht=void 0,this.ƀn.animate({value:0},{duration:this.ƀi.value*this.ƀgy.duration}).tap(()=>this.ƀgn()).attach(this)):t!==this.ƀjf&&(this.ƀi.value>0?(this.ƀm=5,this.ƀht=t,this.ƀn.animate({value:0},{duration:this.ƀi.value*this.ƀgy.duration}).tap(()=>this.ƀgn()).attach(this)):(this.ƀht=void 0,this.ƀjf=t,this.ƀgr.trigger(this.ƀjf)));break;case 4:t===this.ƀjf?(this.ƀm=3,this.ƀn.animate({value:1},{duration:(1-this.ƀi.value)*this.ƀgy.duration}).tap(()=>this.ƀgn()).attach(this)):t!==void 0&&(this.ƀm=5,this.ƀht=t);break;case 5:t===void 0?(this.ƀm=4,this.ƀht=void 0):t===this.ƀjf?(this.ƀm=3,this.ƀht=void 0,this.ƀn.animate({value:1},{duration:(1-this.ƀi.value)*this.ƀgy.duration}).tap(()=>this.ƀgn()).attach(this)):t!==this.ƀht&&(this.ƀht=t);break}}ƀgn(){switch(this.ƀm){case 3:this.ƀi.value===1&&(this.ƀm=2,this.ƀgt.trigger(this.ƀi.value));break;case 4:if(this.ƀht!==void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearing should not have a queued value");this.ƀi.value===0&&(this.ƀm=1,this.ƀjf=void 0,this.ƀgr.trigger(this.ƀjf),this.ƀgt.trigger(this.ƀi.value));break;case 5:if(this.ƀht===void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearToChange should always have a queued value");this.ƀi.value===0&&(this.ƀm=3,this.ƀjf=this.ƀht,this.ƀht=void 0,this.ƀgr.trigger(this.ƀjf),this.ƀgt.trigger(this.ƀi.value),this.ƀn.animate({value:1}).tap(()=>this.ƀgn()).attach(this));break;case 1:case 2:return}}ƀgr=new Action;ƀgt=new Action;onStateChange(t){return this.ƀgr.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀgt.subscribe(e=>t(e)).attach(this),this}};var mi=class extends c{static{a(this,"FadeInContent");}ƀbv;ƀjg;ƀbi;constructor(t,e){super(),this.ƀbv=t;let i={duration:200,animation:x.easeInOut,...e};this.alpha=0,this.ƀjg=new he(i).onStateChange(r=>{this.ƀbi?.destroy(),this.ƀbi=void 0,r!==void 0&&(this.ƀbi=new c().displayParent(this).attach(this),this.ƀbv({state:r,container:this.ƀbi}));}).onValueChange(r=>{this.alpha=r;}).attach(this);}setState(t,e){return this.ƀjg.setState(t,e),this}};var le=class extends Attachable{static{a(this,"StateAnimation");}ƀn;ƀgy;ƀi={value:0};ƀjf;ƀgj;ƀht;ƀm=1;get currentState(){return {value:this.ƀi.value,state:this.ƀjf,nextState:this.ƀgj,queuedState:this.ƀht,animationState:this.ƀm}}constructor(t){super(),this.ƀgy={duration:500,animation:x.lineer,...t},this.ƀn=new L(this.ƀi,"value",{duration:this.ƀgy.duration,animation:this.ƀgy.animation,reAnimateHandling:H.CompletePrevious,completionHandling:$.StayInCurrentState}),this.ƀn.value.subscribe(()=>{this.ƀi.value!==1&&this.ƀi.value!==0&&this.ƀgt.trigger(this.ƀi.value);}).attach(this);}setState(t,e){if(this.ƀjf===void 0)this.ƀjf=t,this.ƀgr.trigger({state:this.ƀjf,nextState:this.ƀgj}),this.ƀgt.trigger(this.ƀi.value);else if(e?.instant)this.ƀn.completeAnimation(),this.ƀm=1,this.ƀjf=t,this.ƀgj=void 0,this.ƀi.value=0,this.ƀgr.trigger({state:this.ƀjf,nextState:this.ƀgj}),this.ƀgt.trigger(this.ƀi.value);else switch(this.ƀm){case 1:t!==this.ƀjf&&(this.ƀm=2,this.ƀgj=t,this.ƀi.value=0,this.ƀgr.trigger({state:this.ƀjf,nextState:this.ƀgj}),this.ƀgt.trigger(this.ƀi.value),this.ƀn.animate({value:1}).tap(()=>this.ƀgn()).attach(this));break;case 2:t!==this.ƀgj&&(t===this.ƀjf?(this.ƀm=3,this.ƀn.animate({value:0},{duration:this.ƀi.value*this.ƀgy.duration}).tap(()=>this.ƀgn()).attach(this)):this.ƀht=t);break;case 3:t!==this.ƀjf&&(t===this.ƀgj?(this.ƀm=2,this.ƀn.animate({value:1},{duration:(1-this.ƀi.value)*this.ƀgy.duration}).tap(()=>this.ƀgn()).attach(this)):this.ƀht=t);break}}ƀgn(){switch(this.ƀm){case 2:this.ƀi.value===1&&(this.ƀi.value=0,this.ƀht!==void 0?(this.ƀm=2,this.ƀjf=this.ƀgj,this.ƀgj=this.ƀht,this.ƀht=void 0,this.ƀgr.trigger({state:this.ƀjf,nextState:this.ƀgj}),this.ƀn.animate({value:1}).tap(()=>this.ƀgn()).attach(this)):(this.ƀm=1,this.ƀjf=this.ƀgj,this.ƀgj=void 0,this.ƀgr.trigger({state:this.ƀjf,nextState:this.ƀgj})),this.ƀgt.trigger(this.ƀi.value));break;case 3:if(this.ƀjf===void 0)throw new Error("StateAnimation: state must be defined when reverting!");this.ƀi.value===0&&(this.ƀht!==void 0?(this.ƀm=2,this.ƀgj=this.ƀht,this.ƀht=void 0,this.ƀi.value=0,this.ƀgr.trigger({state:this.ƀjf,nextState:this.ƀgj}),this.ƀn.animate({value:1}).tap(()=>this.ƀgn()).attach(this)):(this.ƀm=1,this.ƀgj=void 0,this.ƀi.value=0,this.ƀgr.trigger({state:this.ƀjf,nextState:this.ƀgj})),this.ƀgt.trigger(this.ƀi.value));break;}}ƀgr=new Action;ƀgt=new Action;onStateChange(t){return this.ƀgr.subscribe(e=>t(e.state,e.nextState)).attach(this),this}onValueChange(t){return this.ƀgt.subscribe(e=>t(e)).attach(this),this}};var wi=(function(n){return n[n.Appear=1]="Appear",n[n.Disappear=2]="Disappear",n})({});var ce=class extends Attachable{static{a(this,"SlideStateAnimation");}ƀjg;ƀgy;ƀfe;ƀgi;ƀm=1;constructor(t){super(),this.ƀgy={duration:500,animation:x.easeInOutCubic,...t},this.ƀjg=new le({duration:this.ƀgy.duration,animation:this.ƀgy.animation}).onStateChange((e,i)=>this.ƀeo(e,i)).onValueChange(e=>this.ƀep(e)).attach(this);}setIndex(t,e){if(!Comparator.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfe===void 0?(this.ƀfe=t,this.ƀgr.trigger({state:1,index:t}),this.ƀjg.setState(t,e)):this.ƀfe!==t?this.ƀgi!==t?this.ƀm===1?(this.ƀm=t>this.ƀfe?2:3,this.ƀgi=t,this.ƀgr.trigger({state:1,index:this.ƀgi}),this.ƀjg.setState(t,e)):this.ƀjg.setState(t,e):this.ƀm===4&&this.ƀgi===t&&(this.ƀm=t>this.ƀfe?2:3,this.ƀjg.setState(t,e)):(this.ƀm===2||this.ƀm===3)&&(this.ƀm=4,this.ƀjg.setState(t,e));}ƀeo(t,e){switch(this.ƀfe!==void 0&&this.ƀfe!==t&&this.ƀfe!==e&&this.ƀgr.trigger({state:2,index:this.ƀfe}),this.ƀgi!==void 0&&this.ƀgi!==t&&this.ƀgi!==e&&this.ƀgr.trigger({state:2,index:this.ƀgi}),e!==void 0&&e!==this.ƀfe&&e!==this.ƀgi&&this.ƀgr.trigger({state:1,index:e}),this.ƀm){case 2:case 3:e===void 0?(this.ƀm=1,this.ƀfe=this.ƀgi,this.ƀgi=void 0):this.ƀfe!==t&&this.ƀem(t,e);break;case 4:e===void 0?(this.ƀm=1,this.ƀgi=void 0):this.ƀfe!==e&&this.ƀem(t,e);break}}ƀep(t){let e=1;(this.ƀm===3||this.ƀm===4&&this.ƀfe!==void 0&&this.ƀgi!==void 0&&this.ƀfe>this.ƀgi)&&(e=-1),(this.ƀm===1||t!==0)&&this.ƀgt.trigger({value:NumberHelper.ensurePositiveZero(-e*t),index:this.ƀfe}),this.ƀgi!==void 0&&this.ƀgt.trigger({value:NumberHelper.ensurePositiveZero(e*(1-t)),index:this.ƀgi});}ƀem(t,e){this.ƀfe=t,this.ƀgi=e,this.ƀgt.trigger({value:0,index:this.ƀfe}),this.ƀm=this.ƀfe<this.ƀgi?2:3;}ƀgr=new Action;ƀgt=new Action;onStateChange(t){return this.ƀgr.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀgt.subscribe(e=>t(e.value,e.index)).attach(this),this}};var De=(function(n){return n[n.Horizontal=1]="Horizontal",n[n.Vertical=2]="Vertical",n})({}),Le=class extends c{static{a(this,"SlideInContentByIndex");}ƀbv;ƀgy;ƀcm="x";ƀjg;ƀbk=new Map;constructor(t,e){super(),this.ƀbv=t,this.ƀgy={duration:300,animation:x.easeInOutCubic,size:new Vector$1(500,500),margin:20,direction:1,...e};let i=this.ƀgy.direction===1?new Vector$1(this.ƀgy.size.x+this.ƀgy.margin*2,this.ƀgy.size.y):new Vector$1(this.ƀgy.size.x,this.ƀgy.size.y+this.ƀgy.margin*2),r=new c().setPosition(this.ƀgy.direction===1?new Vector$1(-this.ƀgy.margin,0):new Vector$1(0,-this.ƀgy.margin),{round:false}).displayParent(this).attach(this);this.ƀca(i,this.ƀgy.margin,this.ƀgy.direction,r),this.ƀcm=this.ƀgy.direction===1?"x":"y",this.ƀjg=new ce({duration:this.ƀgy.duration,animation:this.ƀgy.animation}).onStateChange((s,o)=>{if(s===wi.Appear){let h=new c().displayParent(this).attach(this);this.ƀbk.set(o,h),this.ƀbv({index:o,container:h});}else {let h=this.ƀbk.get(o);h&&(h.destroy(),this.ƀbk.delete(o));}}).onValueChange((s,o)=>{let h=this.ƀbk.get(o);if(h){let l={x:0,y:0};l[this.ƀcm]=i[this.ƀcm]*s+this.ƀgy.margin,h.setPosition(Vector$1.fromVec2(l),{round:false});}}).attach(this),this.addChildTo=r;}setIndex(t,e){return this.ƀjg.setIndex(t,e),this}ƀca(t,e,i,r){new tt(r,new Vector$1(t.x,t.y),e,i).attach(this);}},Si=class extends Le{static{a(this,"SlideInContent");}itemToIndex=new Map;indexToItem=new Map;constructor(t,e,i){super(r=>{let s=this.indexToItem.get(r.index);if(s)e({index:r.index,item:s,container:r.container});else throw new Error(`SlideInContent: The item with index '${r.index}' is not part of the items list`)},i),t.forEach((r,s)=>{this.itemToIndex.set(r,s),this.indexToItem.set(s,r);});}setItem(t,e){let i=this.itemToIndex.get(t);if(i!==void 0)this.setIndex(i,e);else throw new Error(`SlideInContent: The item '${t}' is not part of the items list`);return this}};var it=class{static{a(this,"VectorSet");}ƀkc=new Map;add(t){let e=this.ƀkc.get(t.x);e||(e=new Set,this.ƀkc.set(t.x,e)),e.add(t.y);}has(t){let e=this.ƀkc.get(t.x);return e?e.has(t.y):false}delete(t){let e=this.ƀkc.get(t.x);return e?e.delete(t.y):false}};var Ge=class{static{a(this,"DeltaTime");}static adjustMultiplier(t,e){return Math.pow(t,e)}};var N=class{static{a(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$1(.5,.5)).multiplyNumber(e)}};var Be=class{static{a(this,"ClosestAvailableSpaceHelper");}static findByConvertingGridSpace(t,e,i){let r=new Vector$1(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),s=N.areaToGridArea(e,i);if(this.ƀat(t,s))return Vector$1.zero;let o=t.movePositionInsideGrid(s.topLeft),h=Vector$1.fromTo(s.topLeft,o),l=this.find(t,o,r);if(l){let p=l.add(h),u=Vector$1.fromTo(s.topLeft.multiplyNumber(i),e.topLeft);return new Vector$1(p.x*i+((r.x+1)*i-e.size.x)/2-u.x,p.y*i+((r.y+1)*i-e.size.y)/2-u.y)}}static find(t,e,i){let r=new it,s=new Queue(e);for(;s.notEmpty;){let o=s.pop();r.add(o);let h=new Rectangle(o,o.add(i));if(this.ƀat(t,h))return Vector$1.fromTo(e,o);t.getNeighborPositions(o,GridNeighborType.Ortogonal).forEach(l=>{r.has(l)||s.add(l);});}}static ƀat(t,e){if(!t.isAreaWithinBounds(e))return false;for(let i=e.topLeft.y;i<=e.bottomRight.y;i++)for(let r=e.topLeft.x;r<=e.bottomRight.x;r++)if(!t.get(new Vector$1(r,i)))return false;return true}};var bi=class{static{a(this,"PathfinderNode");}position;distanceFromStart;distanceToEnd;parent;closed=false;constructor(t,e,i,r=void 0){this.position=t,this.distanceFromStart=e,this.distanceToEnd=i,this.parent=r;}get pathLength(){return this.distanceFromStart+this.distanceToEnd}isEqual(t){return Vector$1.isEqual(this.position,t)}createSolutionPath(t){let e=[this.position],i=this.parent;for(;i!==void 0;)e.push(i.position),i=i.parent;return e.reverse(),{directPathAvailable:t,path:e}}getDistance(t){return this.position.getDistance(t)}},fs=class{static{a(this,"PathfinderGrid");}ƀel;ƀjd;ƀgk;ƀgw=new BinaryHeap("min");ƀax=[];constructor(t,e){this.ƀel=t,this.ƀjd=e,this.ƀgk=new Grid({size:t.size,defaultValue:void 0});let i=new bi(this.ƀjd,0,Number.MAX_SAFE_INTEGER);this.ƀgw.add(i.pathLength,i);}get hasOpenNodes(){return this.ƀgw.size>0}getNeighbors(t,e){return this.ƀel.getNeighborPositions(t.position,e).filter(i=>this.ƀel.get(i)).map(i=>this.ƀgk.get(i)||this.ƀcb(i))}popLowestPathCostNode(){let t=this.ƀgw.pop();return this.ƀgw.delete(t),t.closed=true,this.ƀax.push(t),t}changeNodeCost(t,e,i,r){this.ƀgw.delete(t),t.distanceFromStart=e,t.distanceToEnd=t.getDistance(i),t.parent=r,this.ƀgw.add(t.pathLength,t);}getBestClosedNode(){return this.ƀax.reduce((t,e)=>t.distanceToEnd<e.distanceToEnd?t:e)}ƀcb(t){let e=new bi(t,Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);return this.ƀgk.set(t,e),this.ƀgw.add(e.pathLength,e),e}},Dt=class{static{a(this,"PathFinder");}static findPath(t,e,i,r){let s=new fs(t,e);for(;s.hasOpenNodes;){let o=s.popLowestPathCostNode();if(o.isEqual(i))return o.createSolutionPath(true);let h=s.getNeighbors(o,r);for(let l of h)if(!l.closed){let p=o.distanceFromStart+o.getDistance(l.position);p<l.distanceFromStart&&s.changeNodeCost(l,p,i,o);}}return s.getBestClosedNode().createSolutionPath(false)}};var Ft=class{static{a(this,"VectorFieldPathFinder");}ƀjl;ƀw;ƀkk;ƀcn;ƀes;constructor(t,e){this.ƀjl=t,this.ƀw=e,this.ƀes=this.ƀdu(this.ƀw.size),this.ƀkk=new Grid({size:this.ƀw.size,defaultValue:this.ƀes}),this.ƀcn=new Grid({size:this.ƀw.size,defaultValue:void 0});let i=new it,r=new Queue;for(this.ƀdj(this.ƀw.cropAreaOutsideOfTheGrid(t)).forEach(o=>{this.ƀkk.set(o,0),r.add(o);});r.notEmpty;){let o=r.pop();if(!i.has(o)){i.add(o);let h=this.ƀkk.getOrFail(o);this.ƀdz(o,this.ƀw).forEach(l=>{if(!i.has(l.position)){let p=this.ƀkk.getOrFail(l.position),u=h+l.distance;this.ƀw.getOrFail(l.position)&&u<p&&(this.ƀkk.set(l.position,u),r.add(l.position));}});}}}getDirectionToTarget(t){if(!t.isInsideRectangle(this.ƀjl)){if(t=this.ƀkk.movePositionInsideGrid(t),this.ƀcn.has(t))return this.ƀcn.get(t);{let e=this.ƀdz(t,this.ƀw),i;return this.ƀkk.getOrFail(t)>=this.ƀes?e.some(s=>this.ƀw.get(s.position))&&(e.some(o=>!this.ƀw.get(o.position))?i=this.ƀdo(e):i=this.ƀdk(t,e)):i=this.ƀdk(t,e),this.ƀcn.set(t,i),i}}}ƀdo(t){let e=t.filter(i=>this.ƀw.get(i.position)).map(i=>i.direction.radian);return Radian.getAverage(...e)}ƀdk(t,e){let i=e.filter(r=>this.ƀkk.getOrFail(r.position)<this.ƀes).reduce((r,s)=>{let o=this.ƀkk.getOrFail(s.position)+s.distance;return o<r.bestWeight?(r.bestDirections=[s.direction],r.bestWeight=o):o===r.bestWeight&&r.bestDirections.push(s.direction),r},{bestDirections:[],bestWeight:this.ƀes}).bestDirections;return this.ƀee(i,t)}ƀee(t,e){if(t.length>0){let i=t.reduce((r,s)=>r.add(s),Vector$1.zero);if(i.isZero()||!this.ƀfj(e,i))return Random.pickRandomElement(t).radian;if(t.length>=1)return i.radian}}ƀfj(t,e){let i=t.add(this.ƀkd(e));return this.ƀw.isPointWithinBounds(i)&&this.ƀw.getOrFail(i)}ƀdz(t,e){return this.ƀkk.getNeighborDirections(t,GridNeighborType.All).map(i=>({position:t.add(i),direction:i,distance:i.x!==0&&i.y!==0?14:10}))}ƀdj(t){let e=[];for(let i=t.topLeft.y;i<=t.bottomRight.y;i++)for(let r=t.topLeft.x;r<=t.bottomRight.x;r++)e.push(new Vector$1(r,i));return e}ƀkd(t){let e=t.normalize().round();return new Vector$1(e.x,e.y)}ƀdu(t){return (t.x+t.y)*20}};function ws(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(ws,"_ts_decorate");function vi(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(vi,"_ts_metadata");var st=class extends F{static{a(this,"PhysicsWorldEntity");}mapSize;mapSizeCenter;modifyUpdateCycle;p2World;materials;materialDefinitions=new Map;physicsBodyGroupToP2Group=new Map;physicsBodyGroupToP2Mask=new Map;availabilityGridCache=new Map;vectorFieldCache=new Map;bodiesInContactWith=new Map;collisionReports=new Map;paused=new Variable(false);lastP2Time=new Variable(0);onPhysicsStep=new Action;constructor(t,e,i,r,s,o,h){super(),this.mapSize=t,this.mapSizeCenter=this.mapSize.multiplyNumber(.5),this.modifyUpdateCycle=e,this.p2World=i,this.materials=r,this.materialDefinitions=s,this.physicsBodyGroupToP2Group=o,this.physicsBodyGroupToP2Mask=h;}};st=ws([ft(),vi("design:type",Function),vi("design:paramtypes",[typeof Vector>"u"?Object:Vector,Boolean,typeof p2>"u"||typeof p2.World>"u"?Object:p2.World,typeof Map>"u"?Object:Map,typeof Map>"u"?Object:Map,typeof Map>"u"?Object:Map,typeof Map>"u"?Object:Map])],st);function bs(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(bs,"_ts_decorate");function Ei(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(Ei,"_ts_metadata");var pe=50,ue=class{static{a(this,"PathFinderService");}ƀhe;constructor(t){this.ƀhe=t;}findPathAStar(t,e,i,r,s){s||(s={}),s.neighborType===void 0&&(s.neighborType=GridNeighborType.Ortogonal),s.gridCellSize===void 0&&(s.gridCellSize=pe);let o=st.getInstanceByIDOrFail(t),h,l;Comparator.isNumber(i)?(l=T.getPhysicsInstanceOrFail(i).p2Body,h=E.arrayToVector(l.position)):h=i;let p=N.positionToGridPosition(e,s.gridCellSize),u=N.positionToGridPosition(h,s.gridCellSize),g=this.ƀhe.getAvilabilityGrid(o,s.gridCellSize,r);if(l){let M=E.aabbToBoundingBox(l.aabb),U=N.areaToGridArea(M,s.gridCellSize);g.setArea(U,true);}let y=Dt.findPath(g,p,u,s.neighborType);return y.path=y.path.map(M=>N.gridPositionToPosition(M,s.gridCellSize)),y}findPathDirection(t,e,i,r,s=pe){let o=st.getInstanceByIDOrFail(t),h;if(Comparator.isNumber(i)){let y=T.getPhysicsInstanceOrFail(i);h=E.aabbToBoundingBox(y.p2Body.aabb);}else h=new Rectangle(i,i);let l=N.areaToGridArea(h,s),p=JSON.stringify({targetGridArea:l,collidableWithGroup:r}),u=o.vectorFieldCache.get(p);if(!u){let y=this.ƀhe.getAvilabilityGrid(o,s,r);u=new Ft(l,y),o.vectorFieldCache.set(p,u);}let g=N.positionToGridPosition(e,s);return u.getDirectionToTarget(g)}};ue=bs([S(),Ei("design:type",Function),Ei("design:paramtypes",[typeof AvailabilityGridService>"u"?Object:AvailabilityGridService])],ue);function Cs(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Cs,"_ts_decorate");var A=new D,Lt=class{static{a(this,"PhysicsGateway");}createPhysicsWorld(t){return A.trigger("createPhysicsWorld",t)}getMapSize(t){return A.trigger("getMapSize",t)}setPaused(t,e){return A.trigger("setPaused",t,e)}hitTest(t,e){return A.trigger("hitTest",t,e)}findPath(t,e,i,r,s){return A.trigger("findPath",t,e,i,r,s)}findPathDirection(t,e,i,r){return A.trigger("findPathDirection",t,e,i,r)}applyImpulse(t,e,i,r){return A.trigger("applyImpulse",t,e,i,r)}createExplosion(t,e,i,r,s,o){return A.trigger("createExplosion",t,e,i,r,s,o)}createElipticExplosion(t,e,i,r,s,o,h){return A.trigger("createElipticExplosion",t,e,i,r,s,o,h)}printPathfindingTestGrid(t,e,i,r,s,o=pe){return A.trigger("printPathfindingTestGrid",t,e,i,r,s,o)}};Lt=Cs([S()],Lt);function Es(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Es,"_ts_decorate");function Ri(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(Ri,"_ts_metadata");var Gt=class{static{a(this,"PhysicsController");}ƀhm;ƀhb;ƀjn;ƀcz;ƀcu;ƀet;ƀhl;ƀfc;constructor(t,e,i,r,s,o,h,l){this.ƀhm=t,this.ƀhb=e,this.ƀjn=i,this.ƀcz=r,this.ƀcu=s,this.ƀet=o,this.ƀhl=h,this.ƀfc=l;}createPhysicsWorld(t){return this.ƀhm.createPhysicsWorld(t)}getMapSize(t){return this.ƀhl.getMapSize(t)}setPaused(t,e){this.ƀhm.setPaused(t,e);}hitTest(t,e){let i=T.getPhysicsInstanceOrFail(t);return this.ƀet.hitTest(i.p2Body,e)}findPath(t,e,i,r,s){return this.ƀhb.findPathAStar(t,e,i,r,{neighborType:s})}findPathDirection(t,e,i,r){return this.ƀhb.findPathDirection(t,e,i,r)}applyImpulse(t,e,i,r){let s=T.getPhysicsInstanceOrFail(t);this.ƀfc.applyImpulse(s.p2Body,e,i,r);}createExplosion(t,e,i,r,s,o){return this.ƀcz.createExplosion(t,e,i,r,s,o)}createElipticExplosion(t,e,i,r,s,o,h){return this.ƀcu.createElipticExplosion(t,e,i,r,s,o,h)}printPathfindingTestGrid(t,e,i,r,s,o){this.ƀjn.printPathfindingTestGrid(t,e,i,r,s,o);}};Gt=Es([k({controllerLink:A}),Ri("design:type",Function),Ri("design:paramtypes",[typeof PhysicsWorldService>"u"?Object:PhysicsWorldService,typeof PathFinderService>"u"?Object:PathFinderService,typeof TestVisualsService>"u"?Object:TestVisualsService,typeof ExplosionService>"u"?Object:ExplosionService,typeof ElipticExplosionService>"u"?Object:ElipticExplosionService,typeof HitTestService>"u"?Object:HitTestService,typeof PhysicsQueryService>"u"?Object:PhysicsQueryService,typeof ImpactService>"u"?Object:ImpactService])],Gt);function Ts(n,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,t,e,i);else for(var h=n.length-1;h>=0;h--)(o=n[h])&&(s=(r<3?o(s):r>3?o(t,e,s):o(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s}a(Ts,"_ts_decorate");function Oi(n,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,t)}a(Oi,"_ts_metadata");var Bt=class{static{a(this,"PhysicsInternalController");}ƀhm;ƀhk;ƀiv;ƀhl;ƀhf;constructor(t,e,i,r,s){this.ƀhm=t,this.ƀhk=e,this.ƀiv=i,this.ƀhl=r,this.ƀhf=s;}createBody(t,e,i,r,s){return this.ƀiv.createBody(t,e,i,r,s)}getMaterial(t,e){return this.ƀhk.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀhk.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀhf.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀhf.getMaskConstant(t,e)}addBody(t,e,i,r,s){return this.ƀhm.addBody(t,e,i,r,s)}removeBody(t,e){this.ƀhm.removeBody(t,e);}subscribeToPhysicsStep(t,e){return this.ƀhl.subscribeToPhysicsStep(t,e)}};Bt=Ts([k({controllerLink:W}),Oi("design:type",Function),Oi("design:paramtypes",[typeof PhysicsWorldService>"u"?Object:PhysicsWorldService,typeof MaterialsService>"u"?Object:MaterialsService,typeof ShapeCreationService>"u"?Object:ShapeCreationService,typeof PhysicsQueryService>"u"?Object:PhysicsQueryService,typeof PhysicsBodyGroupService>"u"?Object:PhysicsBodyGroupService])],Bt);export{$e as AnimationFlicker,X as AnimationInterpolationFunctions,x as Animations,$ as AnimationsCompletionHandlingType,L as Animator,lo as BORDER_MATERIAL_NAME,v as BardLegendsHardReset,kt as BlendMode,Pt as Camera,q as CameraGateway,Be as ClosestAvailableSpaceHelper,c as Container,we as ContainerEventType,k as ControllerDecorator,D as ControllerLink,rr as Cursor,w as DEFAULT_RESOLUTION,Ge as DeltaTime,Re as DisplayObjectArray,F as Entity,ft as EntityDecorator,mi as FadeInContent,he as FadeInStateAnimation,dr as FocusingAnimation,f as Game,O as Graphics,ge as ImmovablePhysicsEntity,At as KeyboardService,dt as Menu,Ie as MenuEntity,Q as MouseService,Mt as MouseTargetFocusService,It as MouseWheelListenerUI,ye as MovableEntity,xe as MovablePhysicsEntity,Dt as PathFinder,T as PhysicsEntity,Lt as PhysicsGateway,ao as PhysicsShapeType,Ce as Placeholder,xt as PositionConversionHelper,oo as ROTATIONAL_SPEED_LIMIT,H as ReAnimateHandlingType,Ee as RichText,no as SPEED_LIMIT,ot as Scene,Vi as SceneDecorator,Fe as ScrollAreaUI,De as ScrollDirection,tt as ScrollMaskUI,m as Service,S as ServiceDecorator,Y as SingletonEntity,Si as SlideInContent,Le as SlideInContentByIndex,ce as SlideStateAnimation,wi as SlideStateAnimationState,j as Sprite,le as StateAnimation,Rt as Text,Te as UpdatableContainer,d as UpdateCycle,Ft as VectorFieldPathFinder,it as VectorSet,mt as View,me as ViewDecorator};
67
+ }`,e}constructor(t,e){if(super(o.ƀef(),o.ƀdo(t*R)),this.ƀcw=t,this.resolution=R,this.ƀcw=t*R,this.ƀcw<0)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be smaller than 0");if(this.ƀcw>10)throw new Error("ExpandWithColorFilter: Expand * resolution cannot be higher than 10");hs.isInteger(this.ƀcw)||(this.ƀcw=Math.floor(this.ƀcw));let i=as.normalize(e);this.uniforms.color=new Float32Array([i.red,i.green,i.blue]),this.uniforms.expandSquared=this.ƀcw*this.ƀcw,this.padding=this.ƀcw}apply(t,e,i,r){this.uniforms.pixelSize=new Float32Array([1/(e.width*R),1/(e.height*R)]),t.applyFilter(this,e,i,r)}};var Ee=class extends Ot.Filter{static{h(this,"GlowFilter")}constructor(t){super(),this.resolution=R;let e={blurRadius:1,expand:0,color:ls.white,blendMode:Et.Screen,...t};this.ƀcx=new Te(e.expand,e.color);let i=cs.isNumber(e.blurRadius)?new ps(e.blurRadius,e.blurRadius):e.blurRadius;this.ƀah=new Rt(i),this.padding=Math.max(i.x,i.y)+e.expand,this.ƀah.blendMode=Ot.BLEND_MODES.SCREEN}apply(t,e,i,r){let s=t.getFilterTexture();this.ƀcx.apply(t,e,s,Ot.CLEAR_MODES.CLEAR),this.ƀah.apply(t,s,i,r),t.returnFilterTexture(s)}};var qt=class o{static{h(this,"GlowSpriteGenerator")}static{this.ƀei=new Map}static createGlowSpriteFromSprite(t,e,i){let r=this.ƀbc(e),s=us.isNumber(r.blurRadius)?new Hi(r.blurRadius,r.blurRadius):r.blurRadius,n=this.ƀdq(t.texture,s,r.expand,r.color,i),a=new Qt.Sprite(n);return this.ƀir(a,Hi.fromVec2(t.anchor),Math.max(s.x,s.y)+r.expand),a.alpha=r.glowAlpha,a.blendMode=r.blendMode,a}static ƀdq(t,e,i,r,s){if(!t.id)throw new Error("GlowSpriteGenerator: baseTexture should have an id");if(s){let n=`${t.id}-${i}-${e.x}-${e.y}-${r.r}-${r.g}-${r.b}`;if(o.ƀei.has(n))return o.ƀei.get(n);{let a=this.ƀdr(t,e,i,r);return o.ƀei.set(n,a),a}}else return this.ƀdr(t,e,i,r)}static ƀdr(t,e,i,r){let s=new Qt.Sprite(t);this.ƀcz(s,Math.max(e.x,e.y)+i),s.filters=[new Ee({blurRadius:e,expand:i,color:r})];let n=w.instance.renderer.generateTexture(s);return n.id=M.insertAsset(n),s.destroy(),n}static ƀir(t,e,i){let r=(i+(t.width-i*2)*e.x)/t.width,s=(i+(t.height-i*2)*e.y)/t.height;t.anchor.set(r,s)}static ƀcz(t,e){if(t.isSprite){let s=new Qt.Graphics;t.addChild(s)}let i=t.width,r=t.height;t.calculateBounds=function(){this._bounds.clear(),this._bounds.addFrame(this.transform,-e,-e,i+e,r+e)}}static ƀbc(t){let e={glowAlpha:1,blurRadius:5,expand:0,color:ds.white,blendMode:Et.Add};return t&&(e={...e,...t}),e}};G.onHardReset.subscribe(()=>{qt.ƀei.clear()}).attachToRoot();var Z=class o extends u{static{h(this,"Sprite")}static createByName(t){let e=w.setupOptions.spriteDefinitions[t];if(!e)throw new Error(`Sprite: Could not find sprite definition with name ${t}.`);return new o(e)}static createSnapshotSprite(t){let e=t.pixiContainer,i=e.parent;i&&i.removeChild(e);let r=w.instance.renderer.generateTexture(e,{resolution:2,scaleMode:N.SCALE_MODES.LINEAR,multisample:N.MSAA_QUALITY.HIGH});i&&i.addChild(e);let n={id:M.insertAsset(r),scale:t.scale,size:t.size,anchor:te.zero,boundingShapes:void 0,destroyAssetOnDestroy:!0};return new o(n,{ignoreAnchor:!0})}constructor(t,e={}){if(super(),this.ƀjq=1,!t)throw new Error("Sprite: spriteDefinition cannot be nullish!");this.ƀiz=t,this.pixiSprite=new N.Sprite(M.getAsset(t.id)),this.pixiContainer.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.ƀfz?.destroy(),this.ƀaj?.destroy(),this.ƀiz.destroyAssetOnDestroy&&(M.destroyAsset(this.ƀiz.id),this.ƀhn&&M.destroyAsset(this.ƀhn.texture.id)),this.ƀhn&&!this.ƀhn.destroyed&&this.ƀhn.destroy())}setTextureScale(t){return this.textureScale=t,this}get textureScale(){return this.ƀjq}set textureScale(t){this.ƀjq=t,this.pixiSprite.scale.set(t)}get size(){return new te(this.pixiSprite.width,this.pixiSprite.height)}getMask(){return this.pixiSprite}set interactive(t){super.interactive=t,t&&this.ƀiz.boundingShapes&&!this.pixiContainer.hitArea&&(this.pixiContainer.hitArea=new xe(this.ƀiz.boundingShapes,this.size,te.fromVec2(this.ƀiz.anchor)))}setMipmap(t){return this.mipmap=t,this}get mipmap(){return this.pixiSprite.texture.baseTexture.mipmap===N.MIPMAP_MODES.ON}set mipmap(t){t?this.pixiSprite.texture.baseTexture.mipmap=N.MIPMAP_MODES.ON:this.pixiSprite.texture.baseTexture.mipmap=N.MIPMAP_MODES.OFF}setBlendMode(t){return this.blendMode=t,this}get blendMode(){return this.pixiSprite.blendMode}set blendMode(t){this.pixiSprite.blendMode=t}setTint(t){return this.tint=t,this}get tint(){return new N.Color(this.pixiSprite.tint).toRgb()}set tint(t){this.pixiSprite.tint=t}setShapeAlpha(t){return this.pixiSprite.alpha=t,this}get shapeAlpha(){return this.pixiSprite.alpha}set shapeAlpha(t){this.pixiSprite.alpha=t}setGlowAlpha(t){return this.glowAlpha=t,this}get glowAlpha(){if(this.ƀhn)return this.ƀhn.alpha;throw new Error("Sprite: getGlowFilterAlpha cannot be called before glow filter is added.")}set glowAlpha(t){if(this.ƀhn)this.ƀhn.alpha=t;else throw new Error("Sprite: setGlowFilterAlpha cannot be called before glow filter is added.")}getAlignmentVector(t){let e=te.fromVec2(this.ƀiz.anchor).to(t);return new te(this.size.x*e.x,this.size.y*e.y)}setGlowEffect(t){return this.ƀhn&&(this.ƀhn.destroy(),this.ƀhn=void 0),t&&(this.ƀhn=qt.createGlowSpriteFromSprite(this.pixiSprite,t,!this.ƀiz.destroyAssetOnDestroy),this.ƀhn.position.set(this.pixiSprite.x,this.pixiSprite.y),this.ƀhn.scale.set(this.pixiSprite.scale.x,this.pixiSprite.scale.y),this.pixiContainer.addChild(this.ƀhn)),this}showBoundingShape(t){return t?this.ƀaj||(this.ƀaj=this.ƀbs().setAlpha(.3).setTint({r:0,g:0,b:200}).displayParent(this)):this.ƀaj&&(this.ƀaj.destroy(),this.ƀaj=void 0),this}getBoundingMask(){if(!this.ƀfz){if(!this.ƀiz.boundingShapes)throw new Error("Sprite: cropOverflowingParts cannot be used without polygonDefinition!");this.ƀfz=this.ƀbs(),this.ƀfz.pixiSprite._maskRefCount=Number.POSITIVE_INFINITY,this.ƀfz.pixiSprite.renderable=!1,this.ƀfz.displayParent(this)}return this.ƀfz}ƀbs(){if(!this.ƀiz.boundingShapes)throw new Error("Sprite: bounding shape cannot be created without polygonDefinition!");return E.createPolygon(this.ƀiz.boundingShapes,fs.white).toSprite().attach(this)}download(){let t=w.instance.renderer.extract.canvas(this.pixiContainer);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}};import{ArrayHelper as ms,Vector as gs}from"helpers-lib";var Re=class{static{h(this,"DashedLineHelper")}static getLines(t,e,i){let r=gs.fromTo(t,e),s=r.normalize(),n=r.length-i.lineStartGap-i.lineEndGap,a=[];if(n<=0)return a;let l=t.add(s.normalize(i.lineStartGap));if(n<=i.dashGap+i.dashLength*.5)return a.push({from:l,to:l.add(s.normalize(n))}),a;let c=n-i.dashGap,p=i.dashLength+i.dashGap,f=Math.floor(c/p),g=c-p*f;f>=1&&g<i.dashLength&&(g+=p,f--);let T=s.normalize(g/2),J=s.normalize(i.dashGap);if(a.push({from:l,to:l.add(T)}),l=l.add(T),f>0){let ot=s.normalize(i.dashLength);ms.createEmptyArray(f).forEach(()=>{l=l.add(J),a.push({from:l,to:l.add(ot)}),l=l.add(ot)})}return l=l.add(J),a.push({from:l,to:l.add(T)}),a}};var E=class o extends u{static{h(this,"Graphics")}static{this.ƀcq=new Map}static createArrow(t,e){let i=new V.Graphics,r=[[{x:0,y:-t/2},{x:t*3/8,y:-t/8},{x:t/4,y:0},{x:0,y:-t/4},{x:-t/4,y:0},{x:-t*3/8,y:-t/8}],[{x:0,y:-t/4},{x:t/8-t/30,y:-t/8-t/30},{x:t/8-t/30,y:t*7/16},{x:-t/8+t/30,y:t*7/16},{x:-t/8+t/30,y:-t/8-t/30}]];return i.beginFill(e),r.forEach(s=>{i.drawPolygon(s.map(n=>new V.Point(n.x,n.y)))}),i.endFill(),new o(i,JSON.stringify({type:"arrow",size:t,color:e}))}static createDashedLine(t,e,i){let r={width:2,dashLength:10,dashGap:4,lineStartGap:0,lineEndGap:0,color:ai.white,...i},s=new V.Graphics;return s.lineStyle(r.width,r.color),Re.getLines(t,e,r).forEach(a=>{s.moveTo(a.from.x,a.from.y).lineTo(a.to.x,a.to.y)}),new o(s,JSON.stringify({type:"dashedLine",from:t,to:e,options:r}))}static createVector(t,e,i){let r=new V.Graphics;return r.lineStyle(2,i),r.moveTo(t.x,t.y),r.lineTo(e.x,e.y),r.lineStyle(1,i),r.beginFill(ai.white),r.drawCircle(t.x,t.y,3),r.endFill(),new o(r,JSON.stringify({type:"line",start:t,end:e,color:i}))}static createRectangleBorders(t,e,i){let r=new V.Graphics;return r.beginFill(i),r.drawRect(0,0,t.x,e),r.drawRect(0,e,e,t.y-e*2),r.drawRect(t.x-e,e,e,t.y-e*2),r.drawRect(0,t.y-e,t.x,e),r.endFill(),new o(r,JSON.stringify({type:"rectangle-borders",size:t,borderSize:e,color:i}))}static createRectangle(t,e=ai.white){let i=new V.Graphics;return i.beginFill(e),i.drawRect(0,0,t.x,t.y),i.endFill(),new o(i,JSON.stringify({type:"rectangle",size:t,color:e}))}static createCircle(t,e){let i=new V.Graphics;return i.beginFill(e),i.drawCircle(0,0,t),i.endFill(),new o(i,JSON.stringify({type:"circle",radius:t,color:e}))}static createElipse(t,e){let i=new V.Graphics;return i.beginFill(e),i.drawEllipse(0,0,t.x,t.y),i.endFill(),new o(i,JSON.stringify({type:"elipse",size:t,color:e}))}static createPolygon(t,e){let i=new V.Graphics,r=JSON.stringify({type:"polygon",polygon:t,color:e});return i.beginFill(e),t.forEach(s=>{i.drawPolygon(s.map(n=>new V.Point(n.x,n.y)))}),i.endFill(),new o(i,r)}static createRegularPolygon(t,e,i){let r=new V.Graphics,s=new ws(ys/t);r.beginFill(i),r.moveTo(e,0);for(let n=1;n<=t;n++){let l=s.multiply(n).vector.normalize(e),c=e+l.x,p=e+l.y;r.lineTo(c,p)}return r.endFill(),new o(r,JSON.stringify({type:"regular-polygon",sides:t,radius:e,color:i}))}constructor(t,e){super(),this.pixiContainer.addChild(t),this.pixiGraphics=t,this.ƀal=e}destroy(){this.destroyed||(super.destroy(),!this.pixiGraphics.destroyed&&this.pixiGraphics.destroy())}toSprite(t){let e={cacheName:this.ƀal,keepBounds:!0,cache:!1,...t},i=this.ƀec(e.cacheName,e.cache),r={id:i.assetID,scale:1,size:i.bounds,anchor:{x:0,y:0},boundingShapes:void 0,destroyAssetOnDestroy:!e.cache},s=new Z(r,{texturePosition:i.bounds,ignoreAnchor:!0});return this.attachToRoot(),this.destroy(),s}ƀec(t,e){if(e){let i=o.ƀcq.get(t);return i||(i=this.ƀce(),o.ƀcq.set(t,i)),i}else return this.ƀce()}ƀce(){let t=w.instance.renderer.generateTexture(this.pixiGraphics);t.id=M.insertAsset(t);let e=this.pixiGraphics.getBounds();return{assetID:t.id,bounds:new xs(e.x,e.y)}}};import*as Wi from"pixi.js";var hi=class extends u{static{h(this,"Placeholder")}constructor(t){super(),this.ƀho=new Wi.Graphics,this.ƀho.beginFill(0,1e-9),this.ƀho.drawRect(0,0,t.x,t.y),this.ƀho.endFill(),this.pixiContainer.addChild(this.ƀho)}destroy(){this.destroyed||(super.destroy(),this.ƀho.destroy())}};import*as Dt from"pixi.js";import{RichTextSeparator as bs}from"script-engine-lib";import{ColorHelper as Ie,Radian as vs}from"helpers-lib";var Mt=class{static{h(this,"TextStyleConverter")}static getPixiTextStyle(t){let e={color:Ie.white,align:"center",fontFamily:"Arial",fontStyle:"normal",fontSize:18,lineHeight:void 0,wordWrapWidth:void 0,lineThrough:!1,...t},i=t?.dropShadow===!0?{}:t?.dropShadow,r={};if(i){let s={blur:4,angle:vs.get60,distance:10,color:Ie.black,alpha:.5,...i};r={dropShadow:!0,dropShadowBlur:s.blur,dropShadowAngle:s.angle.value,dropShadowDistance:s.distance,dropShadowColor:Ie.rgbToHex(s.color),dropShadowAlpha:s.alpha}}return{fontFamily:e.fontFamily,fill:Ie.rgbToHex(e.color),align:e.align,fontSize:e.fontSize,fontStyle:e.fontStyle,lineHeight:e.lineHeight,wordWrapWidth:e.wordWrapWidth,wordWrap:e.wordWrapWidth!==void 0,lineThrough:e.lineThrough,...r}}};var Ae=class{static{h(this,"RichTextDataInConverter")}static process(t,e){let i=new Set(e.styles?Object.keys(e.styles):[]),r=bs.process(t,i),s=this.ƀfc(r,e),n=this.ƀr(s);return this.ƀix(n)}static ƀfc(t,e){let i=new Map,r=new Map,s=h((a,l)=>{if(r.has(l))return r.get(l);let c=Mt.getPixiTextStyle(a);return r.set(l,c),c},"GetPixiStyle");return t.map(a=>{let{style:l,cacheKey:c}=this.ƀdm(a.tags,e,i),p=s(l,c),f=Dt.TextMetrics.measureText(" ",new Dt.TextStyle(p),!1);return{text:a.text,cacheKey:c,style:l,pixiStyle:p,spaceWidth:f.width}})}static ƀdm(t,e,i){let r=t.join("+");if(i.has(r))return{style:i.get(r),cacheKey:r};let s=this.ƀba(t,e);return i.set(r,s),{style:s,cacheKey:r}}static ƀba(t,e){let i={...e.default};for(let l of t)e.styles&&e.styles[l]&&(i={...i,...e.styles[l]});let{wordWrapWidth:r,align:s,dropShadow:n,...a}=i;return a}static ƀr(t){let e=[],i=[];return t.forEach((r,s)=>{r.text.split(/\r?\n/).forEach((a,l)=>{l>0&&(e.push(i),i=[]),i.push({text:a,cacheKey:r.cacheKey,style:r.style,pixiStyle:r.pixiStyle,spaceWidth:r.spaceWidth})})}),e.push(i),e}static ƀix(t){let e=[];return t.forEach(i=>{if(i.length===0)throw new Error("Internal Error: Line is unexpectedly empty");let r=i.flatMap(s=>this.ƀiy(s.text).map(a=>{let l=new Dt.TextStyle(s.pixiStyle),c=Dt.TextMetrics.measureText(a,l,!1);return{text:a,whitespace:a.trim()==="",style:{cacheKey:s.cacheKey,style:s.style,pixiStyle:l,height:c.height,ascent:c.fontProperties.ascent,descent:c.fontProperties.descent,width:c.width,spaceWidth:s.spaceWidth}}}));e.push(r)}),e}static ƀiy(t){if(t==="")return[""];let e=[],i="",r=t[0]===" ";for(let s=0;s<t.length;s++){let n=t[s],a=n===" ";a===r?i+=n:(e.push(i),i=n,r=a)}return i&&e.push(i),e}};import{Vector as Ui}from"helpers-lib";var Oe=class{static{h(this,"ConsistentSpaceTextWrapper")}static wrapText(t,e){return t.forEach(i=>{i.forEach((r,s)=>{if(e.isSpaceAvailable(new Ui(r.style.width,r.style.height)))if(r.whitespace&&s===i.length-2){let n=i[i.length-1];e.isSpaceAvailable(new Ui(n.style.width+r.style.width,n.style.height))?e.insertWord(r):this.ƀkm(r,e)}else e.insertWord(r);else e.lineIsEmpty?e.insertWord(r):r.whitespace?this.ƀkm(r,e):(e.newLine(),e.insertWord(r))}),e.newLine()}),e.print()}static ƀkm(t,e){let i=Math.max(0,Math.floor(e.remainingWidth/t.style.spaceWidth)),r=Math.max(0,Math.min(i,t.text.length-1));if(r>0){let n={text:" ".repeat(r),whitespace:!0,style:{...t.style,width:r*t.style.spaceWidth}};e.insertWord(n)}e.newLine();let s=t.text.length-r-1;if(s>0){let n={text:" ".repeat(s),whitespace:!0,style:{...t.style,width:s*t.style.spaceWidth}};e.insertWord(n)}}};import{Rectangle as Ps,Vector as D}from"helpers-lib";var Me=class{static{h(this,"RichTextTypewriter")}get lineIsEmpty(){return this.ƀch.length===0}get remainingWidth(){return this.ƀkl-this.ƀcj}constructor(t,e){if(this.ƀkl=t,this.ƀfr=[],this.ƀch=[],this.ƀcj=0,this.ƀfq=new D(0,0),this.ƀci=0,this.ƀeu=e?.horizontalAlignment??"left",this.ƀkd=e?.verticalAlignment??"bottom",e?.rectangleCutOption){if(e.rectangleCutOption.position.x<0||e.rectangleCutOption.position.x>=this.ƀkl||e.rectangleCutOption.position.y<0)throw new Error("Rectangle cut position is out of bounds");this.ƀck={direction:e.rectangleCutOption.direction,rectangle:this.ƀbo(e.rectangleCutOption)}}}isSpaceAvailable(t){let e=Math.max(this.ƀci,t.y),i=this.ƀdu(this.ƀfq.y,this.ƀfq.y+e);return this.ƀcj+t.x<=i}insertWord(t){let e=Math.max(this.ƀci,t.style.height);if(this.ƀch.length===0){let i=this.ƀdv(this.ƀfq.y,this.ƀfq.y+e);this.ƀfq=new D(i,this.ƀfq.y),this.ƀcj=this.ƀfq.x}this.ƀch.push({chunk:t,position:new D(this.ƀcj,this.ƀfq.y)}),this.ƀci=e,this.ƀcj+=t.style.width}newLine(){let t=this.ƀfq.y+this.ƀci,e=this.ƀdv(t,t);this.ƀdb(),this.ƀfq=new D(e,t),this.ƀcj=this.ƀfq.x,this.ƀci=0}print(){return this.ƀdb(),this.ƀfr}ƀdb(){this.ƀch.length>0&&(this.ƀfr.push(this.ƀg(this.ƀch)),this.ƀch=[])}ƀg(t){return t=this.ƀkf(t),t=this.ƀew(t),t}ƀew(t){if(this.ƀeu==="left")return t;let e=this.ƀfq.y+this.ƀci,i=this.ƀdv(this.ƀfq.y,e),s=this.ƀdu(this.ƀfq.y,e)-i,n=Math.min(s,t.reduce((l,c)=>l+c.chunk.style.width,0)),a;return this.ƀeu==="center"?a=(s-n)/2:a=s-n,t.map(l=>(l={chunk:l.chunk,position:new D(l.position.x+a,l.position.y)},l))}ƀkf(t){let e=Math.max(...t.map(r=>r.chunk.style.ascent)),i=Math.max(...t.map(r=>r.chunk.style.descent));return t.map(r=>{let s;switch(this.ƀkd){case"top":s=i-r.chunk.style.descent;break;case"center":s=(i-r.chunk.style.descent+e-r.chunk.style.ascent)*.5;break;case"bottom":s=e-r.chunk.style.ascent;break}return r={chunk:r.chunk,position:new D(r.position.x,r.position.y+s)},r})}ƀdv(t,e){return this.ƀck&&(this.ƀck.direction==="topLeft"||this.ƀck.direction==="bottomLeft")&&(this.ƀck.rectangle.isPointInside(new D(0,t),{includeEdges:!1})||this.ƀck.rectangle.isPointInside(new D(0,e),{includeEdges:!1}))?this.ƀck.rectangle.bottomRight.x:0}ƀdu(t,e){return this.ƀck&&(this.ƀck.direction==="topRight"||this.ƀck.direction==="bottomRight")&&(this.ƀck.rectangle.isPointInside(new D(this.ƀkl,t),{includeEdges:!1})||this.ƀck.rectangle.isPointInside(new D(this.ƀkl,e),{includeEdges:!1}))?this.ƀck.rectangle.topLeft.x:this.ƀkl}ƀbo(t){let e,i;switch(t.direction){case"topRight":e=new D(t.position.x,-1/0),i=new D(1/0,t.position.y);break;case"topLeft":e=new D(-1/0,-1/0),i=t.position;break;case"bottomRight":e=t.position,i=new D(1/0,1/0);break;case"bottomLeft":e=new D(-1/0,t.position.y),i=new D(t.position.x,1/0);break}return new Ps(e,i)}};var De=class{static{h(this,"RichTextDataOutConverter")}static process(t){return t=this.ƀgd(t),t=this.ƀjw(t),this.ƀau(t)}static ƀgd(t){return t.map(e=>{let i=[],r,s=!0;return e.forEach(n=>{if(!r||r.chunk.style.cacheKey!==n.chunk.style.cacheKey)r&&i.push(r),r=n,s=n.chunk.whitespace;else{let a=r.chunk.text+n.chunk.text;s=n.chunk.whitespace&&s,r={chunk:{text:a,whitespace:s,style:{...r.chunk.style,width:r.chunk.style.width+n.chunk.style.width}},position:r.position}}}),r&&i.push(r),i})}static ƀjw(t){return t.map(e=>{if(e.length===0)return[];let i=e.pop();if(!i.chunk.whitespace||i.chunk.text===""){let r=i.chunk.text.length,s=i.chunk.text.trimEnd();r!==s.length?e.push({chunk:{text:s,whitespace:!1,style:{...i.chunk.style,width:i.chunk.style.width-(r-s.length)*i.chunk.style.spaceWidth}},position:i.position}):e.push(i)}return e})}static ƀau(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 ee=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=Ae.process(t,e),r=new Me(e.default.wordWrapWidth??1/0,{rectangleCutOption:e.rectangleCut,verticalAlignment:e.verticalAlignment,horizontalAlignment:e.default.align}),s=Oe.wrapText(i,r);return De.process(s)}};import{ColorHelper as Ss,Vector as $i}from"helpers-lib";import*as z from"pixi.js";var Cs=1,zi=1/Cs,ie=class extends u{static{h(this,"Text")}get ƀjo(){if(!this.ƀjp){let t=new z.TextStyle(this.ƀhq);this.ƀjp=z.TextMetrics.measureText(this.ƀjn,t)}return this.ƀjp}get ascent(){return this.ƀjo.fontProperties.ascent}constructor(t,e){super(),this.ƀhq=Mt.getPixiTextStyle(e),this.setText(t)}destroy(){this.destroyed||(super.destroy(),!this.ƀhp.destroyed&&this.ƀhp.destroy())}setAnchor(t){return this.anchor=t,this}get anchor(){return new $i(this.ƀhp.anchor.x,this.ƀhp.anchor.y)}set anchor(t){this.ƀhp.anchor.set(t.x,t.y)}setPosition(t,e){if(e?.holdFrom){let i=this.ƀhq.dropShadowDistance??0,r=new $i(e.holdFrom.x*i,e.holdFrom.y*i);t=t.add(r)}return super.setPosition(t,e),this}setText(t){return this.ƀjn!==t&&(this.ƀjn=t,this.ƀhx()),this}setColor(t){let e=Ss.rgbToHex(t);return this.ƀhq.fill!==e&&(this.ƀhq.fill=e,this.ƀhx()),this}ƀhx(){this.ƀhp?.destroy(),this.ƀji?.destroy(),this.ƀji=void 0,this.ƀjp=void 0;let t=new z.TextStyle(this.ƀhq);this.ƀhp=new z.Text(this.ƀjn,t),this.ƀhp.scale.set(zi,zi),this.pixiContainer.addChild(this.ƀhp),this.ƀhq.lineThrough&&(this.ƀji=this.ƀe(this.ƀhp,this.ƀhq.fill),this.pixiContainer.addChild(this.ƀji))}ƀe(t,e){let i=z.TextMetrics.measureText(t.text,t.style),r=Math.max(1,Math.round(i.lineHeight*.07)),s=r%2*.5,n=new z.Graphics;n.lineStyle(r,e);let a=0;return i.lines.forEach((l,c)=>{let p=z.TextMetrics.measureText(l,t.style),f=Math.round(a+(p.fontProperties.ascent-p.fontProperties.descent)*.6+p.fontProperties.descent)+s,g=0;t.style.align==="center"?g=0+(t.width-p.width)*.5:t.style.align==="right"&&(g=0+t.width-p.width),g=Math.floor(g),n.moveTo(Math.floor(g),f),n.lineTo(Math.floor(g+p.width),f),a+=p.lineHeight}),n.endFill(),n}};var li=class extends u{static{h(this,"RichText")}constructor(t,e){super(),ee.process(t,e).forEach(r=>new ie(r.text,r.style).setPosition(r.position).displayParent(this).attach(this))}};var ci=class extends u{static{h(this,"UpdatableContainer")}},pi=class extends u{static{h(this,"DisplayObjectArray")}constructor(t,e){super(),this.ƀbu=t,this.ƀcn=new Map,this.ƀgx={trackBy:h((i,r)=>r,"trackBy"),positioning:{direction:"vertical",spacing:0},...e}}set(t){let e=new Set(this.ƀcn.values()),i=0;t.forEach((r,s)=>{let n=this.ƀgx.trackBy(r,s),a;this.ƀcn.has(n)?(a=this.ƀcn.get(n),e.delete(a),a.update(r)):(a=this.ƀbu(r).displayParent(this).attach(this),this.ƀcn.set(n,a)),this.ƀgx.positioning.direction==="horizontal"?(a.x=i,i+=a.size.x+this.ƀgx.positioning.spacing):(a.y=i,i+=a.size.y+this.ƀgx.positioning.spacing)}),e.forEach(r=>{r.destroy()})}};import{SingleAction as ki,SingleEvent as Ts}from"actions-lib";import{ColorHelper as Es,Vector as Be}from"helpers-lib";var Bt=class o extends u{static{h(this,"Menu")}static{this.ƀju=!1}static closeAll(){return o.ƀgw?o.ƀgw.close():Ts.instant()}constructor(t,e){super(),this.ƀgp=new ki,this.onOpen=this.ƀgp.notifier,this.ƀgk=new ki,this.onClose=this.ƀgk.notifier;let i={closeOnBackgroundClick:!0,appearAnimationDuration:150,darkeningAlpha:.3,...e};this.setZIndex(100).setAlpha(0),this.ƀn=new O(this,"alpha",{animation:S.easeInOutCubic,duration:i.appearAnimationDuration,reAnimateHandling:_.CompletePrevious,completionHandling:I.StayInCurrentState}),this.ƀz=E.createRectangle(new Be(1,1),Es.black).toSprite({cache:!0}).setAlpha(i.darkeningAlpha).setInteractive(!0).displayParent(this).attach(this),this.ƀgc=Z.createByName(t).setPosition(new Be(0,0)).setInteractive(!0).displayParent(this).attach(this),w.instance.screenSize.subscribe(r=>{this.ƀz.aspectRatio=r.x/r.y,this.ƀz.scale=Math.max(r.x,r.y),this.ƀz.setPosition(Be.zero,{holdFrom:Be.half}),this.setPosition(r.multiplyNumber(.5))}).attach(this),o.ƀgw=this,this.onDestroy().tap(()=>{o.ƀgw=void 0}).attachToRoot(),i.closeOnBackgroundClick&&this.ƀz.on(kt.Click,()=>{o.ƀju||this.ƀp(!1)}).attach(this),this.ƀp(!0)}getBoundingMask(){return this.ƀgc.getBoundingMask()}close(){return this.ƀp(!1)}ƀp(t){if(o.ƀju)throw new Error("WindowUI: cannot iterate while in transition");return o.ƀju=!0,this.ƀn.animate({alpha:t?1:0}).chain(this).tap(()=>{o.ƀju=!1,t?this.ƀgp.resolve():(this.ƀgk.resolve(),this.destroy())}).chainToRoot()}};import{SingleAction as di}from"actions-lib";var ui=class extends gt{static{h(this,"MenuEntity")}constructor(t,e){super(),this.ƀgn=new di,this.onCreate=this.ƀgn.notifier,this.ƀgp=new di,this.onOpen=this.ƀgp.notifier,this.ƀgk=new di,this.onClose=this.ƀgk.notifier,Bt.closeAll().tap(()=>{if(!St.getActiveScene())throw new Error("WindowEntity: constructor is called when there is no active scene!");w.pause.effect(!0).attach(this),this.ƀgc=new Bt(t,e).displayParent(w.camera.layers.foregroundScreen).attach(this),this.ƀgn.resolve(this.ƀgc),this.ƀgc.onOpen.subscribe(()=>this.ƀgp.resolve()).attach(this),this.ƀgc.onClose.subscribe(()=>{this.ƀgk.resolve(),this.destroy()}).attach(this)}).attach(this)}close(){if(this.ƀgc){let t=this.onClose.toSingleEvent().destroyIfNotAttached();return this.ƀgc.close(),t}else return this.onCreate.asyncMapQueue(()=>this.close()).singleChain(this)}};import{Action as As}from"actions-lib";import*as Ji from"pixi.js";import{Variable as re}from"actions-lib";import{Vector as Ge}from"helpers-lib";var Rs=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Is=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},wt=class{static{h(this,"MouseService")}get initialMouseMoveHappened(){return this.ƀfe.value}getStagePosition(){return this.ƀja.value}getScreenPosition(){return this.ƀih.value}getMainButtonState(){return this.ƀfw.value}getSecondaryButtonState(){return this.ƀin.value}constructor(){this.ƀfe=new re(!1),this.onInitialMouseMove=this.ƀfe.notifier,this.ƀja=new re(Ge.zero,{notifyOnChange:!0}),this.stagePosition=this.ƀja.notifier,this.ƀih=new re(Ge.zero,{notifyOnChange:!0}),this.screenPosition=this.ƀih.notifier,this.ƀfw=new re(!1),this.mainButtonState=this.ƀfw.notifier,this.ƀin=new re(!1),this.secondaryButtonState=this.ƀin.notifier,this.ƀjb(),window.addEventListener("mousedown",t=>{t.button===0?this.ƀfw.value=!0:t.button===2&&(this.ƀin.value=!0)}),window.addEventListener("mouseup",t=>{t.button===0?this.ƀfw.value=!1:t.button===2&&(this.ƀin.value=!1)}),window.addEventListener("blur",()=>{this.ƀfw.value=!1,this.ƀin.value=!1})}ƀjb(){let t=Ge.zero;window.addEventListener("mousemove",e=>{t=new Ge(e.clientX,e.clientY),this.ƀfe.value=!0}),y.beforeSceneUpdateAction.subscribe(()=>{this.ƀih.value=t}).attachToRoot(),y.afterSceneUpdateAction.subscribe(()=>{let e=w.instance.screenPositonToStagePosition(this.ƀih.value);e.isEqual(this.ƀja.value)?w.instance.renderer.events.onPointerMove(new PointerEvent("pointermove",{clientX:this.ƀih.value.x,clientY:this.ƀih.value.y,pointerType:"mouse"})):this.ƀja.value=e}).attachToRoot()}};wt=Rs([d(),Is("design:paramtypes",[])],wt);var se=class extends u{static{h(this,"MouseWheelListenerUI")}constructor(t){super(),this.ƀgt=new As,this.onWheel=this.ƀgt.notifier,this.ƀep=(e=>{let i=P.get(wt).getScreenPosition(),r=this.ƀkk.getBounds();i.x>=r.x&&i.x<=r.x+r.width&&i.y>=r.y&&i.y<=r.y+r.height&&this.ƀgt.trigger(e.deltaY)}).bind(this),this.ƀkk=new Ji.Graphics,this.ƀkk.beginFill(0,1e-9),this.ƀkk.drawRect(0,0,t.x,t.y),this.ƀkk.endFill(),this.pixiContainer.addChild(this.ƀkk),window.addEventListener("wheel",this.ƀep)}destroy(){this.destroyed||(super.destroy(),this.ƀkk.destroy(),window.removeEventListener("wheel",this.ƀep))}};import{Vector as Gs}from"helpers-lib";import{NumberHelper as Os}from"helpers-lib";var Ms=.65,Ds=.01,Fe=class{static{h(this,"SmoothScroller")}get scrollHeight(){return this.ƀil}get contentSize(){return this.ƀbh.size.ceil()}constructor(t,e,i,r){this.ƀbh=t,this.ƀu=e,this.ƀgz=i,this.ƀiw=r,this.ƀff=!1,this.ƀil=e-i*2,this.ƀbh.y=i,this.ƀjj=i}onWheel(t){this.setTarget(this.ƀjj-t*Ms)}scrollToTop(){this.setTarget(1/0)}scrollToBottom(){this.setTarget(-1/0)}setTarget(t){this.ƀjj=Os.clamp(t,this.ƀu-this.ƀgz-this.contentSize.y,this.ƀgz)}jumpToTarget(){this.ƀbh.y=this.ƀjj}update(t){let e=this.contentSize;if(e.y<=this.ƀil){switch(this.ƀiw){case"start":this.ƀjj=this.ƀgz;break;case"center":this.ƀjj=(this.ƀu-e.y)*.5;break;case"end":this.ƀjj=this.ƀu-e.y-this.ƀgz;break}this.ƀff||(this.ƀbh.y=this.ƀjj)}this.ƀff=!0;let i=this.ƀjj-this.ƀbh.y;this.ƀbh.y=this.ƀbh.y+i*Ds*t}};import{ArrayHelper as Bs,ColorHelper as Yi,Radian as fi,Vector as k}from"helpers-lib";import*as Xi from"pixi.js";var mi=class{static{h(this,"AnimationEaseInOutFlatter")}start(){}multiplierFunction(t){return 3*(1-t)*Math.pow(t,2)+Math.pow(t,3)}},xt=class o extends u{static{h(this,"ScrollMaskUI")}static{this.ƀcq=new Map}constructor(t,e,i,r=rt.Vertical){if(super(),i<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(e.y<i*2)throw new Error(`The height of the scroll mask cannot be lower than '${i*2}'`);let s=new u;r===rt.Horizontal?this.ƀby(e,i,s):this.ƀcf(e,i,s),this.ƀfz=Z.createSnapshotSprite(s).attach(this),s.destroy(),t.setMask(this.ƀfz)}ƀcf(t,e,i){e>0&&this.ƀbv(new k(t.x,e)).displayParent(i).attach(i),E.createRectangle(new k(t.x,t.y-e*2),Yi.white).toSprite().setPosition(new k(0,e),{round:!1}).displayParent(i).attach(i),e>0&&this.ƀbv(new k(t.x,e)).setPosition(new k(t.x,t.y),{round:!1}).setRotation(fi.get180).displayParent(i).attach(i)}ƀby(t,e,i){e>0&&this.ƀbv(new k(t.y,e)).setPosition(new k(0,t.y),{round:!1}).setRotation(fi.get270).displayParent(i).attach(i),E.createRectangle(new k(t.x-e*2,t.y),Yi.white).toSprite().setPosition(new k(e,0),{round:!1}).displayParent(i).attach(i),e>0&&this.ƀbv(new k(t.y,e)).setPosition(new k(t.x,0),{round:!1}).setRotation(fi.get90).displayParent(i).attach(i)}ƀbv(t){let i={id:this.ƀbw(t.y),scale:1,size:t,anchor:{x:0,y:0},boundingShapes:void 0};return new Z(i,{textureSize:t,ignoreAnchor:!0})}ƀbw(t){let e=JSON.stringify({type:"gradient",length:t}),i=o.ƀcq.get(e);if(!i){let r=document.createElement("canvas");r.width=1,r.height=t;let s=r.getContext("2d");if(s){let n=new mi;Bs.createIntegerArray(t).forEach(l=>{let c=`rgba(255, 255, 255, ${n.multiplierFunction(l/t)})`;s.fillStyle=c,s.fillRect(0,l,1,1)});let a=Xi.Texture.from(r);i=M.insertAsset(a),o.ƀcq.set(e,i)}else throw new Error("Canvas context is null")}return i}};var Fs=15,gi=class extends u{static{h(this,"ScrollAreaUI")}get contentAreaSize(){return this.ƀbi}get contentSize(){return this.ƀim.contentSize}constructor(t,e={}){super();let i={padding:Fs,smallContentAlign:"start",...e};if(i.padding<0)throw new Error("The padding of the scroll mask cannot be lower than '0'");if(i.padding>t.y*.5)throw new Error("The padding of the scroll mask cannot be higher than half of the size of the area");let r=new u().displayParent(this).attach(this);new xt(r,t,i.padding).attach(this);let s=new u().displayParent(r).attach(this);this.ƀim=new Fe(s,t.y,i.padding,i.smallContentAlign),this.ƀbi=new Gs(t.x,this.ƀim.scrollHeight),new se(t).displayParent(r).attach(this).onWheel.subscribe(a=>this.ƀim.onWheel(a)).attach(this),y.afterSceneUpdateAction.subscribe(a=>this.ƀim.update(a.delta)).attach(this),this.addChildTo=s}scrollToTop(t){this.ƀim.scrollToTop(),t?.instant&&this.ƀim.jumpToTarget()}scrollToBottom(t){this.ƀim.scrollToBottom(),t?.instant&&this.ƀim.jumpToTarget()}};import{Action as Zi}from"actions-lib";var _s=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ls=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},yi=class{static{h(this,"KeyboardService")}constructor(){this.ƀfm=new Zi,this.keyPressed=this.ƀfm.notifier,this.ƀfn=new Zi,this.keyReleased=this.ƀfn.notifier,this.ƀft=new Set,this.ƀfs=new Set,window.addEventListener("keydown",t=>{this.ƀft.add(t.key),this.ƀfs.add(t.key),!t.repeat&&this.ƀfm.trigger(t.key)}),window.addEventListener("keyup",t=>{this.ƀft.delete(t.key),this.ƀfn.trigger(t.key)}),window.addEventListener("blur",()=>{this.ƀft.clear()}),y.afterSceneUpdateAction.subscribe(()=>{this.ƀfs.clear()}).attachToRoot()}isKeyDown(t){return this.ƀft.has(t)}isKeyJustPressed(t){return this.ƀfs.has(t)}};yi=_s([d(),Ls("design:paramtypes",[])],yi);import{Action as js}from"actions-lib";import{Vector as Hs}from"helpers-lib";var Vs=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ns=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},wi=class{static{h(this,"MouseTargetFocusService")}get focusedInLastFrame(){return this.ƀdc}get lastFocusedPosition(){return this.ƀfp}constructor(t){this.ƀgf=t,this.ƀgr=new js,this.onTargetFocus=this.ƀgr.notifier,this.ƀjt=0,this.ƀjv=!1,this.ƀdc=!1,this.ƀfp=void 0,y.beforeSceneUpdateAction.subscribe(e=>this.ƀjx(e.delta)).attachToRoot()}ƀjx(t){if(this.ƀgg){let e=this.ƀeb(this.ƀgf.getStagePosition(),this.ƀgg);this.ƀhb===void 0?this.ƀhb=e:this.ƀat(e,t)}this.ƀgg=this.ƀgf.getStagePosition()}ƀat(t,e){this.ƀhb-t>10?(this.ƀjt=Math.max(250,this.ƀjt),this.ƀjv=!0):this.ƀjt>1e3&&(this.ƀjv=!0);let i=this.ƀjt>=300&&this.ƀjv;this.ƀfk(i,t,e)}ƀfk(t,e,i){(t||e>this.ƀhb)&&(this.ƀhb=e),t?(this.ƀjv=!1,this.ƀjt=0,this.ƀdc=!0,this.ƀfp=this.ƀgf.getStagePosition(),this.ƀgr.trigger(this.ƀfp)):(this.ƀjt+=i,this.ƀdc=!1)}ƀeb(t,e){let i=Hs.fromTo(t,e);return Math.abs(i.x)+Math.abs(i.y)}};wi=Vs([d(),Ns("design:paramtypes",[wt])],wi);import{Action as Ki,Attachable as Ws}from"actions-lib";var x;(function(o){o[o.Hidden=1]="Hidden",o[o.Visible=2]="Visible",o[o.Appearing=3]="Appearing",o[o.Disappearing=4]="Disappearing",o[o.DisappearToChange=5]="DisappearToChange"})(x||(x={}));var _e=class extends Ws{static{h(this,"FadeInStateAnimation")}get currentState(){return{value:this.ƀi.value,state:this.ƀje,queuedState:this.ƀhs,animationState:this.ƀm}}constructor(t){super(),this.ƀi={value:0},this.ƀm=x.Hidden,this.ƀgq=new Ki,this.ƀgs=new Ki,this.ƀgx={duration:500,animation:S.lineer,...t},this.ƀi.value=0,this.ƀn=new O(this.ƀi,"value",{duration:this.ƀgx.duration,animation:this.ƀgx.animation,reAnimateHandling:_.CompletePrevious,completionHandling:I.StayInCurrentState}),this.ƀn.value.subscribe(()=>{this.ƀi.value!==1&&this.ƀi.value!==0&&this.ƀgs.trigger(this.ƀi.value)}).attach(this)}setState(t,e){if(e?.instant){this.ƀn.completeAnimation(),this.ƀm=t!==void 0?x.Visible:x.Hidden,this.ƀhs=void 0;let i=t!==void 0?1:0,r=this.ƀje!==t;r&&(this.ƀje=t,this.ƀgq.trigger(this.ƀje)),(r||this.ƀi.value!==i)&&(this.ƀi.value=i,this.ƀgs.trigger(this.ƀi.value))}else switch(this.ƀm){case x.Hidden:t!==void 0&&(this.ƀm=x.Appearing,this.ƀhs=void 0,this.ƀje=t,this.ƀgq.trigger(this.ƀje),this.ƀn.animate({value:1}).tap(()=>this.ƀgm()).attach(this));break;case x.Visible:t===void 0?(this.ƀm=x.Disappearing,this.ƀhs=void 0,this.ƀn.animate({value:0}).tap(()=>this.ƀgm()).attach(this)):t!==this.ƀje&&(this.ƀm=x.DisappearToChange,this.ƀhs=t,this.ƀn.animate({value:0}).tap(()=>this.ƀgm()).attach(this));break;case x.Appearing:t===void 0?(this.ƀm=x.Disappearing,this.ƀhs=void 0,this.ƀn.animate({value:0},{duration:this.ƀi.value*this.ƀgx.duration}).tap(()=>this.ƀgm()).attach(this)):t!==this.ƀje&&(this.ƀi.value>0?(this.ƀm=x.DisappearToChange,this.ƀhs=t,this.ƀn.animate({value:0},{duration:this.ƀi.value*this.ƀgx.duration}).tap(()=>this.ƀgm()).attach(this)):(this.ƀhs=void 0,this.ƀje=t,this.ƀgq.trigger(this.ƀje)));break;case x.Disappearing:t===this.ƀje?(this.ƀm=x.Appearing,this.ƀn.animate({value:1},{duration:(1-this.ƀi.value)*this.ƀgx.duration}).tap(()=>this.ƀgm()).attach(this)):t!==void 0&&(this.ƀm=x.DisappearToChange,this.ƀhs=t);break;case x.DisappearToChange:t===void 0?(this.ƀm=x.Disappearing,this.ƀhs=void 0):t===this.ƀje?(this.ƀm=x.Appearing,this.ƀhs=void 0,this.ƀn.animate({value:1},{duration:(1-this.ƀi.value)*this.ƀgx.duration}).tap(()=>this.ƀgm()).attach(this)):t!==this.ƀhs&&(this.ƀhs=t);break}}ƀgm(){switch(this.ƀm){case x.Appearing:this.ƀi.value===1&&(this.ƀm=x.Visible,this.ƀgs.trigger(this.ƀi.value));break;case x.Disappearing:if(this.ƀhs!==void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearing should not have a queued value");this.ƀi.value===0&&(this.ƀm=x.Hidden,this.ƀje=void 0,this.ƀgq.trigger(this.ƀje),this.ƀgs.trigger(this.ƀi.value));break;case x.DisappearToChange:if(this.ƀhs===void 0)throw new Error("FadeInStateAnimation: Unexpected state, disappearToChange should always have a queued value");this.ƀi.value===0&&(this.ƀm=x.Appearing,this.ƀje=this.ƀhs,this.ƀhs=void 0,this.ƀgq.trigger(this.ƀje),this.ƀgs.trigger(this.ƀi.value),this.ƀn.animate({value:1}).tap(()=>this.ƀgm()).attach(this));break;case x.Hidden:case x.Visible:return}}onStateChange(t){return this.ƀgq.subscribe(e=>t(e)).attach(this),this}onValueChange(t){return this.ƀgs.subscribe(e=>t(e)).attach(this),this}};var Qi=class extends u{static{h(this,"FadeInContent")}constructor(t,e){super(),this.ƀbu=t;let i={duration:200,animation:S.easeInOut,...e};this.alpha=0,this.ƀjf=new _e(i).onStateChange(r=>{this.ƀbh?.destroy(),this.ƀbh=void 0,r!==void 0&&(this.ƀbh=new u().displayParent(this).attach(this),this.ƀbu({state:r,container:this.ƀbh}))}).onValueChange(r=>{this.alpha=r}).attach(this)}setState(t,e){return this.ƀjf.setState(t,e),this}};import{Vector as vt}from"helpers-lib";import{Action as tr,Attachable as $s}from"actions-lib";import{Comparator as zs,NumberHelper as er}from"helpers-lib";import{Action as qi,Attachable as Us}from"actions-lib";var A;(function(o){o[o.Idle=1]="Idle",o[o.Transitioning=2]="Transitioning",o[o.Reverting=3]="Reverting"})(A||(A={}));var Le=class extends Us{static{h(this,"StateAnimation")}get currentState(){return{value:this.ƀi.value,state:this.ƀje,nextState:this.ƀgi,queuedState:this.ƀhs,animationState:this.ƀm}}constructor(t){super(),this.ƀi={value:0},this.ƀm=A.Idle,this.ƀgq=new qi,this.ƀgs=new qi,this.ƀgx={duration:500,animation:S.lineer,...t},this.ƀn=new O(this.ƀi,"value",{duration:this.ƀgx.duration,animation:this.ƀgx.animation,reAnimateHandling:_.CompletePrevious,completionHandling:I.StayInCurrentState}),this.ƀn.value.subscribe(()=>{this.ƀi.value!==1&&this.ƀi.value!==0&&this.ƀgs.trigger(this.ƀi.value)}).attach(this)}setState(t,e){if(this.ƀje===void 0)this.ƀje=t,this.ƀgq.trigger({state:this.ƀje,nextState:this.ƀgi}),this.ƀgs.trigger(this.ƀi.value);else if(e?.instant)this.ƀn.completeAnimation(),this.ƀm=A.Idle,this.ƀje=t,this.ƀgi=void 0,this.ƀi.value=0,this.ƀgq.trigger({state:this.ƀje,nextState:this.ƀgi}),this.ƀgs.trigger(this.ƀi.value);else switch(this.ƀm){case A.Idle:t!==this.ƀje&&(this.ƀm=A.Transitioning,this.ƀgi=t,this.ƀi.value=0,this.ƀgq.trigger({state:this.ƀje,nextState:this.ƀgi}),this.ƀgs.trigger(this.ƀi.value),this.ƀn.animate({value:1}).tap(()=>this.ƀgm()).attach(this));break;case A.Transitioning:t!==this.ƀgi&&(t===this.ƀje?(this.ƀm=A.Reverting,this.ƀn.animate({value:0},{duration:this.ƀi.value*this.ƀgx.duration}).tap(()=>this.ƀgm()).attach(this)):this.ƀhs=t);break;case A.Reverting:t!==this.ƀje&&(t===this.ƀgi?(this.ƀm=A.Transitioning,this.ƀn.animate({value:1},{duration:(1-this.ƀi.value)*this.ƀgx.duration}).tap(()=>this.ƀgm()).attach(this)):this.ƀhs=t);break}}ƀgm(){switch(this.ƀm){case A.Transitioning:this.ƀi.value===1&&(this.ƀi.value=0,this.ƀhs!==void 0?(this.ƀm=A.Transitioning,this.ƀje=this.ƀgi,this.ƀgi=this.ƀhs,this.ƀhs=void 0,this.ƀgq.trigger({state:this.ƀje,nextState:this.ƀgi}),this.ƀn.animate({value:1}).tap(()=>this.ƀgm()).attach(this)):(this.ƀm=A.Idle,this.ƀje=this.ƀgi,this.ƀgi=void 0,this.ƀgq.trigger({state:this.ƀje,nextState:this.ƀgi})),this.ƀgs.trigger(this.ƀi.value));break;case A.Reverting:if(this.ƀje===void 0)throw new Error("StateAnimation: state must be defined when reverting!");this.ƀi.value===0&&(this.ƀhs!==void 0?(this.ƀm=A.Transitioning,this.ƀgi=this.ƀhs,this.ƀhs=void 0,this.ƀi.value=0,this.ƀgq.trigger({state:this.ƀje,nextState:this.ƀgi}),this.ƀn.animate({value:1}).tap(()=>this.ƀgm()).attach(this)):(this.ƀm=A.Idle,this.ƀgi=void 0,this.ƀi.value=0,this.ƀgq.trigger({state:this.ƀje,nextState:this.ƀgi})),this.ƀgs.trigger(this.ƀi.value));break;case A.Idle:break}}onStateChange(t){return this.ƀgq.subscribe(e=>t(e.state,e.nextState)).attach(this),this}onValueChange(t){return this.ƀgs.subscribe(e=>t(e)).attach(this),this}};var st;(function(o){o[o.Appear=1]="Appear",o[o.Disappear=2]="Disappear"})(st||(st={}));var C;(function(o){o[o.Idle=1]="Idle",o[o.TransitionForward=2]="TransitionForward",o[o.TransitionBackward=3]="TransitionBackward",o[o.Reverting=4]="Reverting"})(C||(C={}));var Ve=class extends $s{static{h(this,"SlideStateAnimation")}constructor(t){super(),this.ƀm=C.Idle,this.ƀgq=new tr,this.ƀgs=new tr,this.ƀgx={duration:500,animation:S.easeInOutCubic,...t},this.ƀjf=new Le({duration:this.ƀgx.duration,animation:this.ƀgx.animation}).onStateChange((e,i)=>this.ƀen(e,i)).onValueChange(e=>this.ƀeo(e)).attach(this)}setIndex(t,e){if(!zs.isInteger(t))throw new Error("SlideStateAnimation: index must be an integer!");this.ƀfd===void 0?(this.ƀfd=t,this.ƀgq.trigger({state:st.Appear,index:t}),this.ƀjf.setState(t,e)):this.ƀfd!==t?this.ƀgh!==t?this.ƀm===C.Idle?(this.ƀm=t>this.ƀfd?C.TransitionForward:C.TransitionBackward,this.ƀgh=t,this.ƀgq.trigger({state:st.Appear,index:this.ƀgh}),this.ƀjf.setState(t,e)):this.ƀjf.setState(t,e):this.ƀm===C.Reverting&&this.ƀgh===t&&(this.ƀm=t>this.ƀfd?C.TransitionForward:C.TransitionBackward,this.ƀjf.setState(t,e)):(this.ƀm===C.TransitionForward||this.ƀm===C.TransitionBackward)&&(this.ƀm=C.Reverting,this.ƀjf.setState(t,e))}ƀen(t,e){switch(this.ƀfd!==void 0&&this.ƀfd!==t&&this.ƀfd!==e&&this.ƀgq.trigger({state:st.Disappear,index:this.ƀfd}),this.ƀgh!==void 0&&this.ƀgh!==t&&this.ƀgh!==e&&this.ƀgq.trigger({state:st.Disappear,index:this.ƀgh}),e!==void 0&&e!==this.ƀfd&&e!==this.ƀgh&&this.ƀgq.trigger({state:st.Appear,index:e}),this.ƀm){case C.TransitionForward:case C.TransitionBackward:e===void 0?(this.ƀm=C.Idle,this.ƀfd=this.ƀgh,this.ƀgh=void 0):this.ƀfd!==t&&this.ƀel(t,e);break;case C.Reverting:e===void 0?(this.ƀm=C.Idle,this.ƀgh=void 0):this.ƀfd!==e&&this.ƀel(t,e);break}}ƀeo(t){let e=1;(this.ƀm===C.TransitionBackward||this.ƀm===C.Reverting&&this.ƀfd!==void 0&&this.ƀgh!==void 0&&this.ƀfd>this.ƀgh)&&(e=-1),(this.ƀm===C.Idle||t!==0)&&this.ƀgs.trigger({value:er.ensurePositiveZero(-e*t),index:this.ƀfd}),this.ƀgh!==void 0&&this.ƀgs.trigger({value:er.ensurePositiveZero(e*(1-t)),index:this.ƀgh})}ƀel(t,e){this.ƀfd=t,this.ƀgh=e,this.ƀgs.trigger({value:0,index:this.ƀfd}),this.ƀm=this.ƀfd<this.ƀgh?C.TransitionForward:C.TransitionBackward}onStateChange(t){return this.ƀgq.subscribe(e=>t(e.state,e.index)).attach(this),this}onValueChange(t){return this.ƀgs.subscribe(e=>t(e.value,e.index)).attach(this),this}};var rt;(function(o){o[o.Horizontal=1]="Horizontal",o[o.Vertical=2]="Vertical"})(rt||(rt={}));var xi=class extends u{static{h(this,"SlideInContentByIndex")}constructor(t,e){super(),this.ƀbu=t,this.ƀcl="x",this.ƀbj=new Map,this.ƀgx={duration:300,animation:S.easeInOutCubic,size:new vt(500,500),margin:20,direction:rt.Horizontal,...e};let i=this.ƀgx.direction===rt.Horizontal?new vt(this.ƀgx.size.x+this.ƀgx.margin*2,this.ƀgx.size.y):new vt(this.ƀgx.size.x,this.ƀgx.size.y+this.ƀgx.margin*2),r=new u().setPosition(this.ƀgx.direction===rt.Horizontal?new vt(-this.ƀgx.margin,0):new vt(0,-this.ƀgx.margin),{round:!1}).displayParent(this).attach(this);this.ƀbz(i,this.ƀgx.margin,this.ƀgx.direction,r),this.ƀcl=this.ƀgx.direction===rt.Horizontal?"x":"y",this.ƀjf=new Ve({duration:this.ƀgx.duration,animation:this.ƀgx.animation}).onStateChange((s,n)=>{if(s===st.Appear){let a=new u().displayParent(this).attach(this);this.ƀbj.set(n,a),this.ƀbu({index:n,container:a})}else{let a=this.ƀbj.get(n);a&&(a.destroy(),this.ƀbj.delete(n))}}).onValueChange((s,n)=>{let a=this.ƀbj.get(n);if(a){let l={x:0,y:0};l[this.ƀcl]=i[this.ƀcl]*s+this.ƀgx.margin,a.setPosition(vt.fromVec2(l),{round:!1})}}).attach(this),this.addChildTo=r}setIndex(t,e){return this.ƀjf.setIndex(t,e),this}ƀbz(t,e,i,r){new xt(r,new vt(t.x,t.y),e,i).attach(this)}},ir=class extends xi{static{h(this,"SlideInContent")}constructor(t,e,i){super(r=>{let s=this.indexToItem.get(r.index);if(s)e({index:r.index,item:s,container:r.container});else throw new Error(`SlideInContent: The item with index '${r.index}' is not part of the items list`)},i),this.itemToIndex=new Map,this.indexToItem=new Map,t.forEach((r,s)=>{this.itemToIndex.set(r,s),this.indexToItem.set(s,r)})}setItem(t,e){let i=this.itemToIndex.get(t);if(i!==void 0)this.setIndex(i,e);else throw new Error(`SlideInContent: The item '${t}' is not part of the items list`);return this}};var bt=class{static{h(this,"VectorSet")}constructor(){this.ƀkb=new Map}add(t){let e=this.ƀkb.get(t.x);e||(e=new Set,this.ƀkb.set(t.x,e)),e.add(t.y)}has(t){let e=this.ƀkb.get(t.x);return e?e.has(t.y):!1}delete(t){let e=this.ƀkb.get(t.x);return e?e.delete(t.y):!1}};var vi=class{static{h(this,"DeltaTime")}static adjustMultiplier(t,e){return Math.pow(t,e)}};import{GridNeighborType as Ys,Queue as Xs,Rectangle as Zs,Vector as Pt}from"helpers-lib";import{Rectangle as ks,Vector as Js}from"helpers-lib";var B=class{static{h(this,"PositionToGridPositionConverter")}static areaToGridArea(t,e){return new ks(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 Js(.5,.5)).multiplyNumber(e)}};var oe=class{static{h(this,"ClosestAvailableSpaceHelper")}static findByConvertingGridSpace(t,e,i){let r=new Pt(Math.ceil(e.size.x/i)-1,Math.ceil(e.size.y/i)-1),s=B.areaToGridArea(e,i);if(this.ƀas(t,s))return Pt.zero;let n=t.movePositionInsideGrid(s.topLeft),a=Pt.fromTo(s.topLeft,n),l=this.find(t,n,r);if(l){let c=l.add(a),p=Pt.fromTo(s.topLeft.multiplyNumber(i),e.topLeft);return new Pt(c.x*i+((r.x+1)*i-e.size.x)/2-p.x,c.y*i+((r.y+1)*i-e.size.y)/2-p.y)}}static find(t,e,i){let r=new bt,s=new Xs(e);for(;s.notEmpty;){let n=s.pop();r.add(n);let a=new Zs(n,n.add(i));if(this.ƀas(t,a))return Pt.fromTo(e,n);t.getNeighborPositions(n,Ys.Ortogonal).forEach(l=>{r.has(l)||s.add(l)})}}static ƀas(t,e){if(!t.isAreaWithinBounds(e))return!1;for(let i=e.topLeft.y;i<=e.bottomRight.y;i++)for(let r=e.topLeft.x;r<=e.bottomRight.x;r++)if(!t.get(new Pt(r,i)))return!1;return!0}};import{BinaryHeap as Ks,Grid as Qs,Vector as qs}from"helpers-lib";var rr=class{static{h(this,"PathfinderNode")}constructor(t,e,i,r=void 0){this.position=t,this.distanceFromStart=e,this.distanceToEnd=i,this.parent=r,this.closed=!1}get pathLength(){return this.distanceFromStart+this.distanceToEnd}isEqual(t){return qs.isEqual(this.position,t)}createSolutionPath(t){let e=[this.position],i=this.parent;for(;i!==void 0;)e.push(i.position),i=i.parent;return e.reverse(),{directPathAvailable:t,path:e}}getDistance(t){return this.position.getDistance(t)}},to=class{static{h(this,"PathfinderGrid")}constructor(t,e){this.ƀek=t,this.ƀjc=e,this.ƀgv=new Ks("min"),this.ƀaw=[],this.ƀgj=new Qs({size:t.size,defaultValue:void 0});let i=new rr(this.ƀjc,0,Number.MAX_SAFE_INTEGER);this.ƀgv.add(i.pathLength,i)}get hasOpenNodes(){return this.ƀgv.size>0}getNeighbors(t,e){return this.ƀek.getNeighborPositions(t.position,e).filter(i=>this.ƀek.get(i)).map(i=>this.ƀgj.get(i)||this.ƀca(i))}popLowestPathCostNode(){let t=this.ƀgv.pop();return this.ƀgv.delete(t),t.closed=!0,this.ƀaw.push(t),t}changeNodeCost(t,e,i,r){this.ƀgv.delete(t),t.distanceFromStart=e,t.distanceToEnd=t.getDistance(i),t.parent=r,this.ƀgv.add(t.pathLength,t)}getBestClosedNode(){return this.ƀaw.reduce((t,e)=>t.distanceToEnd<e.distanceToEnd?t:e)}ƀca(t){let e=new rr(t,Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER);return this.ƀgj.set(t,e),this.ƀgv.add(e.pathLength,e),e}},ne=class{static{h(this,"PathFinder")}static findPath(t,e,i,r){let s=new to(t,e);for(;s.hasOpenNodes;){let n=s.popLowestPathCostNode();if(n.isEqual(i))return n.createSolutionPath(!0);let a=s.getNeighbors(n,r);for(let l of a)if(!l.closed){let c=n.distanceFromStart+n.getDistance(l.position);c<l.distanceFromStart&&s.changeNodeCost(l,c,i,n)}}return s.getBestClosedNode().createSolutionPath(!1)}};import{Grid as sr,GridNeighborType as eo,Queue as io,Radian as ro,Random as so,Vector as bi}from"helpers-lib";var ae=class{static{h(this,"VectorFieldPathFinder")}constructor(t,e){this.ƀjk=t,this.ƀw=e,this.ƀer=this.ƀdt(this.ƀw.size),this.ƀkj=new sr({size:this.ƀw.size,defaultValue:this.ƀer}),this.ƀcm=new sr({size:this.ƀw.size,defaultValue:void 0});let i=new bt,r=new io;for(this.ƀdi(this.ƀw.cropAreaOutsideOfTheGrid(t)).forEach(n=>{this.ƀkj.set(n,0),r.add(n)});r.notEmpty;){let n=r.pop();if(!i.has(n)){i.add(n);let a=this.ƀkj.getOrFail(n);this.ƀdy(n,this.ƀw).forEach(l=>{if(!i.has(l.position)){let c=this.ƀkj.getOrFail(l.position),p=a+l.distance;this.ƀw.getOrFail(l.position)&&p<c&&(this.ƀkj.set(l.position,p),r.add(l.position))}})}}}getDirectionToTarget(t){if(!t.isInsideRectangle(this.ƀjk)){if(t=this.ƀkj.movePositionInsideGrid(t),this.ƀcm.has(t))return this.ƀcm.get(t);{let e=this.ƀdy(t,this.ƀw),i;return this.ƀkj.getOrFail(t)>=this.ƀer?e.some(s=>this.ƀw.get(s.position))&&(e.some(n=>!this.ƀw.get(n.position))?i=this.ƀdn(e):i=this.ƀdj(t,e)):i=this.ƀdj(t,e),this.ƀcm.set(t,i),i}}}ƀdn(t){let e=t.filter(i=>this.ƀw.get(i.position)).map(i=>i.direction.radian);return ro.getAverage(...e)}ƀdj(t,e){let i=e.filter(r=>this.ƀkj.getOrFail(r.position)<this.ƀer).reduce((r,s)=>{let n=this.ƀkj.getOrFail(s.position)+s.distance;return n<r.bestWeight?(r.bestDirections=[s.direction],r.bestWeight=n):n===r.bestWeight&&r.bestDirections.push(s.direction),r},{bestDirections:[],bestWeight:this.ƀer}).bestDirections;return this.ƀed(i,t)}ƀed(t,e){if(t.length>0){let i=t.reduce((r,s)=>r.add(s),bi.zero);if(i.isZero()||!this.ƀfi(e,i))return so.pickRandomElement(t).radian;if(t.length>=1)return i.radian}}ƀfi(t,e){let i=t.add(this.ƀkc(e));return this.ƀw.isPointWithinBounds(i)&&this.ƀw.getOrFail(i)}ƀdy(t,e){return this.ƀkj.getNeighborDirections(t,eo.All).map(i=>({position:t.add(i),direction:i,distance:i.x!==0&&i.y!==0?14:10}))}ƀdi(t){let e=[];for(let i=t.topLeft.y;i<=t.bottomRight.y;i++)for(let r=t.topLeft.x;r<=t.bottomRight.x;r++)e.push(new bi(r,i));return e}ƀkc(t){let e=t.normalize().round();return new bi(e.x,e.y)}ƀdt(t){return(t.x+t.y)*20}};import{Action as ao,Variable as or}from"actions-lib";import{Vector as ho}from"helpers-lib";import lo from"p2";var oo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},no=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},v=class extends ${static{h(this,"PhysicsWorldEntity")}constructor(t,e,i,r,s,n,a){super(),this.materialDefinitions=new Map,this.physicsBodyGroupToP2Group=new Map,this.physicsBodyGroupToP2Mask=new Map,this.availabilityGridCache=new Map,this.vectorFieldCache=new Map,this.bodiesInContactWith=new Map,this.collisionReports=new Map,this.paused=new or(!1),this.lastP2Time=new or(0),this.onPhysicsStep=new ao,this.mapSize=t,this.mapSizeCenter=this.mapSize.multiplyNumber(.5),this.modifyUpdateCycle=e,this.p2World=i,this.materials=r,this.materialDefinitions=s,this.physicsBodyGroupToP2Group=n,this.physicsBodyGroupToP2Mask=a}};v=oo([mt(),no("design:paramtypes",[ho,Boolean,lo.World,Map,Map,Map,Map])],v);import{Grid as go,Vector as yo}from"helpers-lib";var co=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},K=class{static{h(this,"PhysicsBodyGroupService")}createBodyGroupsAndMasks(t,e){let i=new Map,r=new Map;return t.map((s,n)=>{if(n>31)return console.error("Cannot have more than 32 physics body groups"),{};i.set(s,1<<n),r.set(s,0)}),e.map(([s,n])=>{if(!i.has(s))throw new Error(`Physics body group "${s}" not found`);if(!i.has(n))throw new Error(`Physics body group "${n}" not found`);let a=r.get(s),l=r.get(n),c=i.get(s),p=i.get(n);r.set(s,a|p),r.set(n,l|c)}),{physicsBodyGroupToP2Group:i,physicsBodyGroupToP2Mask:r}}getGroupConstant(t,e){return v.getInstanceByIDOrFail(t).physicsBodyGroupToP2Group.get(e)}getMaskConstant(t,e){return v.getInstanceByIDOrFail(t).physicsBodyGroupToP2Mask.get(e)}canCollide(t,e,i){let r=t.physicsBodyGroupToP2Group.get(e),s=t.physicsBodyGroupToP2Mask.get(e),n=t.physicsBodyGroupToP2Group.get(i),a=t.physicsBodyGroupToP2Mask.get(i);return(s&n)!==0&&(a&r)!==0}};K=co([d()],K);var po=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},uo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Ne=class{static{h(this,"AvailabilityGridCacheService")}constructor(t){this.ƀhe=t}getCollidableGrids(t,e){let i=[];return t.availabilityGridCache.forEach((r,s)=>{r.forEach((n,a)=>{this.ƀhe.canCollide(t,a,e)&&i.push({grid:n,cellSize:s})})}),i}get(t,e,i){return t.availabilityGridCache.get(e)?.get(i)}set(t,e,i,r){let s=t.availabilityGridCache.get(e);s||(s=new Map,t.availabilityGridCache.set(e,s)),s.set(i,r)}clear(t){t.availabilityGridCache.clear()}};Ne=po([d(),uo("design:paramtypes",[K])],Ne);var fo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},mo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},ct=class{static{h(this,"AvailabilityGridService")}constructor(t,e){this.ƀhe=t,this.ƀx=e}onBodyAdded(t,e,i){e.aabbNeedsUpdate=!0,e.updateAABB();let r=m.aabbToBoundingBox(e.aabb);this.ƀx.getCollidableGrids(t,i).forEach(s=>{let n=B.areaToGridArea(r,s.cellSize);s.grid.setArea(n,!1)})}findClosestAvailableSpace(t,e,i,r=Gt){return e.aabbNeedsUpdate=!0,e.updateAABB(),oe.findByConvertingGridSpace(this.getAvilabilityGrid(t,r,i),m.aabbToBoundingBox(e.aabb),r)}getAvilabilityGrid(t,e,i){let r=this.ƀx.get(t,e,i);return r||(r=this.ƀbx(t,e,i),this.ƀx.set(t,e,i,r)),r}ƀbx(t,e,i){let r=new go({size:new yo(Math.floor(t.mapSize.x/e),Math.floor(t.mapSize.y/e)),defaultValue:!0});return t.p2World.bodies.forEach(s=>{let n=b.getFromP2BodyIDOrFail(s.id);if(n.includeInPathfinding&&this.ƀhe.canCollide(t,n.physicsBodyGroup,i)){let a=this.ƀds(s,e);r.setArea(a,!1)}}),r}ƀds(t,e){let i=m.aabbToBoundingBox(t.aabb);return B.areaToGridArea(i,e)}};ct=fo([d(),mo("design:paramtypes",[K,Ne])],ct);var wo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},xo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Gt=50,Ft=class{static{h(this,"PathFinderService")}constructor(t){this.ƀhd=t}findPathAStar(t,e,i,r,s){s||(s={}),s.neighborType===void 0&&(s.neighborType=vo.Ortogonal),s.gridCellSize===void 0&&(s.gridCellSize=Gt);let n=v.getInstanceByIDOrFail(t),a,l;nr.isNumber(i)?(l=b.getPhysicsInstanceOrFail(i).p2Body,a=m.arrayToVector(l.position)):a=i;let c=B.positionToGridPosition(e,s.gridCellSize),p=B.positionToGridPosition(a,s.gridCellSize),f=this.ƀhd.getAvilabilityGrid(n,s.gridCellSize,r);if(l){let T=m.aabbToBoundingBox(l.aabb),J=B.areaToGridArea(T,s.gridCellSize);f.setArea(J,!0)}let g=ne.findPath(f,c,p,s.neighborType);return g.path=g.path.map(T=>B.gridPositionToPosition(T,s.gridCellSize)),g}findPathDirection(t,e,i,r,s=Gt){let n=v.getInstanceByIDOrFail(t),a;if(nr.isNumber(i)){let g=b.getPhysicsInstanceOrFail(i);a=m.aabbToBoundingBox(g.p2Body.aabb)}else a=new bo(i,i);let l=B.areaToGridArea(a,s),c=JSON.stringify({targetGridArea:l,collidableWithGroup:r}),p=n.vectorFieldCache.get(c);if(!p){let g=this.ƀhd.getAvilabilityGrid(n,s,r);p=new ae(l,g),n.vectorFieldCache.set(c,p)}let f=B.positionToGridPosition(e,s);return p.getDirectionToTarget(f)}};Ft=wo([d(),xo("design:paramtypes",[ct])],Ft);var Po=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},j=new U,Pi=class{static{h(this,"PhysicsGateway")}createPhysicsWorld(t){return j.trigger("createPhysicsWorld",t)}getMapSize(t){return j.trigger("getMapSize",t)}setPaused(t,e){return j.trigger("setPaused",t,e)}hitTest(t,e){return j.trigger("hitTest",t,e)}findPath(t,e,i,r,s){return j.trigger("findPath",t,e,i,r,s)}findPathDirection(t,e,i,r){return j.trigger("findPathDirection",t,e,i,r)}applyImpulse(t,e,i,r){return j.trigger("applyImpulse",t,e,i,r)}createExplosion(t,e,i,r,s,n){return j.trigger("createExplosion",t,e,i,r,s,n)}createElipticExplosion(t,e,i,r,s,n,a){return j.trigger("createElipticExplosion",t,e,i,r,s,n,a)}printPathfindingTestGrid(t,e,i,r,s,n=Gt){return j.trigger("printPathfindingTestGrid",t,e,i,r,s,n)}};Pi=Po([d()],Pi);import{ColorHelper as ar}from"helpers-lib";import Ao from"p2";import{ColorHelper as Q,Radian as To,Vector as Eo}from"helpers-lib";import pt from"p2";var So=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Co=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},q=class{static{h(this,"TestVisualsService")}constructor(t,e){this.ƀy=t,this.ƀha=e}printPathfindingTestGrid(t,e,i,r,s,n){let a=v.getInstanceByIDOrFail(t);this.ƀy.getAvilabilityGrid(a,n,r).map((c,p)=>({position:B.gridPositionToPosition(p,n),availability:c})).forEach(c=>{if(c.position.isInsideRectangle(s)){let p=this.ƀha.findPathDirection(t,c.position,i,r),f;p===void 0?f=E.createRectangleBorders(new Eo(8,8),2,Q.red).toSprite().displayParent(e).setPosition(c.position,{round:!1}).attach(a):f=E.createArrow(25,c.availability?Q.green:Q.red).toSprite().displayParent(e).setPosition(c.position,{round:!1}).setRotation(p).attach(a),new O(f,"alpha",{duration:1e3,animation:S.easeIn}).animate({alpha:0}).tap(()=>f.destroy()).attach(f)}})}createExplosionDebugVisual(t,e,i,r,s,n=300){let a=new u().displayParent(e).setAlpha(.5).attach(t);E.createCircle(s,Q.blue).toSprite().displayParent(a).setPosition(r,{round:!1}).setAlpha(.5).attach(t),i.forEach(c=>{let p=c.hits.length>0?Q.red:Q.white;E.createVector(r,c.line.to,p).toSprite().displayParent(a).attach(t)}),new O(a,"alpha",{duration:n,animation:S.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a)}createElipticExplosionDebugVisual(t,e,i,r,s,n,a=300){let l=new u().displayParent(e).setAlpha(.5).attach(t);E.createElipse(n,Q.blue).toSprite().displayParent(l).setPosition(r,{round:!1}).setRotation(s).setAlpha(.5).attach(t),i.forEach(p=>{let f=p.hits.length>0?Q.red:Q.white;E.createVector(p.line.from,p.line.to,f).toSprite().displayParent(l).attach(t)}),new O(l,"alpha",{duration:a,animation:S.easeIn}).animate({alpha:0}).tap(()=>l.destroy()).attach(l)}createPhysicsEntityShapeVisual(t,e,i){let r=i?.overridePosition??m.arrayToVector(t.position),s=i?.overrideRotation??new To(t.angle),n=i?.color??Q.blue,a=new u().displayParent(e).setPosition(r,{round:!1}).setRotation(s).setAlpha(.5).attachToRoot();t.shapes.forEach(c=>{this.ƀcp(c,n).displayParent(a).attachToRoot()}),new O(a,"alpha",{duration:1e3,animation:S.easeIn}).animate({alpha:0}).tap(()=>a.destroy()).attach(a)}ƀcp(t,e){switch(t.type){case pt.Shape.PARTICLE:throw new Error("Not implemented");case pt.Shape.LINE:throw new Error("Not implemented");case pt.Shape.PLANE:throw new Error("Not implemented");case pt.Shape.CIRCLE:throw new Error("Not implemented");case pt.Shape.CAPSULE:throw new Error("Not implemented");case pt.Shape.BOX:throw new Error("Not implemented");case pt.Shape.HEIGHTFIELD:throw new Error("Not implemented");case pt.Shape.CONVEX:return this.ƀco(t,e);default:throw new Error("Not implemented")}}ƀco(t,e){let i=[t.vertices.map(r=>({x:r[0],y:r[1]}))];return E.createPolygon(i,e).toSprite()}};q=So([d(),Co("design:paramtypes",[ct,Ft])],q);var Ro=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Io=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},je=class{static{h(this,"HitTestService")}constructor(t){this.ƀjm=t}hitTest(t,e){let i=t.world,r=b.getFromP2BodyIDOrFail(t.id),s=m.cloneP2Body(t);this.ƀs(s,e);let n=i.broadphase.aabbQuery(i,this.ƀdg(s)).map(l=>b.getFromP2BodyIDOrFail(l.id)).filter(l=>l.includeInPathfinding).filter(l=>r.canCollideWith(l)).map(l=>m.cloneP2Body(l.p2Body)),a=!1;if(n.length!==0){let l=new Ao.World;l.addBody(s),n.forEach(c=>l.addBody(c)),l.step(1,1,1),a=l.narrowphase.contactEquations.some(c=>c.bodyA===s||c.bodyB===s),l.clear()}if(e?.testLayerID){let l=a?ar.red:ar.green;this.ƀjm.createPhysicsEntityShapeVisual(t,e.testLayerID,{overridePosition:e.overridePosition,overrideRotation:e.overrideRotation,color:l})}return a}ƀs(t,e){e?.overridePosition&&(t.position=m.vectorToArray(e.overridePosition)),e?.overrideRotation&&(t.angle=e.overrideRotation.value)}ƀdg(t){return t.aabbNeedsUpdate=!0,t.updateAABB(),t.aabb}};je=Ro([d(),Io("design:paramtypes",[q])],je);import No from"p2";var Oo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},He=class{static{h(this,"CollisionsService")}registerPhysicsWorld(t){t.p2World.on("beginContact",e=>{e.contactEquations.forEach(i=>{this.ƀhy(t,i)})})}step(t,e,i){b.getPhysicsEntities().forEach(r=>{r.ƀax=[]}),t.p2World.narrowphase.contactEquations.forEach(r=>{this.ƀhy(t,r)}),t.bodiesInContactWith.forEach((r,s)=>{this.ƀem(r.p2Body),r.entity.ƀip(t.collisionReports.get(s)||[])}),t.bodiesInContactWith.clear(),t.collisionReports.clear()}ƀem(t){let e=m.arrayToVector(t.velocity);e.length>10.8&&(e=e.normalize(10.8),t.velocity=m.vectorToArray(e)),t.angularVelocity=Math.min(Math.max(t.angularVelocity,-10.01),10.01)}ƀhy(t,e){let i=b.getFromP2BodyID(e.bodyA.id),r=b.getFromP2BodyID(e.bodyB.id);if(i&&r){t.bodiesInContactWith.set(e.bodyA.id,{p2Body:e.bodyA,entity:i}),t.bodiesInContactWith.set(e.bodyB.id,{p2Body:e.bodyB,entity:r});let s=t.collisionReports.get(e.bodyA.id)||[],n=t.collisionReports.get(e.bodyB.id)||[],{collisionDetailsA:a,collisionDetailsB:l}=this.ƀdl(i,r,e);s.push({self:a,target:l}),n.push({self:l,target:a}),t.collisionReports.set(e.bodyA.id,s),t.collisionReports.set(e.bodyB.id,n)}else console.warn("ContactEquationOrganiser: Entity not found for contact equation",e)}ƀdl(t,e,i){let r=t.convertToDTO(),s=e.convertToDTO(),n=m.arrayToVector(i.contactPointA),a=m.arrayToVector(i.contactPointB),{normalA:l,normalB:c}=this.ƀdz(i);return{collisionDetailsA:this.ƀdk(r,i.bodyA.mass,n,l,t.area),collisionDetailsB:this.ƀdk(s,i.bodyB.mass,a,c,e.area)}}ƀdk(t,e,i,r,s){let n,a=i.add(t.position);return{body:t,getPositionReletiveToObject:h(()=>(n||(n=i.rotate(t.rotation.multiply(-1).vector)),n),"getPositionReletiveToObject"),getPositionOnWorld:h(()=>(a||(a=i.add(t.position)),a),"getPositionOnWorld"),position:i,mass:e,area:s,normal:r}}ƀdz(t){let e=m.arrayToVector(t.normalA),i=e.multiplyNumber(-1);return{normalA:e,normalB:i}}};He=Oo([d()],He);import{Radian as Go,Vector as dt}from"helpers-lib";var Mo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Do=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},We=class extends $t{static{h(this,"BorderEntity")}constructor(t,e){super(t,e)}};We=Mo([mt(),Do("design:paramtypes",[Number,Object])],We);var Bo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},H=1e4,Ue=class{static{h(this,"BorderService")}createBorders(t,e,i){this.ƀbr(t,new dt(e.x/2,-H/2),new dt(e.x+H*2,H),i),this.ƀbr(t,new dt(e.x/2,e.y+H/2),new dt(e.x+H*2,H),i),this.ƀbr(t,new dt(-H/2,e.y/2),new dt(H,e.y+H*2),i),this.ƀbr(t,new dt(e.x+H/2,e.y/2),new dt(H,e.y+H*2),i)}ƀbr(t,e,i,r){return new We(t,{shapeDefinition:{materialName:ht,group:r,shapeType:it.Rectangle,shapeData:i},position:e,rotation:Go.get0,addInEmptySpace:!1,includeOnPathfinding:!0}).attachByID(t)}};Ue=Bo([d()],Ue);import $e from"p2";var Fo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},hr=new $e.Material,_o={id:ht,density:Number.MAX_SAFE_INTEGER,velocityDrag:1,rotationalDrag:1},_t=class{static{h(this,"MaterialsService")}createMaterials(t,e,i,r){let s=new Map,n=new Map;if(i.forEach(a=>{s.set(a.id,new $e.Material),n.set(a.id,a)}),s.has(ht))throw new Error(`Material with name ${ht} cannot be defined, pick another name for the material.`);return s.set(ht,hr),n.set(ht,_o),this.ƀc(t,e,i,r,s),{materials:s,materialDefinitions:n}}getMaterial(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀdx(e,i.materials)}getMaterialDefinition(t,e){let i=v.getInstanceByIDOrFail(t);return this.ƀdw(e,i.materialDefinitions)}ƀdx(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material with name ${t}.`);return i}ƀdw(t,e){let i=e.get(t);if(!i)throw new Error(`Could not find material definition with name ${t}.`);return i}ƀc(t,e,i,r,s){this.ƀdp(i.map(n=>n.id),r).forEach(n=>{let a=this.ƀdx(n.materialA,s),l=this.ƀdx(n.materialB,s);t.addContactMaterial(new $e.ContactMaterial(a,l,{friction:n.friction,restitution:n.bounciness,stiffness:n.stiffness}))}),this.ƀd(t,e,i,s)}ƀdp(t,e){let i=new Map;e.forEach(s=>{let n=i.get(s.materialA);n||(n=new Map,i.set(s.materialA,n)),n.set(s.materialB,s)});let r=[];return t.forEach((s,n)=>{for(let a=n;a<t.length;a++){let l=t[a],c=i.get(s)?.get(l);c?r.push(c):r.push({materialA:s,materialB:l,friction:0,bounciness:0,stiffness:1e6})}}),r}ƀd(t,e,i,r){i.forEach(s=>{let n=this.ƀdx(s.id,r);t.addContactMaterial(new $e.ContactMaterial(n,hr,{friction:e.friction,restitution:e.bounciness,stiffness:e.stiffness}))})}};_t=Fo([d()],_t);var Lo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Vo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Lt=class{static{h(this,"PhysicsWorldService")}constructor(t,e,i,r,s){this.ƀgb=t,this.ƀai=e,this.ƀy=i,this.ƀay=r,this.ƀhe=s}createPhysicsWorld(t){let e=new No.World({gravity:[0,0]}),{materials:i,materialDefinitions:r}=this.ƀgb.createMaterials(e,t.borderProperties,t.materialDefinitions,t.materialContactDefinitions),{physicsBodyGroupToP2Group:s,physicsBodyGroupToP2Mask:n}=this.ƀhe.createBodyGroupsAndMasks(t.physicsBodyGroups,t.interactingBodyGroups),a=new v(t.mapSize,t.modifyUpdateCycle,e,i,r,s,n).attachByID(t.attachTo);return a.onDestroy().tap(()=>{e.clear(),t.modifyUpdateCycle&&y.cleanUpdateModifier()}).attachToRoot(),this.ƀai.createBorders(a.id,t.mapSize,t.borderProperties.borderBodyGroup),this.ƀay.registerPhysicsWorld(a),t.modifyUpdateCycle?y.registerUpdateModifier((l,c)=>this.ƀjg(a,l,c)):y.beforeSceneUpdateAction.subscribe(({time:l,delta:c})=>{this.ƀjg(a,l,c)}).attach(a),a.id}addBody(t,e,i,r,s){let n=v.getInstanceByIDOrFail(t);if(i){let a=this.ƀy.findClosestAvailableSpace(n,e,r);return a?(e.position[0]+=a.x,e.position[1]+=a.y,n.p2World.addBody(e),s&&this.ƀy.onBodyAdded(n,e,r),!0):!1}else return n.p2World.addBody(e),s&&this.ƀy.onBodyAdded(n,e,r),!0}removeBody(t,e){v.getInstanceByID(t)?.p2World.removeBody(e)}ƀjg(t,e,i){if(!t.paused.value){t.availabilityGridCache.clear(),t.vectorFieldCache.clear(),t.p2World.step(i,i,i),t.modifyUpdateCycle&&(i=t.p2World.time-t.lastP2Time.value);let r=e+i;this.ƀay.step(t,r,i),t.onPhysicsStep.trigger({time:r,delta:i}),t.lastP2Time.value=t.p2World.time}return i}setPaused(t,e){v.getInstanceByIDOrFail(e).paused.set(t)}};Lt=Lo([d(),Vo("design:paramtypes",[_t,Ue,ct,He,K])],Lt);import{ArrayHelper as ko,Line as ft,Radian as Jo}from"helpers-lib";import Vt from"p2";var jo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Nt=class{static{h(this,"RayCastingService")}castClosest(t,e,i){let r=new Vt.RaycastResult,s=new Vt.Ray({mode:Vt.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(r,s),r.hasHit())return this.ƀbm(r,e)}castAllFirstContacts(t,e,i){let r=new Map,s=new Vt.Ray({mode:Vt.Ray.ALL,from:m.vectorToArray(e.from),to:m.vectorToArray(e.to),collisionGroup:t.physicsBodyGroupToP2Group.get(i),collisionMask:t.physicsBodyGroupToP2Mask.get(i),callback:h(n=>{let a=r.get(n.body);!r.has(n.body)||n.fraction<a.fraction?r.set(n.body,this.ƀbm(n,e)):n.fraction===a.fraction&&a.isExternal()&&r.set(n.body,this.ƀbm(n,e))},"callback")});return t.p2World.raycast(new Vt.RaycastResult,s),Array.from(r.values())}ƀbm(t,e){let i=t.fraction,r=m.arrayToVector(t.normal),s,n,a;return{body:t.body,hitPosition:h(()=>(s===void 0&&(s=e.from.lerp(e.to,i)),s),"hitPosition"),hitDistance:h(()=>(n===void 0&&(n=e.length*i),n),"hitDistance"),isExternal:h(()=>(a===void 0&&(a=e.fromTo.dotProduct(r)<0),a),"isExternal"),normal:r,fraction:i,line:e}}};Nt=jo([d()],Nt);var Ho=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},ut=class{static{h(this,"ImpactService")}applyImpulse(t,e,i,r){let s=i.normalize(r),n=[e.x-t.position[0],e.y-t.position[1]];t.applyImpulse(m.vectorToArray(s),n)}};ut=Ho([d()],ut);import{Vector as Uo}from"helpers-lib";var Wo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},jt=class{static{h(this,"RayCastHitConverterService")}toExplosionHits(t,e=!0){let i=new Map;return t.forEach(r=>{r.hits.forEach(s=>{let n=i.get(s.body);if(n){let a=s.fraction<n.closestRaycastHit.fraction?s:n.closestRaycastHit;n.rayCastHits.push(s),i.set(s.body,{hitCount:n.hitCount+1,closestRaycastHit:a,rayCastHits:n.rayCastHits,isExternal:e?n.isExternal:n.isExternal&&s.isExternal(),explosionCenter:s.line.from})}else{let a=s.isExternal();i.set(s.body,{hitCount:1,closestRaycastHit:s,rayCastHits:[s],isExternal:a,explosionCenter:s.line.from})}})}),[...i.values()].map(r=>this.ƀbn(r,t.length))}ƀbn(t,e){let i=t.hitCount/e,r=t.rayCastHits;if(t.isExternal)return{body:b.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:!0,normal:t.closestRaycastHit.normal,fraction:t.closestRaycastHit.fraction,ratioOfHits:i,raycastResults:r,getHitPosition:t.closestRaycastHit.hitPosition,getHitDistance:t.closestRaycastHit.hitDistance};{let s=m.arrayToVector(t.closestRaycastHit.body.position);return{body:b.getFromP2BodyIDOrFail(t.closestRaycastHit.body.id).convertToDTO(),p2Body:t.closestRaycastHit.body,isExternal:!1,normal:Uo.fromTo(s,t.explosionCenter).normalize(),fraction:0,ratioOfHits:i,raycastResults:r,getHitPosition:h(()=>t.explosionCenter,"getHitPosition"),getHitDistance:h(()=>0,"getHitDistance")}}}};jt=Wo([d()],jt);var $o=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},zo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Yo=15,ze=class{static{h(this,"ElipticExplosionService")}constructor(t,e,i,r){this.ƀhu=t,this.ƀjm=e,this.ƀht=i,this.ƀfb=r}createElipticExplosion(t,e,i,r,s,n,a){let l=v.getInstanceByIDOrFail(t),c=this.ƀcc(e,i,r,s,a?.hitOnlyClosest===!0,l),p=this.ƀht.toExplosionHits(c,!1);return this.ƀq(p,n),a?.testLayerID&&this.ƀjm.createElipticExplosionDebugVisual(l,a.testLayerID,c,e,i,r,a.debugRayDuration),p.map(f=>{let{p2Body:g,...T}=f;return T})}ƀcc(t,e,i,r,s,n){let a=[],l=e.vector,c=e.add(Jo.get90).vector,p=c.normalize(i.x);a.push(new ft(t,t.add(p))),a.push(new ft(t,t.add(p.multiplyNumber(-1))));let f=l.normalize(i.y);a.push(new ft(t,t.add(f))),a.push(new ft(t,t.add(f.multiplyNumber(-1))));let g=Math.round(i.y/Yo),T=i.y/(g*2+1)*2,J=l.normalize(T),ot=i.x,Wt=Math.pow(i.y,2);return ko.createIntegerArray(g).forEach(nt=>{let tt=T*(nt+1),Ti=J.multiplyNumber(nt+1),he=c.normalize(this.ƀeh(ot,Wt,tt)),le=t.add(Ti);a.push(new ft(le,le.add(he))),a.push(new ft(le,le.add(he.multiplyNumber(-1))));let ce=t.add(Ti.multiplyNumber(-1));a.push(new ft(ce,ce.add(he))),a.push(new ft(ce,ce.add(he.multiplyNumber(-1))))}),a.map(nt=>{if(s){let tt=this.ƀhu.castClosest(n,nt,r);return{line:nt,hits:tt?[tt]:[]}}else{let tt=this.ƀhu.castAllFirstContacts(n,nt,r);return{line:nt,hits:tt}}})}ƀeh(t,e,i){return Math.sqrt(1-Math.pow(i,2)/e)*t}ƀq(t,e){t.forEach(i=>{i.raycastResults.forEach(r=>{let s,n;r.isExternal()?(s=r.line.fromTo,n=e*2):(s=r.line.fromTo.multiplyNumber(-1),n=e*(1-r.fraction)*8),this.ƀfb.applyImpulse(r.body,r.hitPosition(),s,n)})})}};ze=$o([d(),zo("design:paramtypes",[Nt,q,jt,ut])],ze);import{ArrayHelper as Ko,Line as Qo,PI_360 as qo,Radian as tn,Vector as lr}from"helpers-lib";var Xo=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Zo=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},ke=class{static{h(this,"ExplosionService")}constructor(t,e,i,r){this.ƀhu=t,this.ƀjm=e,this.ƀht=i,this.ƀfb=r}createExplosion(t,e,i,r,s,n){let a=v.getInstanceByIDOrFail(t),l=this.ƀee(i),c=this.ƀcc(e,i,r,l,n?.hitOnlyClosest===!0,a),p=this.ƀht.toExplosionHits(c);return this.ƀq(e,i,s,l,p),n?.testLayerID&&this.ƀjm.createExplosionDebugVisual(a,n.testLayerID,c,e,i,n.debugRayDuration),p}ƀcc(t,e,i,r,s,n){let a=new tn(qo/r),l=new lr(0,-e),c=a.vector;return Ko.createEmptyArray(r).map(()=>{let p=t.add(l);return l=l.rotate(c),new Qo(t,p)}).map(p=>{if(s){let f=this.ƀhu.castClosest(n,p,i);return{line:p,hits:f?[f]:[]}}else{let f=this.ƀhu.castAllFirstContacts(n,p,i);return{line:p,hits:f}}})}ƀq(t,e,i,r,s){s.forEach(n=>{if(n.isExternal)n.raycastResults.forEach(a=>{let l=i*(1-a.fraction);this.ƀfb.applyImpulse(a.body,a.hitPosition(),a.line.fromTo,l)});else{let a=lr.fromTo(t,m.arrayToVector(n.p2Body.position)),l=a.length/e,c=i*r*l/2;this.ƀfb.applyImpulse(n.p2Body,n.getHitPosition(),a,c)}})}ƀee(t){return t>100?Math.floor(t*.3):Math.floor(t*.26+4)}};ke=Xo([d(),Zo("design:paramtypes",[Nt,q,jt,ut])],ke);var en=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Ht=class{static{h(this,"PhysicsQueryService")}getMapSize(t){let e=v.getInstanceByIDOrFail(t);return{dimentions:e.mapSize,center:e.mapSizeCenter}}subscribeToPhysicsStep(t,e){return v.getInstanceByIDOrFail(t).onPhysicsStep.subscribe(e)}};Ht=en([d()],Ht);var rn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},sn=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Si=class{static{h(this,"PhysicsController")}constructor(t,e,i,r,s,n,a,l){this.ƀhl=t,this.ƀha=e,this.ƀjm=i,this.ƀcy=r,this.ƀct=s,this.ƀes=n,this.ƀhk=a,this.ƀfb=l}createPhysicsWorld(t){return this.ƀhl.createPhysicsWorld(t)}getMapSize(t){return this.ƀhk.getMapSize(t)}setPaused(t,e){this.ƀhl.setPaused(t,e)}hitTest(t,e){let i=b.getPhysicsInstanceOrFail(t);return this.ƀes.hitTest(i.p2Body,e)}findPath(t,e,i,r,s){return this.ƀha.findPathAStar(t,e,i,r,{neighborType:s})}findPathDirection(t,e,i,r){return this.ƀha.findPathDirection(t,e,i,r)}applyImpulse(t,e,i,r){let s=b.getPhysicsInstanceOrFail(t);this.ƀfb.applyImpulse(s.p2Body,e,i,r)}createExplosion(t,e,i,r,s,n){return this.ƀcy.createExplosion(t,e,i,r,s,n)}createElipticExplosion(t,e,i,r,s,n,a){return this.ƀct.createElipticExplosion(t,e,i,r,s,n,a)}printPathfindingTestGrid(t,e,i,r,s,n){this.ƀjm.printPathfindingTestGrid(t,e,i,r,s,n)}};Si=rn([et({controllerLink:j}),sn("design:paramtypes",[Lt,Ft,q,ke,ze,je,Ht,ut])],Si);import W from"p2";var on=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},Je=class{static{h(this,"ShapeCreationService")}createBody(t,e,i,r,s){let n=v.getInstanceByIDOrFail(t);if(!n.physicsBodyGroupToP2Group.has(e.shapeDefinition.group))throw new Error(`Physics body group "${e.shapeDefinition.group}" not found`);switch(e.shapeDefinition.shapeType){case it.Point:return this.ƀbt(n,void 0,i,r,e.shapeDefinition.group,s);case it.Circle:return this.ƀbt(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case it.Polygon:return this.ƀcb(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s);case it.Rectangle:return this.ƀcd(n,e.shapeDefinition.shapeData,i,r,e.shapeDefinition.group,s)}}ƀbt(t,e,i,r,s,n){let a=new W.Circle({collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s),radius:e});a.material=i;let l=new W.Body({type:n==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:r.density,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return l.addShape(a),l}ƀcb(t,e,i,r,s,n){let a=t.physicsBodyGroupToP2Group.get(s),l=t.physicsBodyGroupToP2Mask.get(s),c=e.map(g=>new W.Convex({vertices:g.map(T=>[T.x,T.y]),collisionGroup:a,collisionMask:l})).map(g=>(g.material=i,g)),p=c.reduce((g,T)=>g+T.area,0),f=new W.Body({type:n==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:p,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.forEach(g=>f.addShape(g)),f.setDensity(r.density),f}ƀcd(t,e,i,r,s,n){let a=new W.Box({width:e.x,height:e.y,collisionGroup:t.physicsBodyGroupToP2Group.get(s),collisionMask:t.physicsBodyGroupToP2Mask.get(s)});a.material=i;let l=e.x*e.y,c=new W.Body({type:n==="dynamic"?W.Body.DYNAMIC:W.Body.STATIC,mass:l,damping:r.velocityDrag,angularDamping:r.rotationalDrag});return c.addShape(a),c.setDensity(r.density),c}};Je=on([d()],Je);var nn=function(o,t,e,i){var r=arguments.length,s=r<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(o,t,e,i);else for(var a=o.length-1;a>=0;a--)(n=o[a])&&(s=(r<3?n(s):r>3?n(t,e,s):n(t,e))||s);return r>3&&s&&Object.defineProperty(t,e,s),s},an=function(o,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(o,t)},Ci=class{static{h(this,"PhysicsInternalController")}constructor(t,e,i,r,s){this.ƀhl=t,this.ƀhj=e,this.ƀiu=i,this.ƀhk=r,this.ƀhe=s}createBody(t,e,i,r,s){return this.ƀiu.createBody(t,e,i,r,s)}getMaterial(t,e){return this.ƀhj.getMaterial(t,e)}getMaterialDefinition(t,e){return this.ƀhj.getMaterialDefinition(t,e)}getGroupConstant(t,e){return this.ƀhe.getGroupConstant(t,e)}getMaskConstant(t,e){return this.ƀhe.getMaskConstant(t,e)}addBody(t,e,i,r,s){return this.ƀhl.addBody(t,e,i,r,s)}removeBody(t,e){this.ƀhl.removeBody(t,e)}subscribeToPhysicsStep(t,e){return this.ƀhk.subscribeToPhysicsStep(t,e)}};Ci=nn([et({controllerLink:Y}),an("design:paramtypes",[Lt,_t,Je,Ht,K])],Ci);export{Oi as AnimationFlicker,X as AnimationInterpolationFunctions,S as Animations,I as AnimationsCompletionHandlingType,O as Animator,ht as BORDER_MATERIAL_NAME,G as BardLegendsHardReset,Et as BlendMode,Kt as Camera,It as CameraGateway,oe as ClosestAvailableSpaceHelper,u as Container,kt as ContainerEventType,et as ControllerDecorator,U as ControllerLink,ti as Cursor,R as DEFAULT_RESOLUTION,vi as DeltaTime,pi as DisplayObjectArray,$ as Entity,mt as EntityDecorator,Qi as FadeInContent,_e as FadeInStateAnimation,lt as FocusingAnimation,w as Game,E as Graphics,$t as ImmovablePhysicsEntity,yi as KeyboardService,Bt as Menu,ui as MenuEntity,wt as MouseService,wi as MouseTargetFocusService,se as MouseWheelListenerUI,Ze as MovableEntity,Ke as MovablePhysicsEntity,ne as PathFinder,b as PhysicsEntity,Pi as PhysicsGateway,it as PhysicsShapeType,hi as Placeholder,Yt as PositionConversionHelper,qe as ROTATIONAL_SPEED_LIMIT,_ as ReAnimateHandlingType,li as RichText,Qe as SPEED_LIMIT,St as Scene,wr as SceneDecorator,gi as ScrollAreaUI,rt as ScrollDirection,xt as ScrollMaskUI,P as Service,d as ServiceDecorator,gt as SingletonEntity,ir as SlideInContent,xi as SlideInContentByIndex,Ve as SlideStateAnimation,st as SlideStateAnimationState,Z as Sprite,Le as StateAnimation,ie as Text,ci as UpdatableContainer,y as UpdateCycle,ae as VectorFieldPathFinder,bt as VectorSet,Ut as View,Xe as ViewDecorator};