bard-legends-framework 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- 'use strict';var actionsLib=require('actions-lib');require('reflect-metadata');var helpersLib=require('helpers-lib'),W=require('p2'),V=require('pixi.js'),scriptEngineLib=require('script-engine-lib');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var W__default=/*#__PURE__*/_interopDefault(W);var V__namespace=/*#__PURE__*/_interopNamespace(V);var cr=Object.defineProperty;var h=(o,t)=>cr(o,"name",{value:t,configurable:true});var G=class{static{h(this,"BardLegendsHardReset");}static{this.ƀer=new actionsLib.Action;}static{this.onHardReset=this.ƀer.notifier;}static hardReset(){actionsLib.ActionLib.hardReset(),this.ƀer.trigger();}};function d(){return function(o){let t=P.ƀeb(o);o.$meta={paramtypes:t,type:"service"};}}h(d,"ServiceDecorator");var P=class{static{h(this,"Service");}static{this.ƀiq=new Map;}static get(t){let e=this.ƀiq.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀic([],t.$meta.paramtypes);e=new t(...i),this.ƀiq.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 ƀic(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.ƀiq=new Map;}).attachToRoot();var U=class{static{h(this,"ControllerLink");}constructor(){this.ƀbl=[],this.ƀib=[];}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.ƀib.includes(e))throw new Error(`ServiceLink: the function is already registered, function name: "${e}"`);this.ƀib.push(e);}),this.ƀbl.push(t);}};function q(o){return function(t){let e=P.ƀeb(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=P.ƀic([],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(q,"ControllerDecorator");var y=class o{static{h(this,"UpdateCycle");}static{this.ƀac=new actionsLib.Action;}static{this.beforeSceneUpdateAction=this.ƀac.notifier;}static{this.ƀii=new actionsLib.Action;}static{this.sceneUpdateAction=this.ƀii.notifier;}static{this.ƀf=new actionsLib.Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀju=0;}static{this.ƀkc=void 0;}static wait(t){let e=this.ƀju+t;return actionsLib.SingleEvent.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀkc)this.ƀkc=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀkc=void 0;}static triggerUpdateTick(t){this.ƀkc&&(t=this.ƀkc(this.ƀju,t)),this.ƀju+=t,this.ƀfq=t,t>0&&(o.ƀac.trigger({time:this.ƀju,delta:t}),o.ƀii.trigger({time:this.ƀju,delta:t}),o.ƀf.trigger({time:this.ƀju,delta:t}));}static get lastDelta(){return this.ƀfq}static{this.ƀfq=0;}};G.onHardReset.subscribe(()=>{y.ƀac.clear(),y.ƀii.clear(),y.ƀf.clear(),y.ƀkc=void 0,y.ƀju=0;}).attachToRoot();var _=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(()=>{_.ƀav.clear();}).attachToRoot();var rt=class o{static{h(this,"EntityViewsHelper");}static{this.ƀkl=new Map;}static registerView(t,e){o.ƀkl.has(e)||o.ƀkl.set(e,[]);let i=o.ƀkl.get(e);i&&i.push(t),_.getEntities(e).forEach(s=>{this.ƀcg(s,t);});}static ƀcg(t,e){try{let i=P.ƀic([this],e.$meta.paramtypes);o.entityID=t.id;let r=new e(t,...i.slice(1));t.destroyed?r.destroy():t.ƀkk.ƀkm.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀcv=t,this.ƀkm=[];}createViews(){if(!this.ƀcv.destroyed){let t=o.ƀkl.get(this.ƀcv.constructor);t&&t.forEach(e=>{o.ƀcg(this.ƀcv,e);});}}updateViews(t,e){for(let i=0;i<this.ƀkm.length;i++){let r=this.ƀkm[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀkm.forEach(t=>{t.destroy();});}};G.onHardReset.subscribe(()=>{rt.ƀkl=new Map;}).attachToRoot();function dt(){return function(o){o.$meta={type:"entity"},_.registerEntityClass(o);}}h(dt,"EntityDecorator");var $=class extends actionsLib.IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return _.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=_.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return _.getEntities(this)}constructor(){super(),this.ƀkk=new rt(this),_.registerEntity(this),y.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀkk.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀkk.destroyViews(),_.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀkk.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀkk.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀkk.createViews(),this}update(t,e){}};var ut=class extends ${static{h(this,"SingletonEntity");}static getInstance(){return _.getSingleton(this)}static getInstanceOrFail(){return _.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 wr(){return function(o){return o.$meta={paramtypes:P.ƀeb(o),type:"scene"},o}}h(wr,"SceneDecorator");var Pt=class o extends actionsLib.IDAttachable{static{h(this,"Scene");}static{this.ƀih=false;}static{this.ƀb=new actionsLib.Variable(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.ƀih)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.ƀih=true;let i=P.ƀic([],this.$meta.paramtypes),r=new this(...i).attachToRoot();return o.ƀb.set(r),r.init(e).map(()=>(o.ƀih=false,r)).chainToRoot()}constructor(){super(),this.ƀgm=new actionsLib.Action,this.onClose=this.ƀgm.notifier,y.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(o.ƀb.value!==this)throw o.ƀih?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.ƀih=true,this.prepareToClose().map(()=>(super.destroy(),o.ƀb.set(void 0),o.ƀih=false,this.ƀgm.trigger(e),e)).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};G.onHardReset.subscribe(()=>{Pt.ƀb.set(void 0);}).attachToRoot();function Ye(o){return function(t){t.$meta={paramtypes:P.ƀeb(t),viewInstances:new Map,entity:o.entity,type:"view"},rt.registerView(t,o.entity);}}h(Ye,"ViewDecorator");var Ht=class extends actionsLib.IDAttachable{static{h(this,"View");}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}constructor(){super(),this.attachToRoot(),this.ƀcw=rt.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 f=class o{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return helpersLib.Rectangle.fromRect({topLeft:{x:t.lowerBound[0],y:t.lowerBound[1]},bottomRight:{x:t.upperBound[0],y:t.upperBound[1]}})}static arrayToVector(t){return new helpersLib.Vector(t[0],t[1])}static vectorToArray(t){return [t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return (t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>o.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new W__default.default.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};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},J=new U,St=class{static{h(this,"PhysicsInternalGateway");}createBody(t,e,i,r,s){return J.trigger("createBody",t,e,i,r,s)}getMaterial(t,e){return J.trigger("getMaterial",t,e)}getMaterialDefinition(t,e){return J.trigger("getMaterialDefinition",t,e)}getGroupConstant(t,e){return J.trigger("getGroupConstant",t,e)}getMaskConstant(t,e){return J.trigger("getMaskConstant",t,e)}addBody(t,e,i,r,s){return J.trigger("addBody",t,e,i,r,s)}removeBody(t,e){return J.trigger("removeBody",t,e)}subscribeToPhysicsStep(t,e){return J.trigger("subscribeToPhysicsStep",t,e)}};St=Sr([d()],St);var b=class o extends ${static{h(this,"PhysicsEntity");}static{this.ƀha=new Map;}static{this.ƀhh=new Map;}static getFromP2BodyID(t){return o.ƀha.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀha.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀhh.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀhh.values())}get area(){return this.ƀt}get mass(){return this.ƀgc}get collisions(){return this.ƀax}constructor(t,e,i){super(),this.ƀgn=new actionsLib.Action,this.onCollision=this.ƀgn.notifier,this.type="dynamic",this.ƀt=0,this.ƀgc=0,this.ƀax=[],this.physicsWorldID=t,this.ƀhj=P.get(St);let r=this.ƀhj.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀhj.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀhi=this.ƀhj.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀhk=this.ƀhj.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀhj.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀt=this.p2Body.getArea(),this.ƀgc=this.p2Body.mass,this.p2Body.position=f.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀhj.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.ƀha.set(this.p2Body.id,this),o.ƀhh.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀhj.removeBody(this.physicsWorldID,this.p2Body),o.ƀha.delete(this.p2Body.id),o.ƀhh.delete(this.id));}canCollideWith(t){return f.arePhysicsGroupsCollidable(this.ƀhi,this.ƀhk,t.ƀhi,t.ƀhk)}ƀir(t){this.ƀax=t,t.length>0&&this.ƀgn.trigger(t);}};var Wt=class extends b{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=f.arrayToVector(this.p2Body.position),this.rotation=new helpersLib.Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:helpersLib.Vector.zero,rotationalSpeed:0}}};var Xe=class extends ${static{h(this,"MovableEntity");}constructor(){super(),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),y.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀjj(t,e);}).attach(this);}ƀjj(t,e){this.position.value=this.position.value.add(this.velocity.value.multiplyNumber(e)),this.rotation.value=new helpersLib.Radian(this.rotation.value.value+this.rotationalSpeed.value*e);}};var Ze=class extends b{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),this.ƀey=false,this.ƀez=false,this.ƀfb=false,this.ƀfa=false,this.ƀhe(),this.ƀfw(),P.get(St).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀjj(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}}ƀjj(t,e){this.ƀey=true,this.ƀez=true,this.ƀfb=true,this.ƀfa=true,this.ƀhe();}ƀhe(){this.position.value=f.arrayToVector(this.p2Body.position),this.rotation.value=new helpersLib.Radian(this.p2Body.angle),this.velocity.value=f.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀfw(){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 Ke=10.8,Qe=10.01;exports.PhysicsShapeType=void 0;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle";})(exports.PhysicsShapeType||(exports.PhysicsShapeType={}));var st="border";var Y=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 Y.lineer(t)}},Ir=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return Y.easeIn(t)}},Ar=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return Y.easeOut(t)}},Or=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return Y.easeInOut(t)}},Mr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return Y.easeInOutCubic(t)}},Ai=class{static{h(this,"AnimationFlicker");}start(){this.ƀjv=new Array(10).fill(0),helpersLib.Random.integerBetween(0,9),this.ƀjv[helpersLib.Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(helpersLib.Random.integerBetween(0,9),this.ƀjv[helpersLib.Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(helpersLib.Random.integerBetween(0,9),this.ƀjv[helpersLib.Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀjv[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;}};exports.ReAnimateHandlingType=void 0;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious";})(exports.ReAnimateHandlingType||(exports.ReAnimateHandlingType={}));exports.AnimationsCompletionHandlingType=void 0;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop";})(exports.AnimationsCompletionHandlingType||(exports.AnimationsCompletionHandlingType={}));var A=class o{static{h(this,"Animator");}static{this.ƀj=new WeakMap;}static ƀdi(t){let e=o.ƀj.get(t);return e||(e=new helpersLib.MapToWeakRefs,o.ƀj.set(t,e)),e}get animating(){return this.ƀgw!==void 0}get target(){return this.ƀjm}get value(){return this.ƀke||(this.ƀke=new actionsLib.Variable(this.ƀjm)),this.ƀke.notifier}constructor(t,e,i){this.ƀfk=false,this.ƀiy=false,this.ƀjm=t,this.ƀgz={duration:200,animation:S.lineer,reAnimateHandling:exports.ReAnimateHandlingType.ThrowError,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState,...i},this.ƀk=helpersLib.Comparator.isArray(e)?e:[e],this.ƀfx(t,this.ƀk);}animate(t,e){let i={...this.ƀgz,...e};if(this.ƀgw)switch(i.reAnimateHandling){case exports.ReAnimateHandlingType.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case exports.ReAnimateHandlingType.IgnoreNewAnimation:return actionsLib.SingleEvent.instant();case exports.ReAnimateHandlingType.CompletePrevious:this.ƀis(i.completionHandling,this.ƀgw.ƀht,true);break;default:{throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return actionsLib.SingleEvent.create(s=>{this.ƀfk&&(this.ƀiy=true);let n=this.ƀk.reduce((c,p)=>(c[p]={ƀjg:this.ƀjm[p],ƀjo:t[p]},c),{}),a={ƀcr:i.duration,ƀcs:0,ƀht:n,ƀbe:i.completionHandling,ƀl:i.animation,ƀbd:s};if(a.ƀbe!==exports.AnimationsCompletionHandlingType.Loop&&this.ƀfi(a)){this.ƀgw=void 0,s();return}else a.ƀl.start();let l=this.ƀgw;return this.ƀgw=a,this.ƀcu(),l?.ƀbd(),()=>{this.ƀgw===a&&(this.ƀjm instanceof actionsLib.Attachable&&this.ƀjm.destroyed||this.ƀis(a.ƀbe,a.ƀht,true),this.ƀgw=void 0,this.ƀkb?.destroy(),this.ƀkb=void 0);}})}set(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r]&&(e=true,this.ƀjm[r]=t[r]);}e&&this.ƀke?.set(this.ƀjm),this.ƀgw?.ƀbd();}completeAnimation(t){if(this.ƀgw){t=t??this.ƀgw.ƀbe,this.ƀis(t,this.ƀgw.ƀht,true);let e=this.ƀgw.ƀbd;this.ƀgw=void 0,e();}}ƀcu(){this.ƀkb||(this.ƀkb=y.beforeSceneUpdateAction.subscribe(t=>{this.ƀfk=true;try{let e=this.ƀgw;if(!e)return;e.ƀcs+=t.delta;let i=e.ƀcs>=e.ƀcr;if(i)if(e.ƀbe===exports.AnimationsCompletionHandlingType.Loop)e.ƀcs%=e.ƀcr,e.ƀl.start(),i=!1;else {this.ƀis(e.ƀbe,e.ƀht,!1),this.ƀgw=void 0,e.ƀbd(),this.ƀgw||(this.ƀkb?.destroy(),this.ƀkb=void 0);return}if(!i){let r=e.ƀl.multiplierFunction(e.ƀcs/e.ƀcr),s=!1;for(let n=0;n<this.ƀk.length;n++){let a=this.ƀk[n],l=e.ƀht[a],p=(l.ƀjo-l.ƀjg)*r+l.ƀjg;p!==this.ƀjm[a]&&(s=!0,this.ƀjm[a]=p);}s&&this.ƀke?.set(this.ƀjm);}}finally{this.ƀfk=false,this.ƀiy&&(this.ƀiy=false,this.ƀkb?.destroy(),this.ƀkb=void 0,this.ƀcu());}}).attachToRoot());}ƀfi(t){for(let e=0;e<this.ƀk.length;e++){let i=this.ƀk[e];if(this.ƀjm[i]!==t.ƀht[i].ƀjo)return false}return true}ƀis(t,e,i){switch(t){case exports.AnimationsCompletionHandlingType.ReturnToOriginal:this.ƀie(e);break;case exports.AnimationsCompletionHandlingType.StayInCurrentState:i||this.ƀfn(e);break;case exports.AnimationsCompletionHandlingType.JumpToEnd:this.ƀfn(e);break;case exports.AnimationsCompletionHandlingType.Loop:this.ƀie(e);break;default:{throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀie(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjg&&(e=true,this.ƀjm[r]=t[r].ƀjg);}e&&this.ƀke?.set(this.ƀjm);}ƀfn(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjo&&(e=true,this.ƀjm[r]=t[r].ƀjo);}e&&this.ƀke?.set(this.ƀjm);}ƀfx(t,e){let i=o.ƀ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);}}};exports.ContainerEventType=void 0;(function(o){o.Click="click",o.MouseOver="mouseover",o.MouseOut="mouseout",o.PointerDown="pointerdown",o.PointerUp="pointerup",o.PointerUpOutside="pointerupoutside",o.PointerMove="pointermove",o.PointerCancel="pointercancel",o.PointerOver="pointerover",o.PointerOut="pointerout",o.PointerEnter="pointerenter",o.PointerLeave="pointerleave",o.Added="added",o.Removed="removed",o.Update="update",o.Change="change";})(exports.ContainerEventType||(exports.ContainerEventType={}));exports.Cursor=void 0;(function(o){o.Default="default",o.Pointer="pointer";})(exports.Cursor||(exports.Cursor={}));var ue=class extends actionsLib.IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀgg=false,this.ƀdb=false,this.ƀif=1,this.ƀv=1,this.pixiContainer=new V__namespace.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new helpersLib.Vector(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 helpersLib.Vector(this.pixiContainer.scale.x,this.pixiContainer.scale.y),s=new helpersLib.Vector(i.x,i.y).multiply(r),n=new helpersLib.Vector(i.width,i.height).multiply(r),a=s.add(n.multiply(e.holdFrom));t=t.subtract(a);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new helpersLib.Vector(this.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 actionsLib.ActionSubscription(()=>{this.pixiContainer.off(t,i);})}setRotation(t){return this.rotation=t,this}get rotation(){return new helpersLib.Radian(this.pixiContainer.rotation)}set rotation(t){this.pixiContainer.rotation=t.value;}get rotationValue(){return this.rotation.value}set rotationValue(t){this.rotation=new helpersLib.Radian(t);}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.pixiContainer.zIndex}set zIndex(t){this.pixiContainer.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new helpersLib.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 helpersLib.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!")}setMask(t){return t?(this.pixiContainer.addChild(t.pixiContainer),this.pixiContainer.mask=t.getMask(),this.ƀga=t):(this.ƀga&&this.pixiContainer.removeChild(this.ƀga.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}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgg}set mirror(t){this.ƀgg=t,this.ƀkd();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdb}set flip(t){this.ƀdb=t,this.ƀkd();}setScale(t){return this.scale=t,this}get scale(){return this.ƀif}set scale(t){this.ƀif=t,this.ƀkd();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀv}set aspectRatio(t){this.ƀv=t,this.ƀkd();}ƀkd(){this.pixiContainer.scale.set(this.ƀif,this.ƀif),this.ƀv<1?this.pixiContainer.scale.x*=this.ƀv:this.ƀv>1&&(this.pixiContainer.scale.y/=this.ƀv),this.ƀgg&&(this.pixiContainer.scale.x*=-1),this.ƀdb&&(this.pixiContainer.scale.y*=-1);}};var O=2;exports.BlendMode=void 0;(function(o){o[o.Normal=0]="Normal",o[o.Add=1]="Add",o[o.Screen=3]="Screen",o[o.Luminosity=16]="Luminosity",o[o.ColorDodge=7]="ColorDodge";})(exports.BlendMode||(exports.BlendMode={}));var fe=class{static{h(this,"GaussianValuesHelper");}static ƀdg(t,e){let i=e*e,r=1/(helpersLib.PI_360*i),s=-(t*t)/(2*i);return r*Math.exp(s)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),r=.005*i,s=helpersLib.NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<r)i-=l*2;else return true}),n=1/i,a=s.map(l=>l*n);return this.ƀ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=helpersLib.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.ƀ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 Di=class ti extends V__namespace.Filter{static{h(this,"BlurFilterPass");}static ƀeg(){return `
1
+ 'use strict';var actionsLib=require('actions-lib');require('reflect-metadata');var helpersLib=require('helpers-lib'),W=require('p2'),V=require('pixi.js'),scriptEngineLib=require('script-engine-lib');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var W__default=/*#__PURE__*/_interopDefault(W);var V__namespace=/*#__PURE__*/_interopNamespace(V);var cr=Object.defineProperty;var h=(o,t)=>cr(o,"name",{value:t,configurable:true});var G=class{static{h(this,"BardLegendsHardReset");}static{this.ƀer=new actionsLib.Action;}static{this.onHardReset=this.ƀer.notifier;}static hardReset(){actionsLib.ActionLib.hardReset(),this.ƀer.trigger();}};function d(){return function(o){let t=P.ƀeb(o);o.$meta={paramtypes:t,type:"service"};}}h(d,"ServiceDecorator");var P=class{static{h(this,"Service");}static{this.ƀiq=new Map;}static get(t){let e=this.ƀiq.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀic([],t.$meta.paramtypes);e=new t(...i),this.ƀiq.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 ƀic(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.ƀiq=new Map;}).attachToRoot();var U=class{static{h(this,"ControllerLink");}constructor(){this.ƀbl=[],this.ƀib=[];}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.ƀib.includes(e))throw new Error(`ServiceLink: the function is already registered, function name: "${e}"`);this.ƀib.push(e);}),this.ƀbl.push(t);}};function q(o){return function(t){let e=P.ƀeb(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=P.ƀic([],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(q,"ControllerDecorator");var y=class o{static{h(this,"UpdateCycle");}static{this.ƀac=new actionsLib.Action;}static{this.beforeSceneUpdateAction=this.ƀac.notifier;}static{this.ƀii=new actionsLib.Action;}static{this.sceneUpdateAction=this.ƀii.notifier;}static{this.ƀf=new actionsLib.Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀju=0;}static{this.ƀkc=void 0;}static wait(t){let e=this.ƀju+t;return actionsLib.SingleEvent.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀkc)this.ƀkc=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀkc=void 0;}static triggerUpdateTick(t){this.ƀkc&&(t=this.ƀkc(this.ƀju,t)),this.ƀju+=t,this.ƀfq=t,t>0&&(o.ƀac.trigger({time:this.ƀju,delta:t}),o.ƀii.trigger({time:this.ƀju,delta:t}),o.ƀf.trigger({time:this.ƀju,delta:t}));}static get lastDelta(){return this.ƀfq}static{this.ƀfq=0;}};G.onHardReset.subscribe(()=>{y.ƀac.clear(),y.ƀii.clear(),y.ƀf.clear(),y.ƀkc=void 0,y.ƀju=0;}).attachToRoot();var _=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(()=>{_.ƀav.clear();}).attachToRoot();var rt=class o{static{h(this,"EntityViewsHelper");}static{this.ƀkl=new Map;}static registerView(t,e){o.ƀkl.has(e)||o.ƀkl.set(e,[]);let i=o.ƀkl.get(e);i&&i.push(t),_.getEntities(e).forEach(s=>{this.ƀcg(s,t);});}static ƀcg(t,e){try{let i=P.ƀic([this],e.$meta.paramtypes);o.entityID=t.id;let r=new e(t,...i.slice(1));t.destroyed?r.destroy():t.ƀkk.ƀkm.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀcv=t,this.ƀkm=[];}createViews(){if(!this.ƀcv.destroyed){let t=o.ƀkl.get(this.ƀcv.constructor);t&&t.forEach(e=>{o.ƀcg(this.ƀcv,e);});}}updateViews(t,e){for(let i=0;i<this.ƀkm.length;i++){let r=this.ƀkm[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀkm.forEach(t=>{t.destroy();});}};G.onHardReset.subscribe(()=>{rt.ƀkl=new Map;}).attachToRoot();function dt(){return function(o){o.$meta={type:"entity"},_.registerEntityClass(o);}}h(dt,"EntityDecorator");var $=class extends actionsLib.IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return _.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=_.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return _.getEntities(this)}constructor(){super(),this.ƀkk=new rt(this),_.registerEntity(this),y.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀkk.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀkk.destroyViews(),_.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀkk.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀkk.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀkk.createViews(),this}update(t,e){}};var ut=class extends ${static{h(this,"SingletonEntity");}static getInstance(){return _.getSingleton(this)}static getInstanceOrFail(){return _.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 wr(){return function(o){return o.$meta={paramtypes:P.ƀeb(o),type:"scene"},o}}h(wr,"SceneDecorator");var Pt=class o extends actionsLib.IDAttachable{static{h(this,"Scene");}static{this.ƀih=false;}static{this.ƀb=new actionsLib.Variable(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.ƀih)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.ƀih=true;let i=P.ƀic([],this.$meta.paramtypes),r=new this(...i).attachToRoot();return o.ƀb.set(r),r.init(e).map(()=>(o.ƀih=false,r)).chainToRoot()}constructor(){super(),this.ƀgm=new actionsLib.Action,this.onClose=this.ƀgm.notifier,y.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(o.ƀb.value!==this)throw new Error("Internal Error: Scene instance is accessed while it is not the active scene!");if(o.ƀih)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");o.ƀih=true;let e=t[0];return this.prepareToClose().map(()=>(super.destroy(),o.ƀb.set(void 0),o.ƀih=false,this.ƀgm.trigger(e),e)).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};G.onHardReset.subscribe(()=>{Pt.ƀb.set(void 0);}).attachToRoot();function Ye(o){return function(t){t.$meta={paramtypes:P.ƀeb(t),viewInstances:new Map,entity:o.entity,type:"view"},rt.registerView(t,o.entity);}}h(Ye,"ViewDecorator");var Ht=class extends actionsLib.IDAttachable{static{h(this,"View");}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}constructor(){super(),this.attachToRoot(),this.ƀcw=rt.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 f=class o{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return helpersLib.Rectangle.fromRect({topLeft:{x:t.lowerBound[0],y:t.lowerBound[1]},bottomRight:{x:t.upperBound[0],y:t.upperBound[1]}})}static arrayToVector(t){return new helpersLib.Vector(t[0],t[1])}static vectorToArray(t){return [t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return (t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>o.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new W__default.default.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};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},J=new U,St=class{static{h(this,"PhysicsInternalGateway");}createBody(t,e,i,r,s){return J.trigger("createBody",t,e,i,r,s)}getMaterial(t,e){return J.trigger("getMaterial",t,e)}getMaterialDefinition(t,e){return J.trigger("getMaterialDefinition",t,e)}getGroupConstant(t,e){return J.trigger("getGroupConstant",t,e)}getMaskConstant(t,e){return J.trigger("getMaskConstant",t,e)}addBody(t,e,i,r,s){return J.trigger("addBody",t,e,i,r,s)}removeBody(t,e){return J.trigger("removeBody",t,e)}subscribeToPhysicsStep(t,e){return J.trigger("subscribeToPhysicsStep",t,e)}};St=Sr([d()],St);var b=class o extends ${static{h(this,"PhysicsEntity");}static{this.ƀha=new Map;}static{this.ƀhh=new Map;}static getFromP2BodyID(t){return o.ƀha.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀha.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀhh.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀhh.values())}get area(){return this.ƀt}get mass(){return this.ƀgc}get collisions(){return this.ƀax}constructor(t,e,i){super(),this.ƀgn=new actionsLib.Action,this.onCollision=this.ƀgn.notifier,this.type="dynamic",this.ƀt=0,this.ƀgc=0,this.ƀax=[],this.physicsWorldID=t,this.ƀhj=P.get(St);let r=this.ƀhj.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀhj.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀhi=this.ƀhj.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀhk=this.ƀhj.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀhj.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀt=this.p2Body.getArea(),this.ƀgc=this.p2Body.mass,this.p2Body.position=f.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀhj.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.ƀha.set(this.p2Body.id,this),o.ƀhh.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀhj.removeBody(this.physicsWorldID,this.p2Body),o.ƀha.delete(this.p2Body.id),o.ƀhh.delete(this.id));}canCollideWith(t){return f.arePhysicsGroupsCollidable(this.ƀhi,this.ƀhk,t.ƀhi,t.ƀhk)}ƀir(t){this.ƀax=t,t.length>0&&this.ƀgn.trigger(t);}};var Wt=class extends b{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=f.arrayToVector(this.p2Body.position),this.rotation=new helpersLib.Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:helpersLib.Vector.zero,rotationalSpeed:0}}};var Xe=class extends ${static{h(this,"MovableEntity");}constructor(){super(),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),y.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀjj(t,e);}).attach(this);}ƀjj(t,e){this.position.value=this.position.value.add(this.velocity.value.multiplyNumber(e)),this.rotation.value=new helpersLib.Radian(this.rotation.value.value+this.rotationalSpeed.value*e);}};var Ze=class extends b{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new actionsLib.Variable(helpersLib.Vector.zero),this.rotation=new actionsLib.Variable(helpersLib.Radian.get0),this.velocity=new actionsLib.Variable(helpersLib.Vector.zero),this.rotationalSpeed=new actionsLib.Variable(0),this.ƀey=false,this.ƀez=false,this.ƀfb=false,this.ƀfa=false,this.ƀhe(),this.ƀfw(),P.get(St).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀjj(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}}ƀjj(t,e){this.ƀey=true,this.ƀez=true,this.ƀfb=true,this.ƀfa=true,this.ƀhe();}ƀhe(){this.position.value=f.arrayToVector(this.p2Body.position),this.rotation.value=new helpersLib.Radian(this.p2Body.angle),this.velocity.value=f.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀfw(){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 Ke=10.8,Qe=10.01;exports.PhysicsShapeType=void 0;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle";})(exports.PhysicsShapeType||(exports.PhysicsShapeType={}));var st="border";var Y=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 Y.lineer(t)}},Ir=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return Y.easeIn(t)}},Ar=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return Y.easeOut(t)}},Or=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return Y.easeInOut(t)}},Mr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return Y.easeInOutCubic(t)}},Ai=class{static{h(this,"AnimationFlicker");}start(){this.ƀjv=new Array(10).fill(0),helpersLib.Random.integerBetween(0,9),this.ƀjv[helpersLib.Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(helpersLib.Random.integerBetween(0,9),this.ƀjv[helpersLib.Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(helpersLib.Random.integerBetween(0,9),this.ƀjv[helpersLib.Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀjv[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;}};exports.ReAnimateHandlingType=void 0;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious";})(exports.ReAnimateHandlingType||(exports.ReAnimateHandlingType={}));exports.AnimationsCompletionHandlingType=void 0;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop";})(exports.AnimationsCompletionHandlingType||(exports.AnimationsCompletionHandlingType={}));var A=class o{static{h(this,"Animator");}static{this.ƀj=new WeakMap;}static ƀdi(t){let e=o.ƀj.get(t);return e||(e=new helpersLib.MapToWeakRefs,o.ƀj.set(t,e)),e}get animating(){return this.ƀgw!==void 0}get target(){return this.ƀjm}get value(){return this.ƀke||(this.ƀke=new actionsLib.Variable(this.ƀjm)),this.ƀke.notifier}constructor(t,e,i){this.ƀfk=false,this.ƀiy=false,this.ƀjm=t,this.ƀgz={duration:200,animation:S.lineer,reAnimateHandling:exports.ReAnimateHandlingType.ThrowError,completionHandling:exports.AnimationsCompletionHandlingType.StayInCurrentState,...i},this.ƀk=helpersLib.Comparator.isArray(e)?e:[e],this.ƀfx(t,this.ƀk);}animate(t,e){let i={...this.ƀgz,...e};if(this.ƀgw)switch(i.reAnimateHandling){case exports.ReAnimateHandlingType.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case exports.ReAnimateHandlingType.IgnoreNewAnimation:return actionsLib.SingleEvent.instant();case exports.ReAnimateHandlingType.CompletePrevious:this.ƀis(i.completionHandling,this.ƀgw.ƀht,true);break;default:{throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return actionsLib.SingleEvent.create(s=>{this.ƀfk&&(this.ƀiy=true);let n=this.ƀk.reduce((c,p)=>(c[p]={ƀjg:this.ƀjm[p],ƀjo:t[p]},c),{}),a={ƀcr:i.duration,ƀcs:0,ƀht:n,ƀbe:i.completionHandling,ƀl:i.animation,ƀbd:s};if(a.ƀbe!==exports.AnimationsCompletionHandlingType.Loop&&this.ƀfi(a)){this.ƀgw=void 0,s();return}else a.ƀl.start();let l=this.ƀgw;return this.ƀgw=a,this.ƀcu(),l?.ƀbd(),()=>{this.ƀgw===a&&(this.ƀjm instanceof actionsLib.Attachable&&this.ƀjm.destroyed||this.ƀis(a.ƀbe,a.ƀht,true),this.ƀgw=void 0,this.ƀkb?.destroy(),this.ƀkb=void 0);}})}set(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r]&&(e=true,this.ƀjm[r]=t[r]);}e&&this.ƀke?.set(this.ƀjm),this.ƀgw?.ƀbd();}completeAnimation(t){if(this.ƀgw){t=t??this.ƀgw.ƀbe,this.ƀis(t,this.ƀgw.ƀht,true);let e=this.ƀgw.ƀbd;this.ƀgw=void 0,e();}}ƀcu(){this.ƀkb||(this.ƀkb=y.beforeSceneUpdateAction.subscribe(t=>{this.ƀfk=true;try{let e=this.ƀgw;if(!e)return;e.ƀcs+=t.delta;let i=e.ƀcs>=e.ƀcr;if(i)if(e.ƀbe===exports.AnimationsCompletionHandlingType.Loop)e.ƀcs%=e.ƀcr,e.ƀl.start(),i=!1;else {this.ƀis(e.ƀbe,e.ƀht,!1),this.ƀgw=void 0,e.ƀbd(),this.ƀgw||(this.ƀkb?.destroy(),this.ƀkb=void 0);return}if(!i){let r=e.ƀl.multiplierFunction(e.ƀcs/e.ƀcr),s=!1;for(let n=0;n<this.ƀk.length;n++){let a=this.ƀk[n],l=e.ƀht[a],p=(l.ƀjo-l.ƀjg)*r+l.ƀjg;p!==this.ƀjm[a]&&(s=!0,this.ƀjm[a]=p);}s&&this.ƀke?.set(this.ƀjm);}}finally{this.ƀfk=false,this.ƀiy&&(this.ƀiy=false,this.ƀkb?.destroy(),this.ƀkb=void 0,this.ƀcu());}}).attachToRoot());}ƀfi(t){for(let e=0;e<this.ƀk.length;e++){let i=this.ƀk[e];if(this.ƀjm[i]!==t.ƀht[i].ƀjo)return false}return true}ƀis(t,e,i){switch(t){case exports.AnimationsCompletionHandlingType.ReturnToOriginal:this.ƀie(e);break;case exports.AnimationsCompletionHandlingType.StayInCurrentState:i||this.ƀfn(e);break;case exports.AnimationsCompletionHandlingType.JumpToEnd:this.ƀfn(e);break;case exports.AnimationsCompletionHandlingType.Loop:this.ƀie(e);break;default:{throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀie(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjg&&(e=true,this.ƀjm[r]=t[r].ƀjg);}e&&this.ƀke?.set(this.ƀjm);}ƀfn(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjo&&(e=true,this.ƀjm[r]=t[r].ƀjo);}e&&this.ƀke?.set(this.ƀjm);}ƀfx(t,e){let i=o.ƀ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);}}};exports.ContainerEventType=void 0;(function(o){o.Click="click",o.MouseOver="mouseover",o.MouseOut="mouseout",o.PointerDown="pointerdown",o.PointerUp="pointerup",o.PointerUpOutside="pointerupoutside",o.PointerMove="pointermove",o.PointerCancel="pointercancel",o.PointerOver="pointerover",o.PointerOut="pointerout",o.PointerEnter="pointerenter",o.PointerLeave="pointerleave",o.Added="added",o.Removed="removed",o.Update="update",o.Change="change";})(exports.ContainerEventType||(exports.ContainerEventType={}));exports.Cursor=void 0;(function(o){o.Default="default",o.Pointer="pointer";})(exports.Cursor||(exports.Cursor={}));var ue=class extends actionsLib.IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀgg=false,this.ƀdb=false,this.ƀif=1,this.ƀv=1,this.pixiContainer=new V__namespace.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new helpersLib.Vector(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 helpersLib.Vector(this.pixiContainer.scale.x,this.pixiContainer.scale.y),s=new helpersLib.Vector(i.x,i.y).multiply(r),n=new helpersLib.Vector(i.width,i.height).multiply(r),a=s.add(n.multiply(e.holdFrom));t=t.subtract(a);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new helpersLib.Vector(this.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 actionsLib.ActionSubscription(()=>{this.pixiContainer.off(t,i);})}setRotation(t){return this.rotation=t,this}get rotation(){return new helpersLib.Radian(this.pixiContainer.rotation)}set rotation(t){this.pixiContainer.rotation=t.value;}get rotationValue(){return this.rotation.value}set rotationValue(t){this.rotation=new helpersLib.Radian(t);}setZIndex(t){return this.zIndex=t,this}get zIndex(){return this.pixiContainer.zIndex}set zIndex(t){this.pixiContainer.zIndex=t;}setSkewX(t){return this.skewX=t,this}get skewX(){return new helpersLib.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 helpersLib.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!")}setMask(t){return t?(this.pixiContainer.addChild(t.pixiContainer),this.pixiContainer.mask=t.getMask(),this.ƀga=t):(this.ƀga&&this.pixiContainer.removeChild(this.ƀga.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}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgg}set mirror(t){this.ƀgg=t,this.ƀkd();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdb}set flip(t){this.ƀdb=t,this.ƀkd();}setScale(t){return this.scale=t,this}get scale(){return this.ƀif}set scale(t){this.ƀif=t,this.ƀkd();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀv}set aspectRatio(t){this.ƀv=t,this.ƀkd();}ƀkd(){this.pixiContainer.scale.set(this.ƀif,this.ƀif),this.ƀv<1?this.pixiContainer.scale.x*=this.ƀv:this.ƀv>1&&(this.pixiContainer.scale.y/=this.ƀv),this.ƀgg&&(this.pixiContainer.scale.x*=-1),this.ƀdb&&(this.pixiContainer.scale.y*=-1);}};var O=2;exports.BlendMode=void 0;(function(o){o[o.Normal=0]="Normal",o[o.Add=1]="Add",o[o.Screen=3]="Screen",o[o.Luminosity=16]="Luminosity",o[o.ColorDodge=7]="ColorDodge";})(exports.BlendMode||(exports.BlendMode={}));var fe=class{static{h(this,"GaussianValuesHelper");}static ƀdg(t,e){let i=e*e,r=1/(helpersLib.PI_360*i),s=-(t*t)/(2*i);return r*Math.exp(s)}static getValuesForLinearSamplingPascal(t){let e=t*2,i=Math.pow(2,e),r=.005*i,s=helpersLib.NumberHelper.pascalTriangleRow(e).slice(t).filter(l=>{if(l<r)i-=l*2;else return true}),n=1/i,a=s.map(l=>l*n);return this.ƀ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=helpersLib.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.ƀ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 Di=class ti extends V__namespace.Filter{static{h(this,"BlurFilterPass");}static ƀeg(){return `
2
2
  attribute vec2 aVertexPosition;
3
3
  attribute vec2 aTextureCoord;
4
4
 
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,Radian,Random,MapToWeakRefs,Comparator,NumberHelper,ArrayHelper,ColorHelper,PI_360,Queue,GridNeighborType,BinaryHeap,Grid,Line}from'helpers-lib';import W from'p2';import*as V from'pixi.js';import {RichTextSeparator}from'script-engine-lib';var cr=Object.defineProperty;var h=(o,t)=>cr(o,"name",{value:t,configurable:true});var G=class{static{h(this,"BardLegendsHardReset");}static{this.ƀer=new Action;}static{this.onHardReset=this.ƀer.notifier;}static hardReset(){ActionLib.hardReset(),this.ƀer.trigger();}};function d(){return function(o){let t=P.ƀeb(o);o.$meta={paramtypes:t,type:"service"};}}h(d,"ServiceDecorator");var P=class{static{h(this,"Service");}static{this.ƀiq=new Map;}static get(t){let e=this.ƀiq.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀic([],t.$meta.paramtypes);e=new t(...i),this.ƀiq.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 ƀic(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.ƀiq=new Map;}).attachToRoot();var U=class{static{h(this,"ControllerLink");}constructor(){this.ƀbl=[],this.ƀib=[];}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.ƀib.includes(e))throw new Error(`ServiceLink: the function is already registered, function name: "${e}"`);this.ƀib.push(e);}),this.ƀbl.push(t);}};function q(o){return function(t){let e=P.ƀeb(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=P.ƀic([],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(q,"ControllerDecorator");var y=class o{static{h(this,"UpdateCycle");}static{this.ƀac=new Action;}static{this.beforeSceneUpdateAction=this.ƀac.notifier;}static{this.ƀii=new Action;}static{this.sceneUpdateAction=this.ƀii.notifier;}static{this.ƀf=new Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀju=0;}static{this.ƀkc=void 0;}static wait(t){let e=this.ƀju+t;return SingleEvent.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀkc)this.ƀkc=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀkc=void 0;}static triggerUpdateTick(t){this.ƀkc&&(t=this.ƀkc(this.ƀju,t)),this.ƀju+=t,this.ƀfq=t,t>0&&(o.ƀac.trigger({time:this.ƀju,delta:t}),o.ƀii.trigger({time:this.ƀju,delta:t}),o.ƀf.trigger({time:this.ƀju,delta:t}));}static get lastDelta(){return this.ƀfq}static{this.ƀfq=0;}};G.onHardReset.subscribe(()=>{y.ƀac.clear(),y.ƀii.clear(),y.ƀf.clear(),y.ƀkc=void 0,y.ƀju=0;}).attachToRoot();var _=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(()=>{_.ƀav.clear();}).attachToRoot();var rt=class o{static{h(this,"EntityViewsHelper");}static{this.ƀkl=new Map;}static registerView(t,e){o.ƀkl.has(e)||o.ƀkl.set(e,[]);let i=o.ƀkl.get(e);i&&i.push(t),_.getEntities(e).forEach(s=>{this.ƀcg(s,t);});}static ƀcg(t,e){try{let i=P.ƀic([this],e.$meta.paramtypes);o.entityID=t.id;let r=new e(t,...i.slice(1));t.destroyed?r.destroy():t.ƀkk.ƀkm.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀcv=t,this.ƀkm=[];}createViews(){if(!this.ƀcv.destroyed){let t=o.ƀkl.get(this.ƀcv.constructor);t&&t.forEach(e=>{o.ƀcg(this.ƀcv,e);});}}updateViews(t,e){for(let i=0;i<this.ƀkm.length;i++){let r=this.ƀkm[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀkm.forEach(t=>{t.destroy();});}};G.onHardReset.subscribe(()=>{rt.ƀkl=new Map;}).attachToRoot();function dt(){return function(o){o.$meta={type:"entity"},_.registerEntityClass(o);}}h(dt,"EntityDecorator");var $=class extends IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return _.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=_.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return _.getEntities(this)}constructor(){super(),this.ƀkk=new rt(this),_.registerEntity(this),y.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀkk.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀkk.destroyViews(),_.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀkk.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀkk.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀkk.createViews(),this}update(t,e){}};var ut=class extends ${static{h(this,"SingletonEntity");}static getInstance(){return _.getSingleton(this)}static getInstanceOrFail(){return _.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 wr(){return function(o){return o.$meta={paramtypes:P.ƀeb(o),type:"scene"},o}}h(wr,"SceneDecorator");var Pt=class o extends IDAttachable{static{h(this,"Scene");}static{this.ƀih=false;}static{this.ƀb=new Variable(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.ƀih)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.ƀih=true;let i=P.ƀic([],this.$meta.paramtypes),r=new this(...i).attachToRoot();return o.ƀb.set(r),r.init(e).map(()=>(o.ƀih=false,r)).chainToRoot()}constructor(){super(),this.ƀgm=new Action,this.onClose=this.ƀgm.notifier,y.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(o.ƀb.value!==this)throw o.ƀih?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.ƀih=true,this.prepareToClose().map(()=>(super.destroy(),o.ƀb.set(void 0),o.ƀih=false,this.ƀgm.trigger(e),e)).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};G.onHardReset.subscribe(()=>{Pt.ƀb.set(void 0);}).attachToRoot();function Ye(o){return function(t){t.$meta={paramtypes:P.ƀeb(t),viewInstances:new Map,entity:o.entity,type:"view"},rt.registerView(t,o.entity);}}h(Ye,"ViewDecorator");var Ht=class extends IDAttachable{static{h(this,"View");}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}constructor(){super(),this.attachToRoot(),this.ƀcw=rt.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 f=class o{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return Rectangle.fromRect({topLeft:{x:t.lowerBound[0],y:t.lowerBound[1]},bottomRight:{x:t.upperBound[0],y:t.upperBound[1]}})}static arrayToVector(t){return new Vector(t[0],t[1])}static vectorToArray(t){return [t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return (t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>o.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new W.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};var 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},J=new U,St=class{static{h(this,"PhysicsInternalGateway");}createBody(t,e,i,r,s){return J.trigger("createBody",t,e,i,r,s)}getMaterial(t,e){return J.trigger("getMaterial",t,e)}getMaterialDefinition(t,e){return J.trigger("getMaterialDefinition",t,e)}getGroupConstant(t,e){return J.trigger("getGroupConstant",t,e)}getMaskConstant(t,e){return J.trigger("getMaskConstant",t,e)}addBody(t,e,i,r,s){return J.trigger("addBody",t,e,i,r,s)}removeBody(t,e){return J.trigger("removeBody",t,e)}subscribeToPhysicsStep(t,e){return J.trigger("subscribeToPhysicsStep",t,e)}};St=Sr([d()],St);var b=class o extends ${static{h(this,"PhysicsEntity");}static{this.ƀha=new Map;}static{this.ƀhh=new Map;}static getFromP2BodyID(t){return o.ƀha.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀha.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀhh.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀhh.values())}get area(){return this.ƀt}get mass(){return this.ƀgc}get collisions(){return this.ƀax}constructor(t,e,i){super(),this.ƀgn=new Action,this.onCollision=this.ƀgn.notifier,this.type="dynamic",this.ƀt=0,this.ƀgc=0,this.ƀax=[],this.physicsWorldID=t,this.ƀhj=P.get(St);let r=this.ƀhj.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀhj.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀhi=this.ƀhj.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀhk=this.ƀhj.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀhj.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀt=this.p2Body.getArea(),this.ƀgc=this.p2Body.mass,this.p2Body.position=f.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀhj.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.ƀha.set(this.p2Body.id,this),o.ƀhh.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀhj.removeBody(this.physicsWorldID,this.p2Body),o.ƀha.delete(this.p2Body.id),o.ƀhh.delete(this.id));}canCollideWith(t){return f.arePhysicsGroupsCollidable(this.ƀhi,this.ƀhk,t.ƀhi,t.ƀhk)}ƀir(t){this.ƀax=t,t.length>0&&this.ƀgn.trigger(t);}};var Wt=class extends b{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=f.arrayToVector(this.p2Body.position),this.rotation=new Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:Vector.zero,rotationalSpeed:0}}};var Xe=class extends ${static{h(this,"MovableEntity");}constructor(){super(),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),y.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀjj(t,e);}).attach(this);}ƀjj(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 Ze=class extends b{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),this.ƀey=false,this.ƀez=false,this.ƀfb=false,this.ƀfa=false,this.ƀhe(),this.ƀfw(),P.get(St).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀjj(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}}ƀjj(t,e){this.ƀey=true,this.ƀez=true,this.ƀfb=true,this.ƀfa=true,this.ƀhe();}ƀhe(){this.position.value=f.arrayToVector(this.p2Body.position),this.rotation.value=new Radian(this.p2Body.angle),this.velocity.value=f.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀfw(){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 Ke=10.8,Qe=10.01,tt;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle";})(tt||(tt={}));var st="border";var Y=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 Y.lineer(t)}},Ir=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return Y.easeIn(t)}},Ar=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return Y.easeOut(t)}},Or=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return Y.easeInOut(t)}},Mr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return Y.easeInOutCubic(t)}},Ai=class{static{h(this,"AnimationFlicker");}start(){this.ƀjv=new Array(10).fill(0),Random.integerBetween(0,9),this.ƀjv[Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(Random.integerBetween(0,9),this.ƀjv[Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(Random.integerBetween(0,9),this.ƀjv[Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀjv[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;}};var F;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious";})(F||(F={}));var R;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop";})(R||(R={}));var A=class o{static{h(this,"Animator");}static{this.ƀj=new WeakMap;}static ƀdi(t){let e=o.ƀj.get(t);return e||(e=new MapToWeakRefs,o.ƀj.set(t,e)),e}get animating(){return this.ƀgw!==void 0}get target(){return this.ƀjm}get value(){return this.ƀke||(this.ƀke=new Variable(this.ƀjm)),this.ƀke.notifier}constructor(t,e,i){this.ƀfk=false,this.ƀiy=false,this.ƀjm=t,this.ƀgz={duration:200,animation:S.lineer,reAnimateHandling:F.ThrowError,completionHandling:R.StayInCurrentState,...i},this.ƀk=Comparator.isArray(e)?e:[e],this.ƀfx(t,this.ƀk);}animate(t,e){let i={...this.ƀgz,...e};if(this.ƀgw)switch(i.reAnimateHandling){case F.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case F.IgnoreNewAnimation:return SingleEvent.instant();case F.CompletePrevious:this.ƀis(i.completionHandling,this.ƀgw.ƀht,true);break;default:{throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return SingleEvent.create(s=>{this.ƀfk&&(this.ƀiy=true);let n=this.ƀk.reduce((c,p)=>(c[p]={ƀjg:this.ƀjm[p],ƀjo:t[p]},c),{}),a={ƀcr:i.duration,ƀcs:0,ƀht:n,ƀbe:i.completionHandling,ƀl:i.animation,ƀbd:s};if(a.ƀbe!==R.Loop&&this.ƀfi(a)){this.ƀgw=void 0,s();return}else a.ƀl.start();let l=this.ƀgw;return this.ƀgw=a,this.ƀcu(),l?.ƀbd(),()=>{this.ƀgw===a&&(this.ƀjm instanceof Attachable&&this.ƀjm.destroyed||this.ƀis(a.ƀbe,a.ƀht,true),this.ƀgw=void 0,this.ƀkb?.destroy(),this.ƀkb=void 0);}})}set(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r]&&(e=true,this.ƀjm[r]=t[r]);}e&&this.ƀke?.set(this.ƀjm),this.ƀgw?.ƀbd();}completeAnimation(t){if(this.ƀgw){t=t??this.ƀgw.ƀbe,this.ƀis(t,this.ƀgw.ƀht,true);let e=this.ƀgw.ƀbd;this.ƀgw=void 0,e();}}ƀcu(){this.ƀkb||(this.ƀkb=y.beforeSceneUpdateAction.subscribe(t=>{this.ƀfk=true;try{let e=this.ƀgw;if(!e)return;e.ƀcs+=t.delta;let i=e.ƀcs>=e.ƀcr;if(i)if(e.ƀbe===R.Loop)e.ƀcs%=e.ƀcr,e.ƀl.start(),i=!1;else {this.ƀis(e.ƀbe,e.ƀht,!1),this.ƀgw=void 0,e.ƀbd(),this.ƀgw||(this.ƀkb?.destroy(),this.ƀkb=void 0);return}if(!i){let r=e.ƀl.multiplierFunction(e.ƀcs/e.ƀcr),s=!1;for(let n=0;n<this.ƀk.length;n++){let a=this.ƀk[n],l=e.ƀht[a],p=(l.ƀjo-l.ƀjg)*r+l.ƀjg;p!==this.ƀjm[a]&&(s=!0,this.ƀjm[a]=p);}s&&this.ƀke?.set(this.ƀjm);}}finally{this.ƀfk=false,this.ƀiy&&(this.ƀiy=false,this.ƀkb?.destroy(),this.ƀkb=void 0,this.ƀcu());}}).attachToRoot());}ƀfi(t){for(let e=0;e<this.ƀk.length;e++){let i=this.ƀk[e];if(this.ƀjm[i]!==t.ƀht[i].ƀjo)return false}return true}ƀis(t,e,i){switch(t){case R.ReturnToOriginal:this.ƀie(e);break;case R.StayInCurrentState:i||this.ƀfn(e);break;case R.JumpToEnd:this.ƀfn(e);break;case R.Loop:this.ƀie(e);break;default:{throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀie(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjg&&(e=true,this.ƀjm[r]=t[r].ƀjg);}e&&this.ƀke?.set(this.ƀjm);}ƀfn(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjo&&(e=true,this.ƀjm[r]=t[r].ƀjo);}e&&this.ƀke?.set(this.ƀjm);}ƀfx(t,e){let i=o.ƀ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 $t;(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";})($t||($t={}));var qe;(function(o){o.Default="default",o.Pointer="pointer";})(qe||(qe={}));var ue=class extends IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀgg=false,this.ƀdb=false,this.ƀif=1,this.ƀv=1,this.pixiContainer=new V.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new Vector(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(this.pixiContainer.scale.x,this.pixiContainer.scale.y),s=new Vector(i.x,i.y).multiply(r),n=new Vector(i.width,i.height).multiply(r),a=s.add(n.multiply(e.holdFrom));t=t.subtract(a);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new Vector(this.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 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!")}setMask(t){return t?(this.pixiContainer.addChild(t.pixiContainer),this.pixiContainer.mask=t.getMask(),this.ƀga=t):(this.ƀga&&this.pixiContainer.removeChild(this.ƀga.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}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgg}set mirror(t){this.ƀgg=t,this.ƀkd();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdb}set flip(t){this.ƀdb=t,this.ƀkd();}setScale(t){return this.scale=t,this}get scale(){return this.ƀif}set scale(t){this.ƀif=t,this.ƀkd();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀv}set aspectRatio(t){this.ƀv=t,this.ƀkd();}ƀkd(){this.pixiContainer.scale.set(this.ƀif,this.ƀif),this.ƀv<1?this.pixiContainer.scale.x*=this.ƀv:this.ƀv>1&&(this.pixiContainer.scale.y/=this.ƀv),this.ƀgg&&(this.pixiContainer.scale.x*=-1),this.ƀdb&&(this.pixiContainer.scale.y*=-1);}};var O=2,Tt;(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";})(Tt||(Tt={}));var fe=class{static{h(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}),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=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.ƀ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 Di=class ti extends V.Filter{static{h(this,"BlurFilterPass");}static ƀeg(){return `
1
+ import {Action,ActionLib,SingleEvent,IDAttachable,Variable,Attachable,ActionSubscription,Reducer,SingleAction}from'actions-lib';import'reflect-metadata';import {Rectangle,Vector,Radian,Random,MapToWeakRefs,Comparator,NumberHelper,ArrayHelper,ColorHelper,PI_360,Queue,GridNeighborType,BinaryHeap,Grid,Line}from'helpers-lib';import W from'p2';import*as V from'pixi.js';import {RichTextSeparator}from'script-engine-lib';var cr=Object.defineProperty;var h=(o,t)=>cr(o,"name",{value:t,configurable:true});var G=class{static{h(this,"BardLegendsHardReset");}static{this.ƀer=new Action;}static{this.onHardReset=this.ƀer.notifier;}static hardReset(){ActionLib.hardReset(),this.ƀer.trigger();}};function d(){return function(o){let t=P.ƀeb(o);o.$meta={paramtypes:t,type:"service"};}}h(d,"ServiceDecorator");var P=class{static{h(this,"Service");}static{this.ƀiq=new Map;}static get(t){let e=this.ƀiq.get(t);if(!e){if(!t.$meta)throw new Error(`Service: service class is not decorated by @ServiceDecorator(), class: "${t.name}"`);let i=this.ƀic([],t.$meta.paramtypes);e=new t(...i),this.ƀiq.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 ƀic(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.ƀiq=new Map;}).attachToRoot();var U=class{static{h(this,"ControllerLink");}constructor(){this.ƀbl=[],this.ƀib=[];}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.ƀib.includes(e))throw new Error(`ServiceLink: the function is already registered, function name: "${e}"`);this.ƀib.push(e);}),this.ƀbl.push(t);}};function q(o){return function(t){let e=P.ƀeb(t);if(e.some(i=>!i))console.error(`Circular dependency: ${t.name}`);else {let i=P.ƀic([],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(q,"ControllerDecorator");var y=class o{static{h(this,"UpdateCycle");}static{this.ƀac=new Action;}static{this.beforeSceneUpdateAction=this.ƀac.notifier;}static{this.ƀii=new Action;}static{this.sceneUpdateAction=this.ƀii.notifier;}static{this.ƀf=new Action;}static{this.afterSceneUpdateAction=this.ƀf.notifier;}static{this.ƀju=0;}static{this.ƀkc=void 0;}static wait(t){let e=this.ƀju+t;return SingleEvent.create(i=>{let r=o.beforeSceneUpdateAction.subscribe(s=>{s.time>=e&&i();}).attachToRoot();return ()=>r.destroy()})}static registerUpdateModifier(t){if(!this.ƀkc)this.ƀkc=t;else throw new Error("UpdateCycle: There can only one update modifier!")}static cleanUpdateModifier(){this.ƀkc=void 0;}static triggerUpdateTick(t){this.ƀkc&&(t=this.ƀkc(this.ƀju,t)),this.ƀju+=t,this.ƀfq=t,t>0&&(o.ƀac.trigger({time:this.ƀju,delta:t}),o.ƀii.trigger({time:this.ƀju,delta:t}),o.ƀf.trigger({time:this.ƀju,delta:t}));}static get lastDelta(){return this.ƀfq}static{this.ƀfq=0;}};G.onHardReset.subscribe(()=>{y.ƀac.clear(),y.ƀii.clear(),y.ƀf.clear(),y.ƀkc=void 0,y.ƀju=0;}).attachToRoot();var _=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(()=>{_.ƀav.clear();}).attachToRoot();var rt=class o{static{h(this,"EntityViewsHelper");}static{this.ƀkl=new Map;}static registerView(t,e){o.ƀkl.has(e)||o.ƀkl.set(e,[]);let i=o.ƀkl.get(e);i&&i.push(t),_.getEntities(e).forEach(s=>{this.ƀcg(s,t);});}static ƀcg(t,e){try{let i=P.ƀic([this],e.$meta.paramtypes);o.entityID=t.id;let r=new e(t,...i.slice(1));t.destroyed?r.destroy():t.ƀkk.ƀkm.push(r);}catch(i){console.error(i);}}constructor(t){this.ƀcv=t,this.ƀkm=[];}createViews(){if(!this.ƀcv.destroyed){let t=o.ƀkl.get(this.ƀcv.constructor);t&&t.forEach(e=>{o.ƀcg(this.ƀcv,e);});}}updateViews(t,e){for(let i=0;i<this.ƀkm.length;i++){let r=this.ƀkm[i];r.destroyed||r.update(t,e);}}destroyViews(){this.ƀkm.forEach(t=>{t.destroy();});}};G.onHardReset.subscribe(()=>{rt.ƀkl=new Map;}).attachToRoot();function dt(){return function(o){o.$meta={type:"entity"},_.registerEntityClass(o);}}h(dt,"EntityDecorator");var $=class extends IDAttachable{static{h(this,"Entity");}static getInstanceByID(t){if(t)return _.getEntity(this,t)}static getInstanceByIDOrFail(t){let e=_.getEntity(this,t);if(!e)throw new Error(`Entity: entity is not found! Name: "${this.name}", id: "${t}"`);return e}static getEntities(){return _.getEntities(this)}constructor(){super(),this.ƀkk=new rt(this),_.registerEntity(this),y.sceneUpdateAction.subscribe(t=>{this.destroyed||(this.update(t.time,t.delta),this.ƀkk.updateViews(t.time,t.delta));}).attach(this);}destroy(){this.destroyed||(this.ƀkk.destroyViews(),_.unregisterEntity(this.constructor,this.id),super.destroy());}attach(t){return super.attach(t),this.ƀkk.createViews(),this}attachByID(t){return super.attachByID(t),this.ƀkk.createViews(),this}attachToRoot(){return super.attachToRoot(),this.ƀkk.createViews(),this}update(t,e){}};var ut=class extends ${static{h(this,"SingletonEntity");}static getInstance(){return _.getSingleton(this)}static getInstanceOrFail(){return _.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 wr(){return function(o){return o.$meta={paramtypes:P.ƀeb(o),type:"scene"},o}}h(wr,"SceneDecorator");var Pt=class o extends IDAttachable{static{h(this,"Scene");}static{this.ƀih=false;}static{this.ƀb=new Variable(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.ƀih)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.ƀih=true;let i=P.ƀic([],this.$meta.paramtypes),r=new this(...i).attachToRoot();return o.ƀb.set(r),r.init(e).map(()=>(o.ƀih=false,r)).chainToRoot()}constructor(){super(),this.ƀgm=new Action,this.onClose=this.ƀgm.notifier,y.sceneUpdateAction.subscribe(t=>this.update(t.time,t.delta)).attach(this);}close(...t){if(o.ƀb.value!==this)throw new Error("Internal Error: Scene instance is accessed while it is not the active scene!");if(o.ƀih)throw new Error("Scene: you cannot close a scene while a scene is transitioning!");o.ƀih=true;let e=t[0];return this.prepareToClose().map(()=>(super.destroy(),o.ƀb.set(void 0),o.ƀih=false,this.ƀgm.trigger(e),e)).chainToRoot()}destroy(){throw new Error('To close a scene use the "close()" function')}};G.onHardReset.subscribe(()=>{Pt.ƀb.set(void 0);}).attachToRoot();function Ye(o){return function(t){t.$meta={paramtypes:P.ƀeb(t),viewInstances:new Map,entity:o.entity,type:"view"},rt.registerView(t,o.entity);}}h(Ye,"ViewDecorator");var Ht=class extends IDAttachable{static{h(this,"View");}static getInstance(t){return this.$meta.entity.validateID(t)?this.$meta.viewInstances.get(t):void 0}static getInstanceOrFail(t){if(!this.$meta.entity.validateID(t))throw new Error(`View: getInstance is called with entity id: "${t}", that is not belonging to the class: "${this.$meta.entity}"`);let i=this.$meta.viewInstances.get(t);if(!i)throw new Error(`View: getInstanceOrFail is called with entity id: "${t}", that is not found!`);return i}constructor(){super(),this.attachToRoot(),this.ƀcw=rt.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 f=class o{static{h(this,"P2JSHelper");}static aabbToBoundingBox(t){return Rectangle.fromRect({topLeft:{x:t.lowerBound[0],y:t.lowerBound[1]},bottomRight:{x:t.upperBound[0],y:t.upperBound[1]}})}static arrayToVector(t){return new Vector(t[0],t[1])}static vectorToArray(t){return [t.x,t.y]}static arePhysicsGroupsCollidable(t,e,i,r){return (t&r)!==0&&(i&e)!==0}static canCollideWith(t,e){return t.shapes.some(i=>e.shapes.some(r=>o.arePhysicsGroupsCollidable(i.collisionGroup,i.collisionMask,r.collisionGroup,r.collisionMask)))}static cloneP2Body(t){let e=new W.Body({position:t.position,angle:t.angle,type:t.type});return e.shapes=t.shapes,e}};var 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},J=new U,St=class{static{h(this,"PhysicsInternalGateway");}createBody(t,e,i,r,s){return J.trigger("createBody",t,e,i,r,s)}getMaterial(t,e){return J.trigger("getMaterial",t,e)}getMaterialDefinition(t,e){return J.trigger("getMaterialDefinition",t,e)}getGroupConstant(t,e){return J.trigger("getGroupConstant",t,e)}getMaskConstant(t,e){return J.trigger("getMaskConstant",t,e)}addBody(t,e,i,r,s){return J.trigger("addBody",t,e,i,r,s)}removeBody(t,e){return J.trigger("removeBody",t,e)}subscribeToPhysicsStep(t,e){return J.trigger("subscribeToPhysicsStep",t,e)}};St=Sr([d()],St);var b=class o extends ${static{h(this,"PhysicsEntity");}static{this.ƀha=new Map;}static{this.ƀhh=new Map;}static getFromP2BodyID(t){return o.ƀha.get(t)}static getFromP2BodyIDOrFail(t){let e=o.ƀha.get(t);if(!e)throw new Error(`PhysicsEntity with p2BodyID ${t} not found`);return e}static getPhysicsInstanceOrFail(t){let e=o.ƀhh.get(t);if(!e)throw new Error(`PhysicsEntity with id ${t} not found`);return e}static getPhysicsEntities(){return Array.from(o.ƀhh.values())}get area(){return this.ƀt}get mass(){return this.ƀgc}get collisions(){return this.ƀax}constructor(t,e,i){super(),this.ƀgn=new Action,this.onCollision=this.ƀgn.notifier,this.type="dynamic",this.ƀt=0,this.ƀgc=0,this.ƀax=[],this.physicsWorldID=t,this.ƀhj=P.get(St);let r=this.ƀhj.getMaterial(this.physicsWorldID,e.shapeDefinition.materialName),s=this.ƀhj.getMaterialDefinition(this.physicsWorldID,e.shapeDefinition.materialName);if(this.type=i,this.physicsBodyGroup=e.shapeDefinition.group,this.includeInPathfinding=e.includeOnPathfinding,this.ƀhi=this.ƀhj.getGroupConstant(this.physicsWorldID,this.physicsBodyGroup),this.ƀhk=this.ƀhj.getMaskConstant(this.physicsWorldID,this.physicsBodyGroup),this.p2Body=this.ƀhj.createBody(this.physicsWorldID,e,r,s,this.type),this.ƀt=this.p2Body.getArea(),this.ƀgc=this.p2Body.mass,this.p2Body.position=f.vectorToArray(e.position),this.p2Body.angle=e.rotation.value,!this.ƀhj.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.ƀha.set(this.p2Body.id,this),o.ƀhh.set(this.id,this);}destroy(){this.destroyed||(super.destroy(),this.ƀhj.removeBody(this.physicsWorldID,this.p2Body),o.ƀha.delete(this.p2Body.id),o.ƀhh.delete(this.id));}canCollideWith(t){return f.arePhysicsGroupsCollidable(this.ƀhi,this.ƀhk,t.ƀhi,t.ƀhk)}ƀir(t){this.ƀax=t,t.length>0&&this.ƀgn.trigger(t);}};var Wt=class extends b{static{h(this,"ImmovablePhysicsEntity");}constructor(t,e){super(t,e,"static"),this.position=f.arrayToVector(this.p2Body.position),this.rotation=new Radian(this.p2Body.angle);}convertToDTO(){return {entityID:this.id,classID:this.classID,position:this.position,rotation:this.rotation,velocity:Vector.zero,rotationalSpeed:0}}};var Xe=class extends ${static{h(this,"MovableEntity");}constructor(){super(),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),y.beforeSceneUpdateAction.subscribe(({time:t,delta:e})=>{this.ƀjj(t,e);}).attach(this);}ƀjj(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 Ze=class extends b{static{h(this,"MovablePhysicsEntity");}constructor(t,e){super(t,e,"dynamic"),this.position=new Variable(Vector.zero),this.rotation=new Variable(Radian.get0),this.velocity=new Variable(Vector.zero),this.rotationalSpeed=new Variable(0),this.ƀey=false,this.ƀez=false,this.ƀfb=false,this.ƀfa=false,this.ƀhe(),this.ƀfw(),P.get(St).subscribeToPhysicsStep(t,({time:i,delta:r})=>this.ƀjj(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}}ƀjj(t,e){this.ƀey=true,this.ƀez=true,this.ƀfb=true,this.ƀfa=true,this.ƀhe();}ƀhe(){this.position.value=f.arrayToVector(this.p2Body.position),this.rotation.value=new Radian(this.p2Body.angle),this.velocity.value=f.arrayToVector(this.p2Body.velocity),this.rotationalSpeed.value=this.p2Body.angularVelocity;}ƀfw(){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 Ke=10.8,Qe=10.01,tt;(function(o){o[o.Point=1]="Point",o[o.Circle=2]="Circle",o[o.Polygon=3]="Polygon",o[o.Rectangle=4]="Rectangle";})(tt||(tt={}));var st="border";var Y=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 Y.lineer(t)}},Ir=class{static{h(this,"AnimationEaseIn");}start(){}multiplierFunction(t){return Y.easeIn(t)}},Ar=class{static{h(this,"AnimationEaseOut");}start(){}multiplierFunction(t){return Y.easeOut(t)}},Or=class{static{h(this,"AnimationEaseInOut");}start(){}multiplierFunction(t){return Y.easeInOut(t)}},Mr=class{static{h(this,"AnimationEaseInOutCubic");}start(){}multiplierFunction(t){return Y.easeInOutCubic(t)}},Ai=class{static{h(this,"AnimationFlicker");}start(){this.ƀjv=new Array(10).fill(0),Random.integerBetween(0,9),this.ƀjv[Random.integerBetween(0,9)]=Math.random(),Math.random()<.3&&(Random.integerBetween(0,9),this.ƀjv[Random.integerBetween(0,9)]=Math.random()),Math.random()<.2&&(Random.integerBetween(0,9),this.ƀjv[Random.integerBetween(0,9)]=Math.random());}multiplierFunction(t){let e=Math.floor(t*10);return this.ƀjv[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;}};var F;(function(o){o[o.ThrowError=1]="ThrowError",o[o.IgnoreNewAnimation=2]="IgnoreNewAnimation",o[o.CompletePrevious=3]="CompletePrevious";})(F||(F={}));var R;(function(o){o[o.ReturnToOriginal=1]="ReturnToOriginal",o[o.StayInCurrentState=2]="StayInCurrentState",o[o.JumpToEnd=3]="JumpToEnd",o[o.Loop=4]="Loop";})(R||(R={}));var A=class o{static{h(this,"Animator");}static{this.ƀj=new WeakMap;}static ƀdi(t){let e=o.ƀj.get(t);return e||(e=new MapToWeakRefs,o.ƀj.set(t,e)),e}get animating(){return this.ƀgw!==void 0}get target(){return this.ƀjm}get value(){return this.ƀke||(this.ƀke=new Variable(this.ƀjm)),this.ƀke.notifier}constructor(t,e,i){this.ƀfk=false,this.ƀiy=false,this.ƀjm=t,this.ƀgz={duration:200,animation:S.lineer,reAnimateHandling:F.ThrowError,completionHandling:R.StayInCurrentState,...i},this.ƀk=Comparator.isArray(e)?e:[e],this.ƀfx(t,this.ƀk);}animate(t,e){let i={...this.ƀgz,...e};if(this.ƀgw)switch(i.reAnimateHandling){case F.ThrowError:throw new Error("Animator: new animation triggered while another is not complete yet.");case F.IgnoreNewAnimation:return SingleEvent.instant();case F.CompletePrevious:this.ƀis(i.completionHandling,this.ƀgw.ƀht,true);break;default:{throw new Error(`Animator: unknown re-animate handling type: "${i.reAnimateHandling}"`)}}return SingleEvent.create(s=>{this.ƀfk&&(this.ƀiy=true);let n=this.ƀk.reduce((c,p)=>(c[p]={ƀjg:this.ƀjm[p],ƀjo:t[p]},c),{}),a={ƀcr:i.duration,ƀcs:0,ƀht:n,ƀbe:i.completionHandling,ƀl:i.animation,ƀbd:s};if(a.ƀbe!==R.Loop&&this.ƀfi(a)){this.ƀgw=void 0,s();return}else a.ƀl.start();let l=this.ƀgw;return this.ƀgw=a,this.ƀcu(),l?.ƀbd(),()=>{this.ƀgw===a&&(this.ƀjm instanceof Attachable&&this.ƀjm.destroyed||this.ƀis(a.ƀbe,a.ƀht,true),this.ƀgw=void 0,this.ƀkb?.destroy(),this.ƀkb=void 0);}})}set(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r]&&(e=true,this.ƀjm[r]=t[r]);}e&&this.ƀke?.set(this.ƀjm),this.ƀgw?.ƀbd();}completeAnimation(t){if(this.ƀgw){t=t??this.ƀgw.ƀbe,this.ƀis(t,this.ƀgw.ƀht,true);let e=this.ƀgw.ƀbd;this.ƀgw=void 0,e();}}ƀcu(){this.ƀkb||(this.ƀkb=y.beforeSceneUpdateAction.subscribe(t=>{this.ƀfk=true;try{let e=this.ƀgw;if(!e)return;e.ƀcs+=t.delta;let i=e.ƀcs>=e.ƀcr;if(i)if(e.ƀbe===R.Loop)e.ƀcs%=e.ƀcr,e.ƀl.start(),i=!1;else {this.ƀis(e.ƀbe,e.ƀht,!1),this.ƀgw=void 0,e.ƀbd(),this.ƀgw||(this.ƀkb?.destroy(),this.ƀkb=void 0);return}if(!i){let r=e.ƀl.multiplierFunction(e.ƀcs/e.ƀcr),s=!1;for(let n=0;n<this.ƀk.length;n++){let a=this.ƀk[n],l=e.ƀht[a],p=(l.ƀjo-l.ƀjg)*r+l.ƀjg;p!==this.ƀjm[a]&&(s=!0,this.ƀjm[a]=p);}s&&this.ƀke?.set(this.ƀjm);}}finally{this.ƀfk=false,this.ƀiy&&(this.ƀiy=false,this.ƀkb?.destroy(),this.ƀkb=void 0,this.ƀcu());}}).attachToRoot());}ƀfi(t){for(let e=0;e<this.ƀk.length;e++){let i=this.ƀk[e];if(this.ƀjm[i]!==t.ƀht[i].ƀjo)return false}return true}ƀis(t,e,i){switch(t){case R.ReturnToOriginal:this.ƀie(e);break;case R.StayInCurrentState:i||this.ƀfn(e);break;case R.JumpToEnd:this.ƀfn(e);break;case R.Loop:this.ƀie(e);break;default:{throw new Error(`Animator: unknown completion handling type: "${t}"`)}}}ƀie(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjg&&(e=true,this.ƀjm[r]=t[r].ƀjg);}e&&this.ƀke?.set(this.ƀjm);}ƀfn(t){let e=false;for(let i=0;i<this.ƀk.length;i++){let r=this.ƀk[i];this.ƀjm[r]!==t[r].ƀjo&&(e=true,this.ƀjm[r]=t[r].ƀjo);}e&&this.ƀke?.set(this.ƀjm);}ƀfx(t,e){let i=o.ƀ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 $t;(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";})($t||($t={}));var qe;(function(o){o.Default="default",o.Pointer="pointer";})(qe||(qe={}));var ue=class extends IDAttachable{static{h(this,"ContainerAttributes");}constructor(){super(),this.ƀgg=false,this.ƀdb=false,this.ƀif=1,this.ƀv=1,this.pixiContainer=new V.Container;}get size(){return this.getSize()}set size(t){this.setSize(t);}getSize(){return new Vector(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(this.pixiContainer.scale.x,this.pixiContainer.scale.y),s=new Vector(i.x,i.y).multiply(r),n=new Vector(i.width,i.height).multiply(r),a=s.add(n.multiply(e.holdFrom));t=t.subtract(a);}return e?.round!==false&&(t=t.round({rollHalfsDown:true})),this.position=t,this}get position(){return new Vector(this.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 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!")}setMask(t){return t?(this.pixiContainer.addChild(t.pixiContainer),this.pixiContainer.mask=t.getMask(),this.ƀga=t):(this.ƀga&&this.pixiContainer.removeChild(this.ƀga.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}setMirror(t=false){return this.mirror=t,this}get mirror(){return this.ƀgg}set mirror(t){this.ƀgg=t,this.ƀkd();}setFlip(t=false){return this.flip=t,this}get flip(){return this.ƀdb}set flip(t){this.ƀdb=t,this.ƀkd();}setScale(t){return this.scale=t,this}get scale(){return this.ƀif}set scale(t){this.ƀif=t,this.ƀkd();}setAspectRatio(t){return this.aspectRatio=t,this}get aspectRatio(){return this.ƀv}set aspectRatio(t){this.ƀv=t,this.ƀkd();}ƀkd(){this.pixiContainer.scale.set(this.ƀif,this.ƀif),this.ƀv<1?this.pixiContainer.scale.x*=this.ƀv:this.ƀv>1&&(this.pixiContainer.scale.y/=this.ƀv),this.ƀgg&&(this.pixiContainer.scale.x*=-1),this.ƀdb&&(this.pixiContainer.scale.y*=-1);}};var O=2,Tt;(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";})(Tt||(Tt={}));var fe=class{static{h(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}),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=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.ƀ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 Di=class ti extends V.Filter{static{h(this,"BlurFilterPass");}static ƀeg(){return `
2
2
  attribute vec2 aVertexPosition;
3
3
  attribute vec2 aTextureCoord;
4
4
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bard-legends-framework",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "Bard Legends Framework",
5
5
  "main": "dist/index.js",
6
6
  "publishConfig": {