From db79f91aa3039bc8a31f3d922c4a676576a3b1d5 Mon Sep 17 00:00:00 2001 From: Nassim Date: Sat, 9 Mar 2024 22:10:01 -0500 Subject: [PATCH] pushing dist to repo --- .gitignore | 1 - dist/assets/index-Dp2PfoCH.js | 1 + dist/index.html | 92 ++++++++ dist/map.json | 388 ++++++++++++++++++++++++++++++++++ dist/map.png | Bin 0 -> 4840 bytes dist/monogram.ttf | Bin 0 -> 10468 bytes dist/spritesheet.png | Bin 0 -> 44388 bytes 7 files changed, 481 insertions(+), 1 deletion(-) create mode 100644 dist/assets/index-Dp2PfoCH.js create mode 100644 dist/index.html create mode 100644 dist/map.json create mode 100644 dist/map.png create mode 100644 dist/monogram.ttf create mode 100644 dist/spritesheet.png diff --git a/.gitignore b/.gitignore index a547bf3..251ce6d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ pnpm-debug.log* lerna-debug.log* node_modules -dist dist-ssr *.local diff --git a/dist/assets/index-Dp2PfoCH.js b/dist/assets/index-Dp2PfoCH.js new file mode 100644 index 0000000..140ddc6 --- /dev/null +++ b/dist/assets/index-Dp2PfoCH.js @@ -0,0 +1 @@ +var e,t,r,i,n,s,o,a,h,l,u,d,c,f,p,g,m,w,A,v,y,V,x,E,b,S=Object.defineProperty,R=(e,t,r)=>(((e,t,r)=>{t in e?S(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r})(e,"symbol"!=typeof t?t+"":t,r),r);!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver((e=>{for(const r of e)if("childList"===r.type)for(const e of r.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)})).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();const M={pc:'This is my PC. I work mostly in JavaScript/TypeScript these days.\n I\'ve made a couple of games in that language. I also like Golang and Python. Anyway regardless of the language, I just like programming.\n Here is my Github!',"cs-degree":"This is my CS degree. I hanged it on the wall because I'm proud of it. It was a very theoretical degree but I think it gave me a good foundation.","sofa-table":'That\'s my sofa. I like to relax here and watch YouTube. \n I also make game programming tutorials on YouTube. Go sub to my channel! (If you like the content)\n You\'ll learn how I built this portfolio you\'re currently playing through!',tv:'That\'s my TV. I\'ve been watching tech youtubers a lot recently like :\n Theprimeagen, Theo - t3.gg,\n PirateSoftware (sometimes) and Melkey!',bed:"This where I sleep. Great ideas comes when I'm lying on my bed. When an idea strikes, I often have to write it down or else I won't be able to sleep because my mental energy is consumed by it.",resume:'This is my desk and on it is my resume. Check it out?\n Contact me at jslegend@protonmail.com if you have any interesting job opportunities!',projects:'Info about this portfolio : It\'s made with the Kaboom.js library which is a library for making games in JavaScript.\n Text is rendered with HTML/CSS. So the textbox you\'re currently reading is not rendered within canvas. Learn more about how to use\n Kaboom.js by watching some of my tutorials here.',library:"There are a lot of programming books on my shelves. There is even one in french (I also speak french btw).\n I probably only read one of them. Who else compulsively buys technical books without ever finishing them?",exit:"If you want to exit JSLegendDev's portfolio, just close the tab."};var T=Object.defineProperty,P=(e,t)=>T(e,"name",{value:t,configurable:!0}),B=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:4*t-205]=t;return t=>{for(var r=t.length,i=new Uint8Array(3*(r-("="==t[r-1])-("="==t[r-2]))/4|0),n=0,s=0;n>4,i[s++]=a<<4|h>>2,i[s++]=h<<6|l}return i}})();function I(e){return e*Math.PI/180}function k(e){return 180*e/Math.PI}function F(e,t,r){return t>r?F(e,r,t):Math.min(Math.max(e,t),r)}function D(e,t,r){if("number"==typeof e&&"number"==typeof t)return e+(t-e)*r;if(e instanceof N&&t instanceof N)return e.lerp(t,r);if(e instanceof O&&t instanceof O)return e.lerp(t,r);throw new Error(`Bad value for lerp(): ${e}, ${t}. Only number, Vec2 and Color is supported.`)}function C(e,t,r,i,n){return i+(e-t)/(r-t)*(n-i)}function U(e,t,r,i,n){return F(C(e,t,r,i,n),i,n)}P(I,"deg2rad"),P(k,"rad2deg"),P(F,"clamp"),P(D,"lerp"),P(C,"map"),P(U,"mapc");var N=(P(e=class{constructor(e=0,t=e){R(this,"x",0),R(this,"y",0),this.x=e,this.y=t}static fromAngle(t){let r=I(t);return new e(Math.cos(r),Math.sin(r))}clone(){return new e(this.x,this.y)}add(...t){let r=L(...t);return new e(this.x+r.x,this.y+r.y)}sub(...t){let r=L(...t);return new e(this.x-r.x,this.y-r.y)}scale(...t){let r=L(...t);return new e(this.x*r.x,this.y*r.y)}dist(...e){let t=L(...e);return this.sub(t).len()}sdist(...e){let t=L(...e);return this.sub(t).slen()}len(){return Math.sqrt(this.dot(this))}slen(){return this.dot(this)}unit(){let t=this.len();return 0===t?new e(0):this.scale(1/t)}normal(){return new e(this.y,-this.x)}reflect(e){return this.sub(e.scale(2*this.dot(e)))}project(e){return e.scale(e.dot(this)/e.len())}reject(e){return this.sub(this.project(e))}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}angle(...e){let t=L(...e);return k(Math.atan2(this.y-t.y,this.x-t.x))}angleBetween(...e){let t=L(...e);return k(Math.atan2(this.cross(t),this.dot(t)))}lerp(t,r){return new e(D(this.x,t.x,r),D(this.y,t.y,r))}slerp(e,t){let r=this.dot(e),i=this.cross(e),n=Math.atan2(i,r);return this.scale(Math.sin((1-t)*n)).add(e.scale(Math.sin(t*n))).scale(1/i)}isZero(){return 0===this.x&&0===this.y}toFixed(t){return new e(Number(this.x.toFixed(t)),Number(this.y.toFixed(t)))}transform(e){return e.multVec2(this)}eq(e){return this.x===e.x&&this.y===e.y}bbox(){return new de(this,0,0)}toString(){return`vec2(${this.x.toFixed(2)}, ${this.y.toFixed(2)})`}},"Vec2"),R(e,"LEFT",new e(-1,0)),R(e,"RIGHT",new e(1,0)),R(e,"UP",new e(0,-1)),R(e,"DOWN",new e(0,1)),e);function L(...e){if(1===e.length){if(e[0]instanceof N)return new N(e[0].x,e[0].y);if(Array.isArray(e[0])&&2===e[0].length)return new N(...e[0])}return new N(...e)}P(L,"vec2");var O=(t=class{constructor(e,t,r){R(this,"r",255),R(this,"g",255),R(this,"b",255),this.r=F(e,0,255),this.g=F(t,0,255),this.b=F(r,0,255)}static fromArray(e){return new t(e[0],e[1],e[2])}static fromHex(e){if("number"==typeof e)return new t(e>>16&255,e>>8&255,e>>0&255);if("string"==typeof e){let r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return new t(parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16))}throw new Error("Invalid hex color format")}static fromHSL(e,r,i){if(0==r)return new t(255*i,255*i,255*i);let n=P(((e,t,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e)),"hue2rgb"),s=i<.5?i*(1+r):i+r-i*r,o=2*i-s,a=n(o,s,e+1/3),h=n(o,s,e),l=n(o,s,e-1/3);return new t(Math.round(255*a),Math.round(255*h),Math.round(255*l))}clone(){return new t(this.r,this.g,this.b)}lighten(e){return new t(this.r+e,this.g+e,this.b+e)}darken(e){return this.lighten(-e)}invert(){return new t(255-this.r,255-this.g,255-this.b)}mult(e){return new t(this.r*e.r/255,this.g*e.g/255,this.b*e.b/255)}lerp(e,r){return new t(D(this.r,e.r,r),D(this.g,e.g,r),D(this.b,e.b,r))}toHSL(){let e=this.r/255,t=this.g/255,r=this.b/255,i=Math.max(e,t,r),n=Math.min(e,t,r),s=(i+n)/2,o=s,a=s;if(i==n)s=o=0;else{let h=i-n;switch(o=a>.5?h/(2-i-n):h/(i+n),i){case e:s=(t-r)/h+(tO.fromHSL(e,t,r)),"hsl2rgb"),H=(P(r=class{constructor(e,t,r,i){R(this,"x",0),R(this,"y",0),R(this,"w",1),R(this,"h",1),this.x=e,this.y=t,this.w=r,this.h=i}scale(e){return new r(this.x+this.w*e.x,this.y+this.h*e.y,this.w*e.w,this.h*e.h)}pos(){return new N(this.x,this.y)}clone(){return new r(this.x,this.y,this.w,this.h)}eq(e){return this.x===e.x&&this.y===e.y&&this.w===e.w&&this.h===e.h}toString(){return`quad(${this.x}, ${this.y}, ${this.w}, ${this.h})`}},"Quad"),r);function K(e,t,r,i){return new H(e,t,r,i)}P(K,"quad");var Y=(P(i=class{constructor(e){R(this,"m",[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),e&&(this.m=e)}static translate(e){return new i([1,0,0,0,0,1,0,0,0,0,1,0,e.x,e.y,0,1])}static scale(e){return new i([e.x,0,0,0,0,e.y,0,0,0,0,1,0,0,0,0,1])}static rotateX(e){e=I(-e);let t=Math.cos(e),r=Math.sin(e);return new i([1,0,0,0,0,t,-r,0,0,r,t,0,0,0,0,1])}static rotateY(e){e=I(-e);let t=Math.cos(e),r=Math.sin(e);return new i([t,0,r,0,0,1,0,0,-r,0,t,0,0,0,0,1])}static rotateZ(e){e=I(-e);let t=Math.cos(e),r=Math.sin(e);return new i([t,-r,0,0,r,t,0,0,0,0,1,0,0,0,0,1])}translate(e){return this.m[12]+=this.m[0]*e.x+this.m[4]*e.y,this.m[13]+=this.m[1]*e.x+this.m[5]*e.y,this.m[14]+=this.m[2]*e.x+this.m[6]*e.y,this.m[15]+=this.m[3]*e.x+this.m[7]*e.y,this}scale(e){return this.m[0]*=e.x,this.m[4]*=e.y,this.m[1]*=e.x,this.m[5]*=e.y,this.m[2]*=e.x,this.m[6]*=e.y,this.m[3]*=e.x,this.m[7]*=e.y,this}rotate(e){e=I(-e);let t=Math.cos(e),r=Math.sin(e),i=this.m[0],n=this.m[1],s=this.m[4],o=this.m[5];return this.m[0]=i*t+n*r,this.m[1]=-i*r+n*t,this.m[4]=s*t+o*r,this.m[5]=-s*r+o*t,this}mult(e){let t=[];for(let r=0;r<4;r++)for(let i=0;i<4;i++)t[4*r+i]=this.m[0+i]*e.m[4*r+0]+this.m[4+i]*e.m[4*r+1]+this.m[8+i]*e.m[4*r+2]+this.m[12+i]*e.m[4*r+3];return new i(t)}multVec2(e){return new N(e.x*this.m[0]+e.y*this.m[4]+this.m[12],e.x*this.m[1]+e.y*this.m[5]+this.m[13])}getTranslation(){return new N(this.m[12],this.m[13])}getScale(){if(0!=this.m[0]||0!=this.m[1]){let e=this.m[0]*this.m[5]-this.m[1]*this.m[4],t=Math.sqrt(this.m[0]*this.m[0]+this.m[1]*this.m[1]);return new N(t,e/t)}if(0!=this.m[4]||0!=this.m[5]){let e=this.m[0]*this.m[5]-this.m[1]*this.m[4],t=Math.sqrt(this.m[4]*this.m[4]+this.m[5]*this.m[5]);return new N(e/t,t)}return new N(0,0)}getRotation(){if(0!=this.m[0]||0!=this.m[1]){let e=Math.sqrt(this.m[0]*this.m[0]+this.m[1]*this.m[1]);return k(this.m[1]>0?Math.acos(this.m[0]/e):-Math.acos(this.m[0]/e))}if(0!=this.m[4]||0!=this.m[5]){let e=Math.sqrt(this.m[4]*this.m[4]+this.m[5]*this.m[5]);return k(Math.PI/2-(this.m[5]>0?Math.acos(-this.m[4]/e):-Math.acos(this.m[4]/e)))}return 0}getSkew(){if(0!=this.m[0]||0!=this.m[1]){let e=Math.sqrt(this.m[0]*this.m[0]+this.m[1]*this.m[1]);return new N(Math.atan(this.m[0]*this.m[4]+this.m[1]*this.m[5])/(e*e),0)}if(0!=this.m[4]||0!=this.m[5]){let e=Math.sqrt(this.m[4]*this.m[4]+this.m[5]*this.m[5]);return new N(0,Math.atan(this.m[0]*this.m[4]+this.m[1]*this.m[5])/(e*e))}return new N(0,0)}invert(){let e=[],t=this.m[10]*this.m[15]-this.m[14]*this.m[11],r=this.m[9]*this.m[15]-this.m[13]*this.m[11],n=this.m[9]*this.m[14]-this.m[13]*this.m[10],s=this.m[8]*this.m[15]-this.m[12]*this.m[11],o=this.m[8]*this.m[14]-this.m[12]*this.m[10],a=this.m[8]*this.m[13]-this.m[12]*this.m[9],h=this.m[6]*this.m[15]-this.m[14]*this.m[7],l=this.m[5]*this.m[15]-this.m[13]*this.m[7],u=this.m[5]*this.m[14]-this.m[13]*this.m[6],d=this.m[4]*this.m[15]-this.m[12]*this.m[7],c=this.m[4]*this.m[14]-this.m[12]*this.m[6],f=this.m[5]*this.m[15]-this.m[13]*this.m[7],p=this.m[4]*this.m[13]-this.m[12]*this.m[5],g=this.m[6]*this.m[11]-this.m[10]*this.m[7],m=this.m[5]*this.m[11]-this.m[9]*this.m[7],w=this.m[5]*this.m[10]-this.m[9]*this.m[6],A=this.m[4]*this.m[11]-this.m[8]*this.m[7],v=this.m[4]*this.m[10]-this.m[8]*this.m[6],y=this.m[4]*this.m[9]-this.m[8]*this.m[5];e[0]=this.m[5]*t-this.m[6]*r+this.m[7]*n,e[4]=-(this.m[4]*t-this.m[6]*s+this.m[7]*o),e[8]=this.m[4]*r-this.m[5]*s+this.m[7]*a,e[12]=-(this.m[4]*n-this.m[5]*o+this.m[6]*a),e[1]=-(this.m[1]*t-this.m[2]*r+this.m[3]*n),e[5]=this.m[0]*t-this.m[2]*s+this.m[3]*o,e[9]=-(this.m[0]*r-this.m[1]*s+this.m[3]*a),e[13]=this.m[0]*n-this.m[1]*o+this.m[2]*a,e[2]=this.m[1]*h-this.m[2]*l+this.m[3]*u,e[6]=-(this.m[0]*h-this.m[2]*d+this.m[3]*c),e[10]=this.m[0]*f-this.m[1]*d+this.m[3]*p,e[14]=-(this.m[0]*u-this.m[1]*c+this.m[2]*p),e[3]=-(this.m[1]*g-this.m[2]*m+this.m[3]*w),e[7]=this.m[0]*g-this.m[2]*A+this.m[3]*v,e[11]=-(this.m[0]*m-this.m[1]*A+this.m[3]*y),e[15]=this.m[0]*w-this.m[1]*v+this.m[2]*y;let V=this.m[0]*e[0]+this.m[1]*e[4]+this.m[2]*e[8]+this.m[3]*e[12];for(let i=0;i<4;i++)for(let t=0;t<4;t++)e[4*i+t]*=1/V;return new i(e)}clone(){return new i([...this.m])}toString(){return this.m.toString()}},"Mat4"),i);function j(e,t,r,i=(e=>-Math.cos(e))){return e+(i(r)+1)/2*(t-e)}P(j,"wave");var Q=2147483648,z=(P(n=class{constructor(e){R(this,"seed"),this.seed=e}gen(){return this.seed=(1103515245*this.seed+12345)%Q,this.seed/Q}genNumber(e,t){return e+this.gen()*(t-e)}genVec2(e,t){return new N(this.genNumber(e.x,t.x),this.genNumber(e.y,t.y))}genColor(e,t){return new O(this.genNumber(e.r,t.r),this.genNumber(e.g,t.g),this.genNumber(e.b,t.b))}genAny(...e){if(0===e.length)return this.gen();if(1===e.length){if("number"==typeof e[0])return this.genNumber(0,e[0]);if(e[0]instanceof N)return this.genVec2(L(0,0),e[0]);if(e[0]instanceof O)return this.genColor(G(0,0,0),e[0])}else if(2===e.length){if("number"==typeof e[0]&&"number"==typeof e[1])return this.genNumber(e[0],e[1]);if(e[0]instanceof N&&e[1]instanceof N)return this.genVec2(e[0],e[1]);if(e[0]instanceof O&&e[1]instanceof O)return this.genColor(e[0],e[1])}}},"RNG"),n),J=new z(Date.now());function X(e){return null!=e&&(J.seed=e),J.seed}function W(...e){return J.genAny(...e)}function Z(...e){return Math.floor(W(...e))}function _(e){return W()<=e}function $(e){return e[Z(e.length)]}function ee(e,t){return e.pos.x+e.width>t.pos.x&&e.pos.xt.pos.y&&e.pos.y1||n<0||n>1?null:i}function re(e,t){let r=te(e,t);return r?L(e.p1.x+r*(e.p2.x-e.p1.x),e.p1.y+r*(e.p2.y-e.p1.y)):null}function ie(e,t){if(ne(e,t.p1)||ne(e,t.p2))return!0;let r=e.points();return!!(re(t,new ue(r[0],r[1]))||re(t,new ue(r[1],r[2]))||re(t,new ue(r[2],r[3]))||re(t,new ue(r[3],r[0])))}function ne(e,t){return t.x>e.pos.x&&t.xe.pos.y&&t.yNumber.EPSILON)return!1;let n=r.dot(i)/i.dot(i);return n>=0&&n<=1}function oe(e,t){let r=e.p2.sub(e.p1),i=r.dot(r),n=e.p1.sub(t.center),s=2*r.dot(n),o=s*s-4*i*(n.dot(n)-t.radius*t.radius);if(i<=Number.EPSILON||o<0)return!1;if(0==o){let e=-s/(2*i);if(e>=0&&e<=1)return!0}else{let e=(-s+Math.sqrt(o))/(2*i),t=(-s-Math.sqrt(o))/(2*i);if(e>=0&&e<=1||t>=0&&t<=1)return!0}return ae(t,e.p1)}function ae(e,t){return e.center.sdist(t)t.y!=i[s].y>t.y&&t.x<(i[s].x-i[n].x)*(t.y-i[n].y)/(i[s].y-i[n].y)+i[n].x&&(r=!r);return r}P(X,"randSeed"),P(W,"rand"),P(Z,"randi"),P(_,"chance"),P($,"choose"),P(ee,"testRectRect"),P(te,"testLineLineT"),P(re,"testLineLine"),P(ie,"testRectLine"),P(ne,"testRectPoint"),P(se,"testLinePoint"),P(oe,"testLineCircle"),P(ae,"testCirclePoint"),P(he,"testCirclePolygon"),P(le,"testPolygonPoint");var ue=(P(s=class{constructor(e,t){R(this,"p1"),R(this,"p2"),this.p1=e.clone(),this.p2=t.clone()}transform(e){return new s(e.multVec2(this.p1),e.multVec2(this.p2))}bbox(){return de.fromPoints(this.p1,this.p2)}area(){return this.p1.dist(this.p2)}clone(){return new s(this.p1,this.p2)}},"Line"),s),de=(P(o=class{constructor(e,t,r){R(this,"pos"),R(this,"width"),R(this,"height"),this.pos=e.clone(),this.width=t,this.height=r}static fromPoints(e,t){return new o(e.clone(),t.x-e.x,t.y-e.y)}center(){return new N(this.pos.x+this.width/2,this.pos.y+this.height/2)}points(){return[this.pos,this.pos.add(this.width,0),this.pos.add(this.width,this.height),this.pos.add(0,this.height)]}transform(e){return new pe(this.points().map((t=>e.multVec2(t))))}bbox(){return this.clone()}area(){return this.width*this.height}clone(){return new o(this.pos.clone(),this.width,this.height)}distToPoint(e){return Math.sqrt(this.sdistToPoint(e))}sdistToPoint(e){let t=this.pos,r=this.pos.add(this.width,this.height),i=Math.max(t.x-e.x,0,e.x-r.x),n=Math.max(t.y-e.y,0,e.y-r.y);return i*i+n*n}},"Rect"),o),ce=(P(a=class{constructor(e,t){R(this,"center"),R(this,"radius"),this.center=e.clone(),this.radius=t}transform(e){return new fe(this.center,this.radius,this.radius).transform(e)}bbox(){return de.fromPoints(this.center.sub(L(this.radius)),this.center.add(L(this.radius)))}area(){return this.radius*this.radius*Math.PI}clone(){return new a(this.center,this.radius)}},"Circle"),a),fe=(P(h=class{constructor(e,t,r){R(this,"center"),R(this,"radiusX"),R(this,"radiusY"),this.center=e.clone(),this.radiusX=t,this.radiusY=r}transform(e){return new h(e.multVec2(this.center),e.m[0]*this.radiusX,e.m[5]*this.radiusY)}bbox(){return de.fromPoints(this.center.sub(L(this.radiusX,this.radiusY)),this.center.add(L(this.radiusX,this.radiusY)))}area(){return this.radiusX*this.radiusY*Math.PI}clone(){return new h(this.center,this.radiusX,this.radiusY)}},"Ellipse"),h),pe=(P(l=class{constructor(e){if(R(this,"pts"),e.length<3)throw new Error("Polygons should have at least 3 vertices");this.pts=e}transform(e){return new l(this.pts.map((t=>e.multVec2(t))))}bbox(){let e=L(Number.MAX_VALUE),t=L(-Number.MAX_VALUE);for(let r of this.pts)e.x=Math.min(e.x,r.x),t.x=Math.max(t.x,r.x),e.y=Math.min(e.y,r.y),t.y=Math.max(t.y,r.y);return de.fromPoints(e,t)}area(){let e=0,t=this.pts.length;for(let r=0;re.clone())))}},"Polygon"),l);function ge(e,t){let r=Number.MAX_VALUE,i=L(0);for(let n of[e,t])for(let s=0;sthis.delete(t)}},P(u,"Registry"),u),we=(P(d=class{constructor(e){R(this,"paused",!1),R(this,"cancel"),this.cancel=e}static join(e){let t=new d((()=>e.forEach((e=>e.cancel()))));return Object.defineProperty(t,"paused",{get:()=>e[0].paused,set:t=>e.forEach((e=>e.paused=t))}),t.paused=!1,t}},"EventController"),d),Ae=(P(c=class{constructor(){R(this,"handlers",new me)}add(e){let t=this.handlers.pushd(((...t)=>{r.paused||e(...t)})),r=new we(t);return r}addOnce(e){let t=this.add(((...r)=>{t.cancel(),e(...r)}));return t}next(){return new Promise((e=>this.addOnce(e)))}trigger(...e){this.handlers.forEach((t=>t(...e)))}numListeners(){return this.handlers.size}clear(){this.handlers.clear()}},"Event"),c),ve=(P(f=class{constructor(){R(this,"handlers",{})}on(e,t){return this.handlers[e]||(this.handlers[e]=new Ae),this.handlers[e].add(t)}onOnce(e,t){let r=this.on(e,((...e)=>{r.cancel(),t(...e)}));return r}next(e){return new Promise((t=>{this.onOnce(e,((...e)=>t(e[0])))}))}trigger(e,...t){this.handlers[e]&&this.handlers[e].trigger(...t)}remove(e){delete this.handlers[e]}clear(){this.handlers={}}numListeners(e){var t;return(null==(t=this.handlers[e])?void 0:t.numListeners())??0}},"EventHandler"),f);function ye(e,t){if(e===t)return!0;let r=typeof e,i=typeof t;if(r!==i)return!1;if("object"===r&&"object"===i&&null!==e&&null!==t){if(Array.isArray(e)!==Array.isArray(t))return!1;let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let n of r){if(!ye(e[n],t[n]))return!1}return!0}return!1}function Ve(e){let t=window.atob(e),r=t.length,i=new Uint8Array(r);for(let n=0;ne.match(/^data:\w+\/\w+;base64,.+/)),"isDataURL"),Te=P((e=>e.split(".").slice(0,-1).join(".")),"getFileName");function Pe(e,t){return(...r)=>{let i=r.length;return i===e.length?e(...r):i===t.length?t(...r):void 0}}P(Pe,"overload2");var Be=(()=>{let e=0;return()=>e++})(),Ie=P((e=>e instanceof Error?e.message:String(e)),"getErrorMessage"),ke=(P(p=class{constructor(e=((e,t)=>e0;){let t=Math.floor((e-1)/2);if(!this._compareFn(this._items[e],this._items[t])&&this._items[e]>=this._items[t])break;this.swap(e,t),e=t}}moveDown(e){for(;e=t&&e<=r}P(De,"runes"),P(Ce,"nextUnits"),P(Ue,"isFirstOfSurrogatePair"),P(Ne,"isRegionalIndicator"),P(Le,"isSubdivisionFlag"),P(Oe,"isFitzpatrickModifier"),P(Ge,"isVariationSelector"),P(qe,"isDiacriticalMark"),P(He,"isSupplementarySpecialpurposePlane"),P(Ke,"isGrapheme"),P(Ye,"isZeroWidthJoiner"),P(je,"codePointFromSurrogatePair"),P(Qe,"betweenInclusive");var ze={"Joy-Con L+R (STANDARD GAMEPAD Vendor: 057e Product: 200e)":{buttons:{0:"south",1:"east",2:"west",3:"north",4:"lshoulder",5:"rshoulder",6:"ltrigger",7:"rtrigger",8:"select",9:"start",10:"lstick",11:"rstick",12:"dpad-up",13:"dpad-down",14:"dpad-left",15:"dpad-right",16:"home",17:"capture"},sticks:{left:{x:0,y:1},right:{x:2,y:3}}},"Joy-Con (L) (STANDARD GAMEPAD Vendor: 057e Product: 2006)":{buttons:{0:"south",1:"east",2:"west",3:"north",4:"lshoulder",5:"rshoulder",9:"select",10:"lstick",16:"start"},sticks:{left:{x:0,y:1}}},"Joy-Con (R) (STANDARD GAMEPAD Vendor: 057e Product: 2007)":{buttons:{0:"south",1:"east",2:"west",3:"north",4:"lshoulder",5:"rshoulder",9:"start",10:"lstick",16:"select"},sticks:{left:{x:0,y:1}}},"Pro Controller (STANDARD GAMEPAD Vendor: 057e Product: 2009)":{buttons:{0:"south",1:"east",2:"west",3:"north",4:"lshoulder",5:"rshoulder",6:"ltrigger",7:"rtrigger",8:"select",9:"start",10:"lstick",11:"rstick",12:"dpad-up",13:"dpad-down",14:"dpad-left",15:"dpad-right",16:"home",17:"capture"},sticks:{left:{x:0,y:1},right:{x:2,y:3}}},default:{buttons:{0:"south",1:"east",2:"west",3:"north",4:"lshoulder",5:"rshoulder",6:"ltrigger",7:"rtrigger",8:"select",9:"start",10:"lstick",11:"rstick",12:"dpad-up",13:"dpad-down",14:"dpad-left",15:"dpad-right",16:"home"},sticks:{left:{x:0,y:1},right:{x:2,y:3}}}},Je=(P(g=class{constructor(){R(this,"pressed",new Set([])),R(this,"pressedRepeat",new Set([])),R(this,"released",new Set([])),R(this,"down",new Set([]))}update(){this.pressed.clear(),this.released.clear(),this.pressedRepeat.clear()}press(e){this.pressed.add(e),this.pressedRepeat.add(e),this.down.add(e)}pressRepeat(e){this.pressedRepeat.add(e)}release(e){this.down.delete(e),this.pressed.delete(e),this.released.add(e)}},"ButtonState"),g),Xe=(P(m=class{constructor(){R(this,"buttonState",new Je),R(this,"stickState",new Map)}},"GamepadState"),m),We=(P(w=class{constructor(){R(this,"dts",[]),R(this,"timer",0),R(this,"fps",0)}tick(e){this.dts.push(e),this.timer+=e,this.timer>=1&&(this.timer=0,this.fps=Math.round(1/(this.dts.reduce(((e,t)=>e+t))/this.dts.length)),this.dts=[])}},"FPSCounter"),w),Ze=P((e=>{if(!e.canvas)throw new Error("Please provide a canvas");let t={canvas:e.canvas,loopID:null,stopped:!1,dt:0,time:0,realTime:0,fpsCounter:new We,timeScale:1,skipTime:!1,numFrames:0,mousePos:new N(0),mouseDeltaPos:new N(0),keyState:new Je,mouseState:new Je,mergedGamepadState:new Xe,gamepadStates:new Map,gamepads:[],charInputted:[],isMouseMoved:!1,lastWidth:e.canvas.offsetWidth,lastHeight:e.canvas.offsetHeight,events:new ve};function r(){return t.dt*t.timeScale}function i(){return t.time}function n(){return t.fpsCounter.fps}function s(){return t.numFrames}function o(){return t.canvas.toDataURL()}function a(e){t.canvas.style.cursor=e}function h(){return t.canvas.style.cursor}function l(e){if(e)try{let e=t.canvas.requestPointerLock();e.catch&&e.catch((e=>console.error(e)))}catch(r){console.error(r)}else document.exitPointerLock()}function u(){return!!document.pointerLockElement}function d(e){e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()}function c(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullScreen&&document.webkitExitFullScreen()}function f(){return document.fullscreenElement||document.webkitFullscreenElement}function p(e=!0){e?d(t.canvas):c()}function g(){return!!f()}function m(){t.stopped=!0;for(let e in de)t.canvas.removeEventListener(e,de[e]);for(let e in ce)document.removeEventListener(e,ce[e]);for(let e in fe)window.removeEventListener(e,fe[e]);Ae.disconnect()}function w(i){null!==t.loopID&&cancelAnimationFrame(t.loopID);let n=0,s=P((o=>{if(t.stopped)return;if("visible"!==document.visibilityState)return void(t.loopID=requestAnimationFrame(s));let a=o/1e3,h=a-t.realTime,l=e.maxFPS?1/e.maxFPS:0;t.realTime=a,n+=h,n>l&&(t.skipTime||(t.dt=n,t.time+=r(),t.fpsCounter.tick(t.dt)),n=0,t.skipTime=!1,t.numFrames++,oe(),i(),ae()),t.loopID=requestAnimationFrame(s)}),"frame");s(0)}function A(){return"ontouchstart"in window||navigator.maxTouchPoints>0}function v(){return t.mousePos.clone()}function y(){return t.mouseDeltaPos.clone()}function V(e="left"){return t.mouseState.pressed.has(e)}function x(e="left"){return t.mouseState.down.has(e)}function E(e="left"){return t.mouseState.released.has(e)}function b(){return t.isMouseMoved}function S(e){return void 0===e?t.keyState.pressed.size>0:t.keyState.pressed.has(e)}function R(e){return void 0===e?t.keyState.pressedRepeat.size>0:t.keyState.pressedRepeat.has(e)}function M(e){return void 0===e?t.keyState.down.size>0:t.keyState.down.has(e)}function T(e){return void 0===e?t.keyState.released.size>0:t.keyState.released.has(e)}function B(e){return void 0===e?t.mergedGamepadState.buttonState.pressed.size>0:t.mergedGamepadState.buttonState.pressed.has(e)}function I(e){return void 0===e?t.mergedGamepadState.buttonState.down.size>0:t.mergedGamepadState.buttonState.down.has(e)}function k(e){return void 0===e?t.mergedGamepadState.buttonState.released.size>0:t.mergedGamepadState.buttonState.released.has(e)}function F(e){return t.events.on("resize",e)}P(r,"dt"),P(i,"time"),P(n,"fps"),P(s,"numFrames"),P(o,"screenshot"),P(a,"setCursor"),P(h,"getCursor"),P(l,"setCursorLocked"),P(u,"isCursorLocked"),P(d,"enterFullscreen"),P(c,"exitFullscreen"),P(f,"getFullscreenElement"),P(p,"setFullscreen"),P(g,"isFullscreen"),P(m,"quit"),P(w,"run"),P(A,"isTouchscreen"),P(v,"mousePos"),P(y,"mouseDeltaPos"),P(V,"isMousePressed"),P(x,"isMouseDown"),P(E,"isMouseReleased"),P(b,"isMouseMoved"),P(S,"isKeyPressed"),P(R,"isKeyPressedRepeat"),P(M,"isKeyDown"),P(T,"isKeyReleased"),P(B,"isGamepadButtonPressed"),P(I,"isGamepadButtonDown"),P(k,"isGamepadButtonReleased"),P(F,"onResize");let D=Pe((e=>t.events.on("keyDown",e)),((e,r)=>t.events.on("keyDown",(t=>t===e&&r(e))))),U=Pe((e=>t.events.on("keyPress",e)),((e,r)=>t.events.on("keyPress",(t=>t===e&&r(e))))),L=Pe((e=>t.events.on("keyPressRepeat",e)),((e,r)=>t.events.on("keyPressRepeat",(t=>t===e&&r(e))))),O=Pe((e=>t.events.on("keyRelease",e)),((e,r)=>t.events.on("keyRelease",(t=>t===e&&r(e))))),G=Pe((e=>t.events.on("mouseDown",(t=>e(t)))),((e,r)=>t.events.on("mouseDown",(t=>t===e&&r(t))))),q=Pe((e=>t.events.on("mousePress",(t=>e(t)))),((e,r)=>t.events.on("mousePress",(t=>t===e&&r(t))))),H=Pe((e=>t.events.on("mouseRelease",(t=>e(t)))),((e,r)=>t.events.on("mouseRelease",(t=>t===e&&r(t)))));function K(e){return t.events.on("mouseMove",(()=>e(v(),y())))}function Y(e){return t.events.on("charInput",e)}function j(e){return t.events.on("touchStart",e)}function Q(e){return t.events.on("touchMove",e)}function z(e){return t.events.on("touchEnd",e)}function J(e){return t.events.on("scroll",e)}function X(e){return t.events.on("hide",e)}function W(e){return t.events.on("show",e)}function Z(e,r){return"function"==typeof e?t.events.on("gamepadButtonDown",e):"string"==typeof e&&"function"==typeof r?t.events.on("gamepadButtonDown",(t=>t===e&&r(e))):void 0}function _(e,r){return"function"==typeof e?t.events.on("gamepadButtonPress",e):"string"==typeof e&&"function"==typeof r?t.events.on("gamepadButtonPress",(t=>t===e&&r(e))):void 0}function $(e,r){return"function"==typeof e?t.events.on("gamepadButtonRelease",e):"string"==typeof e&&"function"==typeof r?t.events.on("gamepadButtonRelease",(t=>t===e&&r(e))):void 0}function ee(e,r){return t.events.on("gamepadStick",((t,i)=>t===e&&r(i)))}function te(e){t.events.on("gamepadConnect",e)}function re(e){t.events.on("gamepadDisconnect",e)}function ie(e){return t.mergedGamepadState.stickState.get(e)||new N(0)}function ne(){return[...t.charInputted]}function se(){return[...t.gamepads]}function oe(){t.events.trigger("input"),t.keyState.down.forEach((e=>t.events.trigger("keyDown",e))),t.mouseState.down.forEach((e=>t.events.trigger("mouseDown",e))),ue()}function ae(){t.keyState.update(),t.mouseState.update(),t.mergedGamepadState.buttonState.update(),t.mergedGamepadState.stickState.forEach(((e,r)=>{t.mergedGamepadState.stickState.set(r,new N(0))})),t.charInputted=[],t.isMouseMoved=!1,t.gamepadStates.forEach((e=>{e.buttonState.update(),e.stickState.forEach(((t,r)=>{e.stickState.set(r,new N(0))}))}))}function he(e){let r={index:e.index,isPressed:r=>t.gamepadStates.get(e.index).buttonState.pressed.has(r),isDown:r=>t.gamepadStates.get(e.index).buttonState.down.has(r),isReleased:r=>t.gamepadStates.get(e.index).buttonState.released.has(r),getStick:r=>t.gamepadStates.get(e.index).stickState.get(r)};return t.gamepads.push(r),t.gamepadStates.set(e.index,{buttonState:new Je,stickState:new Map([["left",new N(0)],["right",new N(0)]])}),r}function le(e){t.gamepads=t.gamepads.filter((t=>t.index!==e.index)),t.gamepadStates.delete(e.index)}function ue(){for(let e of navigator.getGamepads())e&&!t.gamepadStates.has(e.index)&&he(e);for(let r of t.gamepads){let i=navigator.getGamepads()[r.index],n=(e.gamepads??{})[i.id]??ze[i.id]??ze.default,s=t.gamepadStates.get(r.index);for(let e=0;e{let r=new N(e.offsetX,e.offsetY),i=new N(e.movementX,e.movementY);if(g()){let i=t.canvas.width/pe,n=t.canvas.height/pe,s=window.innerWidth,o=window.innerHeight;if(s/o>i/n){let t=o/n,a=(s-i*t)/2;r.x=C(e.offsetX-a,0,i*t,0,i),r.y=C(e.offsetY,0,n*t,0,n)}else{let t=s/i,a=(o-n*t)/2;r.x=C(e.offsetX,0,i*t,0,i),r.y=C(e.offsetY-a,0,n*t,0,n)}}t.events.onOnce("input",(()=>{t.isMouseMoved=!0,t.mousePos=r,t.mouseDeltaPos=i,t.events.trigger("mouseMove")}))};let ge=["left","middle","right","back","forward"];de.mousedown=e=>{t.events.onOnce("input",(()=>{let r=ge[e.button];r&&(t.mouseState.press(r),t.events.trigger("mousePress",r))}))},de.mouseup=e=>{t.events.onOnce("input",(()=>{let r=ge[e.button];r&&(t.mouseState.release(r),t.events.trigger("mouseRelease",r))}))};let me=new Set([" ","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Tab"]),we={ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up",ArrowDown:"down"," ":"space"};de.keydown=e=>{me.has(e.key)&&e.preventDefault(),t.events.onOnce("input",(()=>{let r=we[e.key]||e.key.toLowerCase();1===r.length?(t.events.trigger("charInput",r),t.charInputted.push(r)):"space"===r&&(t.events.trigger("charInput"," "),t.charInputted.push(" ")),e.repeat?(t.keyState.pressRepeat(r),t.events.trigger("keyPressRepeat",r)):(t.keyState.press(r),t.events.trigger("keyPressRepeat",r),t.events.trigger("keyPress",r))}))},de.keyup=e=>{t.events.onOnce("input",(()=>{let r=we[e.key]||e.key.toLowerCase();t.keyState.release(r),t.events.trigger("keyRelease",r)}))},de.touchstart=r=>{r.preventDefault(),t.events.onOnce("input",(()=>{let i=[...r.changedTouches],n=t.canvas.getBoundingClientRect();!1!==e.touchToMouse&&(t.mousePos=new N(i[0].clientX-n.x,i[0].clientY-n.y),t.mouseState.press("left"),t.events.trigger("mousePress","left")),i.forEach((e=>{t.events.trigger("touchStart",new N(e.clientX-n.x,e.clientY-n.y),e)}))}))},de.touchmove=r=>{r.preventDefault(),t.events.onOnce("input",(()=>{let i=[...r.changedTouches],n=t.canvas.getBoundingClientRect();!1!==e.touchToMouse&&(t.mousePos=new N(i[0].clientX-n.x,i[0].clientY-n.y),t.events.trigger("mouseMove")),i.forEach((e=>{t.events.trigger("touchMove",new N(e.clientX-n.x,e.clientY-n.y),e)}))}))},de.touchend=r=>{t.events.onOnce("input",(()=>{let i=[...r.changedTouches],n=t.canvas.getBoundingClientRect();!1!==e.touchToMouse&&(t.mousePos=new N(i[0].clientX-n.x,i[0].clientY-n.y),t.mouseState.release("left"),t.events.trigger("mouseRelease","left")),i.forEach((e=>{t.events.trigger("touchEnd",new N(e.clientX-n.x,e.clientY-n.y),e)}))}))},de.touchcancel=r=>{t.events.onOnce("input",(()=>{let i=[...r.changedTouches],n=t.canvas.getBoundingClientRect();!1!==e.touchToMouse&&(t.mousePos=new N(i[0].clientX-n.x,i[0].clientY-n.y),t.mouseState.release("left"),t.events.trigger("mouseRelease","left")),i.forEach((e=>{t.events.trigger("touchEnd",new N(e.clientX-n.x,e.clientY-n.y),e)}))}))},de.wheel=e=>{e.preventDefault(),t.events.onOnce("input",(()=>{t.events.trigger("scroll",new N(e.deltaX,e.deltaY))}))},de.contextmenu=e=>e.preventDefault(),ce.visibilitychange=()=>{"visible"===document.visibilityState?(t.skipTime=!0,t.events.trigger("show")):t.events.trigger("hide")},fe.gamepadconnected=e=>{let r=he(e.gamepad);t.events.onOnce("input",(()=>{t.events.trigger("gamepadConnect",r)}))},fe.gamepaddisconnected=e=>{let r=se().filter((t=>t.index===e.gamepad.index))[0];le(e.gamepad),t.events.onOnce("input",(()=>{t.events.trigger("gamepadDisconnect",r)}))};for(let P in de)t.canvas.addEventListener(P,de[P]);for(let P in ce)document.addEventListener(P,ce[P]);for(let P in fe)window.addEventListener(P,fe[P]);let Ae=new ResizeObserver((e=>{for(let r of e)if(r.target===t.canvas){if(t.lastWidth===t.canvas.offsetWidth&&t.lastHeight===t.canvas.offsetHeight)return;t.lastWidth=t.canvas.offsetWidth,t.lastHeight=t.canvas.offsetHeight,t.events.onOnce("input",(()=>{t.events.trigger("resize")}))}}));return Ae.observe(t.canvas),{dt:r,time:i,run:w,canvas:t.canvas,fps:n,numFrames:s,quit:m,setFullscreen:p,isFullscreen:g,setCursor:a,screenshot:o,getGamepads:se,getCursor:h,setCursorLocked:l,isCursorLocked:u,isTouchscreen:A,mousePos:v,mouseDeltaPos:y,isKeyDown:M,isKeyPressed:S,isKeyPressedRepeat:R,isKeyReleased:T,isMouseDown:x,isMousePressed:V,isMouseReleased:E,isMouseMoved:b,isGamepadButtonPressed:B,isGamepadButtonDown:I,isGamepadButtonReleased:k,getGamepadStick:ie,charInputted:ne,onResize:F,onKeyDown:D,onKeyPress:U,onKeyPressRepeat:L,onKeyRelease:O,onMouseDown:G,onMousePress:q,onMouseRelease:H,onMouseMove:K,onCharInput:Y,onTouchStart:j,onTouchMove:Q,onTouchEnd:z,onScroll:J,onHide:X,onShow:W,onGamepadButtonDown:Z,onGamepadButtonPress:_,onGamepadButtonRelease:$,onGamepadStick:ee,onGamepadConnect:te,onGamepadDisconnect:re,events:t.events}}),"default"),_e=(P(A=class{constructor(e,t,r,i={}){R(this,"ctx"),R(this,"src",null),R(this,"glTex"),R(this,"width"),R(this,"height"),this.ctx=e;let n=e.gl;this.glTex=e.gl.createTexture(),e.onDestroy((()=>this.free())),this.width=t,this.height=r;let s={linear:n.LINEAR,nearest:n.NEAREST}[i.filter??e.opts.texFilter]??n.NEAREST,o={repeat:n.REPEAT,clampToEadge:n.CLAMP_TO_EDGE}[i.wrap]??n.CLAMP_TO_EDGE;this.bind(),t&&r&&n.texImage2D(n.TEXTURE_2D,0,n.RGBA,t,r,0,n.RGBA,n.UNSIGNED_BYTE,null),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,s),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,s),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,o),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,o),this.unbind()}static fromImage(e,t,r={}){let i=new A(e,t.width,t.height,r);return i.update(t),i.src=t,i}update(e,t=0,r=0){let i=this.ctx.gl;this.bind(),i.texSubImage2D(i.TEXTURE_2D,0,t,r,i.RGBA,i.UNSIGNED_BYTE,e),this.unbind()}bind(){this.ctx.pushTexture2D(this.glTex)}unbind(){this.ctx.popTexture2D()}free(){this.ctx.gl.deleteTexture(this.glTex)}},"Texture"),A),$e=(P(v=class{constructor(e,t,r,i={}){R(this,"ctx"),R(this,"tex"),R(this,"glFramebuffer"),R(this,"glRenderbuffer"),this.ctx=e;let n=e.gl;e.onDestroy((()=>this.free())),this.tex=new _e(e,t,r,i),this.glFramebuffer=n.createFramebuffer(),this.glRenderbuffer=n.createRenderbuffer(),this.bind(),n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,t,r),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,this.tex.glTex,0),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,this.glRenderbuffer),this.unbind()}get width(){return this.tex.width}get height(){return this.tex.height}toImageData(){let e=this.ctx.gl,t=new Uint8ClampedArray(this.width*this.height*4);this.bind(),e.readPixels(0,0,this.width,this.height,e.RGBA,e.UNSIGNED_BYTE,t),this.unbind();let r=4*this.width,i=new Uint8Array(r);for(let n=0;n<(this.height/2|0);n++){let e=n*r,s=(this.height-n-1)*r;i.set(t.subarray(e,e+r)),t.copyWithin(e,s,s+r),t.set(i,s)}return new ImageData(t,this.width,this.height)}toDataURL(){let e=document.createElement("canvas"),t=e.getContext("2d");return e.width=this.width,e.height=this.height,t.putImageData(this.toImageData(),0,0),e.toDataURL()}draw(e){this.bind(),e(),this.unbind()}bind(){this.ctx.pushFramebuffer(this.glFramebuffer),this.ctx.pushRenderbuffer(this.glRenderbuffer),this.ctx.pushViewport({x:0,y:0,w:this.width,h:this.height})}unbind(){this.ctx.popFramebuffer(),this.ctx.popRenderbuffer(),this.ctx.popViewport()}free(){let e=this.ctx.gl;e.deleteFramebuffer(this.glFramebuffer),e.deleteRenderbuffer(this.glRenderbuffer),this.tex.free()}},"FrameBuffer"),v),et=(P(y=class{constructor(e,t,r,i){R(this,"ctx"),R(this,"glProgram"),this.ctx=e,e.onDestroy((()=>this.free()));let n=e.gl,s=n.createShader(n.VERTEX_SHADER),o=n.createShader(n.FRAGMENT_SHADER);n.shaderSource(s,t),n.shaderSource(o,r),n.compileShader(s),n.compileShader(o);let a=n.createProgram();if(this.glProgram=a,n.attachShader(a,s),n.attachShader(a,o),i.forEach(((e,t)=>n.bindAttribLocation(a,t,e))),n.linkProgram(a),!n.getProgramParameter(a,n.LINK_STATUS)){let e=n.getShaderInfoLog(s);if(e)throw new Error("VERTEX SHADER "+e);let t=n.getShaderInfoLog(o);if(t)throw new Error("FRAGMENT SHADER "+t)}n.deleteShader(s),n.deleteShader(o)}bind(){this.ctx.pushProgram(this.glProgram)}unbind(){this.ctx.popProgram()}send(e){let t=this.ctx.gl;for(let r in e){let i=e[r],n=t.getUniformLocation(this.glProgram,r);"number"==typeof i?t.uniform1f(n,i):i instanceof Y?t.uniformMatrix4fv(n,!1,new Float32Array(i.m)):i instanceof O?t.uniform3f(n,i.r,i.g,i.b):i instanceof N&&t.uniform2f(n,i.x,i.y)}}free(){this.ctx.gl.deleteProgram(this.glProgram)}},"Shader"),y),tt=(P(V=class{constructor(e,t,r,i){R(this,"ctx"),R(this,"glVBuf"),R(this,"glIBuf"),R(this,"vqueue",[]),R(this,"iqueue",[]),R(this,"stride"),R(this,"maxVertices"),R(this,"maxIndices"),R(this,"vertexFormat"),R(this,"numDraws",0),R(this,"curPrimitive",null),R(this,"curTex",null),R(this,"curShader",null),R(this,"curUniform",{});let n=e.gl;this.vertexFormat=t,this.ctx=e,this.stride=t.reduce(((e,t)=>e+t.size),0),this.maxVertices=r,this.maxIndices=i,this.glVBuf=n.createBuffer(),e.pushArrayBuffer(this.glVBuf),n.bufferData(n.ARRAY_BUFFER,4*r,n.DYNAMIC_DRAW),e.popArrayBuffer(),this.glIBuf=n.createBuffer(),e.pushElementArrayBuffer(this.glIBuf),n.bufferData(n.ELEMENT_ARRAY_BUFFER,4*i,n.DYNAMIC_DRAW),e.popElementArrayBuffer()}push(e,t,r,i,n=null,s={}){(e!==this.curPrimitive||n!==this.curTex||i!==this.curShader||!ye(this.curUniform,s)||this.vqueue.length+t.length*this.stride>this.maxVertices||this.iqueue.length+r.length>this.maxIndices)&&this.flush();let o=this.vqueue.length/this.stride;for(let a of t)this.vqueue.push(a);for(let a of r)this.iqueue.push(a+o);this.curPrimitive=e,this.curShader=i,this.curTex=n,this.curUniform=s}flush(){var e,t;if(!this.curPrimitive||!this.curShader||0===this.vqueue.length||0===this.iqueue.length)return;let r=this.ctx.gl;this.ctx.pushArrayBuffer(this.glVBuf),r.bufferSubData(r.ARRAY_BUFFER,0,new Float32Array(this.vqueue)),this.ctx.pushElementArrayBuffer(this.glIBuf),r.bufferSubData(r.ELEMENT_ARRAY_BUFFER,0,new Uint16Array(this.iqueue)),this.ctx.setVertexFormat(this.vertexFormat),this.curShader.bind(),this.curShader.send(this.curUniform),null==(e=this.curTex)||e.bind(),r.drawElements(this.curPrimitive,this.iqueue.length,r.UNSIGNED_SHORT,0),null==(t=this.curTex)||t.unbind(),this.curShader.unbind(),this.ctx.popArrayBuffer(),this.ctx.popElementArrayBuffer(),this.vqueue=[],this.iqueue=[],this.numDraws++}free(){let e=this.ctx.gl;e.deleteBuffer(this.glVBuf),e.deleteBuffer(this.glIBuf)}},"BatchRenderer"),V);function rt(e){let t=[],r=P((r=>{t.push(r),e(r)}),"push"),i=P((()=>{t.pop(),e(n()??null)}),"pop"),n=P((()=>t[t.length-1]),"cur");return[r,i,n]}function it(e,t={}){let r=[];function i(e){r.push(e)}function n(){r.forEach((e=>e())),e.getExtension("WEBGL_lose_context").loseContext()}P(i,"onDestroy"),P(n,"destroy");let s=null;function o(t){if(ye(t,s))return;s=t;let r=t.reduce(((e,t)=>e+t.size),0);t.reduce(((t,i,n)=>(e.vertexAttribPointer(n,i.size,e.FLOAT,!1,4*r,t),e.enableVertexAttribArray(n),t+4*i.size)),0)}P(o,"setVertexFormat");let[a,h]=rt((t=>e.bindTexture(e.TEXTURE_2D,t))),[l,u]=rt((t=>e.bindBuffer(e.ARRAY_BUFFER,t))),[d,c]=rt((t=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t))),[f,p]=rt((t=>e.bindFramebuffer(e.FRAMEBUFFER,t))),[g,m]=rt((t=>e.bindRenderbuffer(e.RENDERBUFFER,t))),[w,A]=rt((({x:t,y:r,w:i,h:n})=>{e.viewport(t,r,i,n)})),[v,y]=rt((t=>e.useProgram(t)));return w({x:0,y:0,w:e.drawingBufferWidth,h:e.drawingBufferHeight}),{gl:e,opts:t,onDestroy:i,destroy:n,pushTexture2D:a,popTexture2D:h,pushArrayBuffer:l,popArrayBuffer:u,pushElementArrayBuffer:d,popElementArrayBuffer:c,pushFramebuffer:f,popFramebuffer:p,pushRenderbuffer:g,popRenderbuffer:m,pushViewport:w,popViewport:A,pushProgram:v,popProgram:y,setVertexFormat:o}}P(rt,"genStack"),P(it,"initGfx");var nt=(P(x=class{constructor(e){R(this,"loaded",!1),R(this,"data",null),R(this,"error",null),R(this,"onLoadEvents",new Ae),R(this,"onErrorEvents",new Ae),R(this,"onFinishEvents",new Ae),e.then((e=>{this.data=e,this.onLoadEvents.trigger(e)})).catch((e=>{if(this.error=e,!(this.onErrorEvents.numListeners()>0))throw e;this.onErrorEvents.trigger(e)})).finally((()=>{this.onFinishEvents.trigger(),this.loaded=!0}))}static loaded(e){let t=new x(Promise.resolve(e));return t.data=e,t.loaded=!0,t}onLoad(e){return this.loaded&&this.data?e(this.data):this.onLoadEvents.add(e),this}onError(e){return this.loaded&&this.error?e(this.error):this.onErrorEvents.add(e),this}onFinish(e){return this.loaded?e():this.onFinishEvents.add(e),this}then(e){return this.onLoad(e)}catch(e){return this.onError(e)}finally(e){return this.onFinish(e)}},"Asset"),x),st=(P(E=class{constructor(){R(this,"assets",new Map),R(this,"lastUID",0)}add(e,t){let r=e??this.lastUID+++"",i=new nt(t);return this.assets.set(r,i),i}addLoaded(e,t){let r=e??this.lastUID+++"",i=nt.loaded(t);return this.assets.set(r,i),i}get(e){return this.assets.get(e)}progress(){if(0===this.assets.size)return 1;let e=0;return this.assets.forEach((t=>{t.loaded&&e++})),e/this.assets.size}},"AssetBucket"),E);function ot(e){return fetch(e).then((t=>{if(!t.ok)throw new Error(`Failed to fetch "${e}"`);return t}))}function at(e){return ot(e).then((e=>e.json()))}function ht(e){return ot(e).then((e=>e.text()))}function lt(e){return ot(e).then((e=>e.arrayBuffer()))}function ut(e){let t=new Image;return t.crossOrigin="anonymous",t.src=e,new Promise(((r,i)=>{t.onload=()=>r(t),t.onerror=()=>i(new Error(`Failed to load image from "${e}"`))}))}P(ot,"fetchURL"),P(at,"fetchJSON"),P(ht,"fetchText"),P(lt,"fetchArrayBuffer"),P(ut,"loadImg");var dt=2.5949095,ct=2.70158,ft=2*Math.PI/3,pt=2*Math.PI/4.5,gt={linear:e=>e,easeInSine:e=>1-Math.cos(e*Math.PI/2),easeOutSine:e=>Math.sin(e*Math.PI/2),easeInOutSine:e=>-(Math.cos(Math.PI*e)-1)/2,easeInQuad:e=>e*e,easeOutQuad:e=>1-(1-e)*(1-e),easeInOutQuad:e=>e<.5?2*e*e:1-Math.pow(-2*e+2,2)/2,easeInCubic:e=>e*e*e,easeOutCubic:e=>1-Math.pow(1-e,3),easeInOutCubic:e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2,easeInQuart:e=>e*e*e*e,easeOutQuart:e=>1-Math.pow(1-e,4),easeInOutQuart:e=>e<.5?8*e*e*e*e:1-Math.pow(-2*e+2,4)/2,easeInQuint:e=>e*e*e*e*e,easeOutQuint:e=>1-Math.pow(1-e,5),easeInOutQuint:e=>e<.5?16*e*e*e*e*e:1-Math.pow(-2*e+2,5)/2,easeInExpo:e=>0===e?0:Math.pow(2,10*e-10),easeOutExpo:e=>1===e?1:1-Math.pow(2,-10*e),easeInOutExpo:e=>0===e?0:1===e?1:e<.5?Math.pow(2,20*e-10)/2:(2-Math.pow(2,-20*e+10))/2,easeInCirc:e=>1-Math.sqrt(1-Math.pow(e,2)),easeOutCirc:e=>Math.sqrt(1-Math.pow(e-1,2)),easeInOutCirc:e=>e<.5?(1-Math.sqrt(1-Math.pow(2*e,2)))/2:(Math.sqrt(1-Math.pow(-2*e+2,2))+1)/2,easeInBack:e=>ct*e*e*e-1.70158*e*e,easeOutBack:e=>1+ct*Math.pow(e-1,3)+1.70158*Math.pow(e-1,2),easeInOutBack:e=>e<.5?Math.pow(2*e,2)*(7.189819*e-dt)/2:(Math.pow(2*e-2,2)*((dt+1)*(2*e-2)+dt)+2)/2,easeInElastic:e=>0===e?0:1===e?1:-Math.pow(2,10*e-10)*Math.sin((10*e-10.75)*ft),easeOutElastic:e=>0===e?0:1===e?1:Math.pow(2,-10*e)*Math.sin((10*e-.75)*ft)+1,easeInOutElastic:e=>0===e?0:1===e?1:e<.5?-Math.pow(2,20*e-10)*Math.sin((20*e-11.125)*pt)/2:Math.pow(2,-20*e+10)*Math.sin((20*e-11.125)*pt)/2+1,easeInBounce:e=>1-gt.easeOutBounce(1-e),easeOutBounce:e=>e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375,easeInOutBounce:e=>e<.5?(1-gt.easeOutBounce(1-2*e))/2:(1+gt.easeOutBounce(2*e-1))/2},mt=gt,wt=(P(b=class{constructor(e,t,r){R(this,"textures",[]),R(this,"canvas"),R(this,"c2d"),R(this,"x",0),R(this,"y",0),R(this,"curHeight",0),R(this,"gfx"),this.gfx=e,this.canvas=document.createElement("canvas"),this.canvas.width=t,this.canvas.height=r,this.textures=[_e.fromImage(e,this.canvas)],this.c2d=this.canvas.getContext("2d")}add(e){if(e.width>this.canvas.width||e.height>this.canvas.height)throw new Error(`Texture size (${e.width} x ${e.height}) exceeds limit (${this.canvas.width} x ${this.canvas.height})`);this.x+e.width>this.canvas.width&&(this.x=0,this.y+=this.curHeight,this.curHeight=0),this.y+e.height>this.canvas.height&&(this.c2d.clearRect(0,0,this.canvas.width,this.canvas.height),this.textures.push(_e.fromImage(this.gfx,this.canvas)),this.x=0,this.y=0,this.curHeight=0);let t=this.textures[this.textures.length-1],r=new N(this.x,this.y);return this.x+=e.width,e.height>this.curHeight&&(this.curHeight=e.height),e instanceof ImageData?this.c2d.putImageData(e,r.x,r.y):this.c2d.drawImage(e,r.x,r.y),t.update(this.canvas),[t,new H(r.x/this.canvas.width,r.y/this.canvas.height,e.width/this.canvas.width,e.height/this.canvas.height)]}free(){for(let e of this.textures)e.free()}},"TexPacker"),b),At=B("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L5QNSqT5iiySS9Ja2SV//5ME0ak//+4KgAAABgQBAADAMDgYCAEgCteQ0fZH6+ICXA357+MPfhR/+ywRf/U///LVTEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+5JknQAFoWhGLm5gBClBmT3GiAAAAAGkHAAAIAAANIOAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"),vt=" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~",yt="topleft",Vt="monospace",xt=256,Et="linear",bt=[{name:"a_pos",size:2},{name:"a_uv",size:2},{name:"a_color",size:4}],St=8192*bt.reduce(((e,t)=>e+t.size),0),Rt="\nattribute vec2 a_pos;\nattribute vec2 a_uv;\nattribute vec4 a_color;\n\nvarying vec2 v_pos;\nvarying vec2 v_uv;\nvarying vec4 v_color;\n\nvec4 def_vert() {\n\treturn vec4(a_pos, 0.0, 1.0);\n}\n\n{{user}}\n\nvoid main() {\n\tvec4 pos = vert(a_pos, a_uv, a_color);\n\tv_pos = a_pos;\n\tv_uv = a_uv;\n\tv_color = a_color;\n\tgl_Position = pos;\n}\n",Mt="\nprecision mediump float;\n\nvarying vec2 v_pos;\nvarying vec2 v_uv;\nvarying vec4 v_color;\n\nuniform sampler2D u_tex;\n\nvec4 def_frag() {\n\treturn v_color * texture2D(u_tex, v_uv);\n}\n\n{{user}}\n\nvoid main() {\n\tgl_FragColor = frag(v_pos, v_uv, v_color, u_tex);\n\tif (gl_FragColor.a == 0.0) {\n\t\tdiscard;\n\t}\n}\n",Tt="\nvec4 vert(vec2 pos, vec2 uv, vec4 color) {\n\treturn def_vert();\n}\n",Pt="\nvec4 frag(vec2 pos, vec2 uv, vec4 color, sampler2D tex) {\n\treturn def_frag();\n}\n",Bt=new Set(["id","require"]),It=new Set(["add","update","draw","destroy","inspect","drawInspect"]);function kt(e){switch(e){case"topleft":return new N(-1,-1);case"top":return new N(0,-1);case"topright":return new N(1,-1);case"left":return new N(-1,0);case"center":return new N(0,0);case"right":return new N(1,0);case"botleft":return new N(-1,1);case"bot":return new N(0,1);case"botright":return new N(1,1);default:return e}}function Ft(e){switch(e){case"left":default:return 0;case"center":return.5;case"right":return 1}}function Dt(e){return e.createBuffer(1,1,44100)}P(kt,"anchorPt"),P(Ft,"alignPt"),P(Dt,"createEmptyAudioBuffer");const Ct=P(((e={})=>{let t=e.root??document.body;t===document.body&&(document.body.style.width="100%",document.body.style.height="100%",document.body.style.margin="0px",document.documentElement.style.width="100%",document.documentElement.style.height="100%");let r=e.canvas??(()=>{let e=document.createElement("canvas");return t.appendChild(e),e})(),i=e.scale??1,n=e.width&&e.height&&!e.stretch&&!e.letterbox;n?(r.width=e.width*i,r.height=e.height*i):(r.width=r.parentElement.offsetWidth,r.height=r.parentElement.offsetHeight);let s=["outline: none","cursor: default"];if(n){let e=r.width,t=r.height;s.push(`width: ${e}px`),s.push(`height: ${t}px`)}else s.push("width: 100%"),s.push("height: 100%");e.crisp&&(s.push("image-rendering: pixelated"),s.push("image-rendering: crisp-edges")),r.style.cssText=s.join(";");let o=e.pixelDensity||window.devicePixelRatio;r.width*=o,r.height*=o,r.tabIndex=0;let a=document.createElement("canvas");a.width=xt,a.height=xt;let h=a.getContext("2d",{willReadFrequently:!0}),l=Ze({canvas:r,touchToMouse:e.touchToMouse,gamepads:e.gamepads,pixelDensity:e.pixelDensity,maxFPS:e.maxFPS}),u=[],d=l.canvas.getContext("webgl",{antialias:!0,depth:!0,stencil:!0,alpha:!0,preserveDrawingBuffer:!0}),c=it(d,{texFilter:e.texFilter}),f=(()=>{let t=ot(Tt,Pt),r=_e.fromImage(c,new ImageData(new Uint8ClampedArray([255,255,255,255]),1,1)),n=e.width&&e.height?new $e(c,e.width*o*i,e.height*o*i):new $e(c,d.drawingBufferWidth,d.drawingBufferHeight),s=null,a=1;e.background&&(s=G(e.background),a=Array.isArray(e.background)?e.background[3]:1,d.clearColor(s.r/255,s.g/255,s.b/255,a??1)),d.enable(d.BLEND),d.blendFuncSeparate(d.SRC_ALPHA,d.ONE_MINUS_SRC_ALPHA,d.ONE,d.ONE_MINUS_SRC_ALPHA);let h=new tt(c,bt,St,12288),l=_e.fromImage(c,new ImageData(new Uint8ClampedArray([128,128,128,255,190,190,190,255,190,190,190,255,128,128,128,255]),2,2),{wrap:"repeat",filter:"nearest"});return{lastDrawCalls:0,defShader:t,defTex:r,frameBuffer:n,postShader:null,postShaderUniform:null,renderer:h,transform:new Y,transformStack:[],bgTex:l,bgColor:s,bgAlpha:a,width:e.width??d.drawingBufferWidth/o/i,height:e.height??d.drawingBufferHeight/o/i,viewport:{x:0,y:0,width:d.drawingBufferWidth,height:d.drawingBufferHeight},fixed:!1}})();const p=class e{constructor(e,t,r={},i=null){R(this,"tex"),R(this,"frames",[new H(0,0,1,1)]),R(this,"anims",{}),R(this,"slice9",null),this.tex=e,t&&(this.frames=t),this.anims=r,this.slice9=i}get width(){return this.tex.width*this.frames[0].w}get height(){return this.tex.height*this.frames[0].h}static from(t,r={}){return"string"==typeof t?e.fromURL(t,r):Promise.resolve(e.fromImage(t,r))}static fromImage(t,r={}){let[i,n]=v.packer.add(t),s=r.frames?r.frames.map((e=>new H(n.x+e.x*n.w,n.y+e.y*n.h,e.w*n.w,e.h*n.h))):J(r.sliceX||1,r.sliceY||1,n.x,n.y,n.w,n.h);return new e(i,s,r.anims,r.slice9)}static fromURL(t,r={}){return ut(t).then((t=>e.fromImage(t,r)))}};P(p,"SpriteData");let g=p;const m=class e{constructor(e){R(this,"buf"),this.buf=e}static fromArrayBuffer(t){return new Promise(((e,r)=>A.ctx.decodeAudioData(t,e,r))).then((t=>new e(t)))}static fromURL(t){return Me(t)?e.fromArrayBuffer(xe(t)):lt(t).then((t=>e.fromArrayBuffer(t)))}};P(m,"SoundData");let w=m,A=(()=>{let e=new(window.AudioContext||window.webkitAudioContext),t=e.createGain();t.connect(e.destination);let r=new w(Dt(e));return e.decodeAudioData(At.buffer.slice(0)).then((e=>{r.buf=e})).catch((e=>{console.error("Failed to load burp: ",e)})),{ctx:e,masterNode:t,burpSnd:r}})(),v={urlPrefix:"",sprites:new st,fonts:new st,bitmapFonts:new st,sounds:new st,shaders:new st,custom:new st,packer:new wt(c,2048,2048),loaded:!1};function y(e){return"string"!=typeof e||Me(e)?e:v.urlPrefix+e}P(y,"fixURL");let V={events:new ve,objEvents:new ve,root:Mr([]),gravity:0,scenes:{},logs:[],cam:{pos:null,scale:new N(1),angle:0,shake:0,transform:new Y}};function x(e){return v.custom.add(null,e)}function E(){let e=[v.sprites,v.sounds,v.shaders,v.fonts,v.bitmapFonts,v.custom];return e.reduce(((e,t)=>e+t.progress()),0)/e.length}function b(e){return void 0!==e&&(v.urlPrefix=e),v.urlPrefix}function S(e,t){return v.custom.add(e,at(t))}V.root.use(ci()),P(x,"load"),P(E,"loadProgress"),P(b,"loadRoot"),P(S,"loadJSON");const M=class{constructor(e,t={}){if(R(this,"fontface"),R(this,"filter",Et),R(this,"outline",null),R(this,"size",64),this.fontface=e,this.filter=t.filter??Et,this.size=t.size??64,this.size>xt)throw new Error("Max font size: 256");t.outline&&(this.outline={width:1,color:G(0,0,0)},"number"==typeof t.outline?this.outline.width=t.outline:"object"==typeof t.outline&&(t.outline.width&&(this.outline.width=t.outline.width),t.outline.color&&(this.outline.color=t.outline.color)))}};P(M,"FontData");let T=M;function B(e,t,r={}){let i=new FontFace(e,"string"==typeof t?`url(${t})`:t);return document.fonts.add(i),v.fonts.add(e,i.load().catch((e=>{throw new Error(`Failed to load font from "${t}": ${e}`)})).then((e=>new T(e,r))))}function Q(e,t,r,i,n={}){return v.bitmapFonts.add(e,ut(t).then((e=>dt(_e.fromImage(c,e,n),r,i,n.chars??vt))))}function J(e=1,t=1,r=0,i=0,n=1,s=1){let o=[],a=n/e,h=s/t;for(let l=0;l{at(t).then((t=>{te(e,t).then(r).catch(i)}))})):g.from(e).then((e=>{let r={};for(let i in t){let n=t[i],s=e.frames[0],o=2048*s.w,a=2048*s.h,h=n.frames?n.frames.map((e=>new H(s.x+(n.x+e.x)/o*s.w,s.y+(n.y+e.y)/a*s.h,e.w/o*s.w,e.h/a*s.h))):J(n.sliceX||1,n.sliceY||1,s.x+n.x/o*s.w,s.y+n.y/a*s.h,n.width/o*s.w,n.height/a*s.h),l=new g(e.tex,h,n.anims);v.sprites.addLoaded(i,l),r[i]=l}return r})))}function ae(e,t={}){let r=document.createElement("canvas"),i=e[0].width,n=e[0].height;r.width=i*e.length,r.height=n;let s=r.getContext("2d");e.forEach(((e,t)=>{e instanceof ImageData?s.putImageData(e,t*i,0):s.drawImage(e,t*i,0)}));let o=s.getImageData(0,0,e.length*i,n);return g.fromImage(o,{...t,sliceX:e.length,sliceY:1})}function fe(e,t,r={sliceX:1,sliceY:1,anims:{}}){return t=y(t),Array.isArray(t)?t.some((e=>"string"==typeof e))?v.sprites.add(e,Promise.all(t.map((e=>"string"==typeof e?ut(e):Promise.resolve(e)))).then((e=>ae(e,r)))):v.sprites.addLoaded(e,ae(t,r)):"string"==typeof t?v.sprites.add(e,g.from(t,r)):v.sprites.addLoaded(e,g.fromImage(t,r))}function ye(e,t){return t=y(t),v.sprites.add(e,new Promise((async e=>{let r="string"==typeof t?await at(t):t,i=await Promise.all(r.frames.map(ut)),n=document.createElement("canvas");n.width=r.width,n.height=r.height*r.frames.length;let s=n.getContext("2d");i.forEach(((e,t)=>{s.drawImage(e,0,t*r.height)})),e(await fe(null,n,{sliceY:r.frames.length,anims:r.anims}))})))}function Ve(e,t,r){t=y(t),r=y(r),"string"==typeof t&&!r&&(r=Te(t)+".json");let i="string"==typeof r?at(r):Promise.resolve(r);return v.sprites.add(e,i.then((e=>{let r=e.meta.size,i=e.frames.map((e=>new H(e.frame.x/r.w,e.frame.y/r.h,e.frame.w/r.w,e.frame.h/r.h))),n={};for(let t of e.meta.frameTags)t.from===t.to?n[t.name]=t.from:n[t.name]={from:t.from,to:t.to,speed:10,loop:!0,pingpong:"pingpong"===t.direction};return g.from(t,{frames:i,anims:n})})))}function Fe(e,t,r){return v.shaders.addLoaded(e,ot(t,r))}function Ce(e,t,r){t=y(t),r=y(r);let i=P((e=>e?ht(e):Promise.resolve(null)),"resolveUrl"),n=Promise.all([i(t),i(r)]).then((([e,t])=>ot(e,t)));return v.shaders.add(e,n)}function Ue(e,t){return t=y(t),v.sounds.add(e,"string"==typeof t?w.fromURL(t):w.fromArrayBuffer(t))}function Ne(e="bean"){return fe(e,"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAA1CAYAAADyMeOEAAAAAXNSR0IArs4c6QAAAoVJREFUaIHdm7txwkAQhheGAqACiCHzOKQDQrqgILpwSAeEDBnEUAF0gCMxZ7G72qce/mec2Lpf9+3unaS78wgSNZ8uX5729+d1FNWXUuGmXlBOUUEIMckEpeQJgBu6C+BSFngztBR2vd+ovY+7g+p6LbgaWgJrAeUkDYIUXgXdBBwNi6kpABJwMTQH3AZsXRR8GHTfgEth8E3gjdAUcNewpbTgY85sCMCUuOokozE0YM0YRzM9NGAAXd8+omAF5h4lnmBRvpSnZHyLoLEbaN+aKB9KWv/KWw0tAbbANnlG+UvB2dm77NxxdwgBpjrF/d7rW9cbmpvio2A5z8iAYpVU8pGZlo6/2+MSco2lHfd3rv9jAP038e1xef9o2mjvYb2OqpqKE81028/jeietlSEVO5FRWsxWsJit1G3aFpW8iWe5RwpiCZAk25QvV6nz6fIlynRGuTd5WqpJ4guAlDfVKBK87hXljflgv1ON6fV+4+5gVlA17SfeG0heKqQd4l4jI/wrmaA9N9R4ar+wpHJDZyrrfcH0nB66PqAzPi76pn+faSyJk/vzOorYhGurQrzj/P68jtBMawHaHBIR9xoD5O34dy0qQOSYHvqExq2TpT2nf76+w7y251OYF0CRaU+J920TwLUa6inx6OxE6g80lu2ux7Y2eJLF/rCXE6zEPdnenk9o+4ih9AEdnW2q81HXl5LuU6OTl2fXUhqganbXAGq3g6jJOWV/OnoesO6YqqEB/GdNsjf7uHtwj2DzmRNpp7iOZfm6D9oAxB6Yi1gC4oIYeo4MIPdopEQRB+cAko5J1tW386HpB2Kz1eop4Epdwls/kgZ1sh8gZsEjdcWkr//D8Qu3Z3l5Nl1NtAAAAABJRU5ErkJggg==")}function Le(e){return v.sprites.get(e)}function Oe(e){return v.sounds.get(e)}function Ge(e){return v.fonts.get(e)}function qe(e){return v.bitmapFonts.get(e)}function He(e){return v.shaders.get(e)}function Ke(e){return v.custom.get(e)}function Ye(e){if("string"==typeof e){let t=Le(e);if(t)return t;if(E()<1)return null;throw new Error(`Sprite not found: ${e}`)}if(e instanceof g)return nt.loaded(e);if(e instanceof nt)return e;throw new Error(`Invalid sprite: ${e}`)}function je(e){if("string"==typeof e){let t=Oe(e);if(t)return t;if(E()<1)return null;throw new Error(`Sound not found: ${e}`)}if(e instanceof w)return nt.loaded(e);if(e instanceof nt)return e;throw new Error(`Invalid sound: ${e}`)}function Qe(e){if(!e)return f.defShader;if("string"==typeof e){let t=He(e);if(t)return t.data??t;if(E()<1)return null;throw new Error(`Shader not found: ${e}`)}return e instanceof nt&&e.data?e.data:e}function ze(t){if(!t)return ze(e.font??"monospace");if("string"==typeof t){let e=qe(t),r=Ge(t);if(e)return e.data??e;if(r)return r.data??r;if(document.fonts.check(`64px ${t}`))return t;if(E()<1)return null;throw new Error(`Font not found: ${t}`)}return t instanceof nt&&t.data?t.data:t}function Je(e){return void 0!==e&&(A.masterNode.gain.value=e),A.masterNode.gain.value}function Xe(e,t={}){let r=A.ctx,i=t.paused??!1,n=r.createBufferSource(),s=new Ae,o=r.createGain(),a=t.seek??0,h=0,l=0,u=!1;n.loop=!!t.loop,n.detune.value=t.detune??0,n.playbackRate.value=t.speed??1,n.connect(o),n.onended=()=>{var e;f()>=(null==(e=n.buffer)?void 0:e.duration)&&s.trigger()},o.connect(A.masterNode),o.gain.value=t.volume??1;let d=P((e=>{n.buffer=e.buf,i||(h=r.currentTime,n.start(0,a),u=!0)}),"start"),c=je(e);c instanceof nt&&c.onLoad(d);let f=P((()=>{if(!n.buffer)return 0;let e=i?l-h:r.currentTime-h,t=n.buffer.duration;return n.loop?e%t:Math.min(e,t)}),"getTime"),p=P((e=>{let t=r.createBufferSource();return t.buffer=e.buffer,t.loop=e.loop,t.playbackRate.value=e.playbackRate.value,t.detune.value=e.detune.value,t.onended=e.onended,t.connect(o),t}),"cloneNode");return{stop(){this.paused=!0,this.seek(0)},set paused(e){if(i!==e)if(i=e,e)u&&(n.stop(),u=!1),l=r.currentTime;else{n=p(n);let e=l-h;n.start(0,e),u=!0,h=r.currentTime-e,l=0}},get paused(){return i},play(e=0){this.seek(e),this.paused=!1},seek(e){var t;(null==(t=n.buffer)?void 0:t.duration)&&(e>n.buffer.duration||(i?(n=p(n),h=l-e):(n.stop(),n=p(n),h=r.currentTime-e,n.start(0,e),u=!0,l=0)))},set speed(e){n.playbackRate.value=e},get speed(){return n.playbackRate.value},set detune(e){n.detune.value=e},get detune(){return n.detune.value},set volume(e){o.gain.value=Math.max(e,0)},get volume(){return o.gain.value},set loop(e){n.loop=e},get loop(){return n.loop},duration(){var e;return(null==(e=n.buffer)?void 0:e.duration)??0},time(){return f()%this.duration()},onEnd:e=>s.add(e),then(e){return this.onEnd(e)}}}function We(e){return Xe(A.burpSnd,e)}function rt(e,t){return new $e(c,e,t)}function ot(e=Tt,t=Pt){let r=Rt.replace("{{user}}",e??Tt),i=Mt.replace("{{user}}",t??Pt);try{return new et(c,r,i,bt.map((e=>e.name)))}catch(n){let e=/(?^\w+) SHADER ERROR: 0:(?\d+): (?.+)/,t=Ie(n).match(e),r=Number(t.groups.line)-14,i=t.groups.msg.trim(),s=t.groups.type.toLowerCase();throw new Error(`${s} shader line ${r}: ${i}`)}}function dt(e,t,r,i){let n=e.width/t,s={},o=i.split("").entries();for(let[a,h]of o)s[h]=new H(a%n*t,Math.floor(a/n)*r,t,r);return{tex:e,map:s,size:r}}function ct(e,t,r,i=f.defTex,n=f.defShader,s={}){let o=Qe(n);if(!o||o instanceof nt)return;let a=f.fixed||r?f.transform:V.cam.transform.mult(f.transform),h=[];for(let l of e){let e=Ut(a.multVec2(l.pos));h.push(e.x,e.y,l.uv.x,l.uv.y,l.color.r/255,l.color.g/255,l.color.b/255,l.opacity)}f.renderer.push(d.TRIANGLES,h,t,o,i,s)}function ft(){f.renderer.flush()}function pt(){d.clear(d.COLOR_BUFFER_BIT),f.frameBuffer.bind(),d.clear(d.COLOR_BUFFER_BIT),f.bgColor||nr((()=>{Kt({width:cr(),height:fr(),quad:new H(0,0,cr()/64,fr()/64),tex:f.bgTex,fixed:!0})})),f.renderer.numDraws=0,f.fixed=!1,f.transformStack.length=0,f.transform=new Y}function gt(e,t){f.postShader=e,f.postShaderUniform=t??null}function Ct(){ft(),f.lastDrawCalls=f.renderer.numDraws,f.frameBuffer.unbind(),d.viewport(0,0,d.drawingBufferWidth,d.drawingBufferHeight);let e=f.width,t=f.height;f.width=d.drawingBufferWidth/o,f.height=d.drawingBufferHeight/o,Yt({flipY:!0,tex:f.frameBuffer.tex,pos:new N(f.viewport.x,f.viewport.y),width:f.viewport.width,height:f.viewport.height,shader:f.postShader,uniform:"function"==typeof f.postShaderUniform?f.postShaderUniform():f.postShaderUniform,fixed:!0}),ft(),f.width=e,f.height=t}function Ut(e){return new N(e.x/cr()*2-1,-e.y/fr()*2+1)}function Nt(e){f.transform=e.clone()}function Lt(...e){if(void 0===e[0])return;let t=L(...e);0===t.x&&0===t.y||f.transform.translate(t)}function Ot(...e){if(void 0===e[0])return;let t=L(...e);1===t.x&&1===t.y||f.transform.scale(t)}function Gt(e){e&&f.transform.rotate(e)}function qt(){f.transformStack.push(f.transform.clone())}function Ht(){f.transformStack.length>0&&(f.transform=f.transformStack.pop())}function Kt(e){if(void 0===e.width||void 0===e.height)throw new Error('drawUVQuad() requires property "width" and "height".');if(e.width<=0||e.height<=0)return;let t=e.width,r=e.height,i=kt(e.anchor||yt).scale(new N(t,r).scale(-.5)),n=e.quad||new H(0,0,1,1),s=e.color||G(255,255,255),o=e.opacity??1,a=e.tex?.1/e.tex.width:0,h=e.tex?.1/e.tex.height:0,l=n.x+a,u=n.y+h,d=n.w-2*a,c=n.h-2*h;qt(),Lt(e.pos),Gt(e.angle),Ot(e.scale),Lt(i),ct([{pos:new N(-t/2,r/2),uv:new N(e.flipX?l+d:l,e.flipY?u:u+c),color:s,opacity:o},{pos:new N(-t/2,-r/2),uv:new N(e.flipX?l+d:l,e.flipY?u+c:u),color:s,opacity:o},{pos:new N(t/2,-r/2),uv:new N(e.flipX?l:l+d,e.flipY?u+c:u),color:s,opacity:o},{pos:new N(t/2,r/2),uv:new N(e.flipX?l:l+d,e.flipY?u:u+c),color:s,opacity:o}],[0,1,3,1,2,3],e.fixed,e.tex,e.shader,e.uniform),Ht()}function Yt(e){if(!e.tex)throw new Error('drawTexture() requires property "tex".');let t=e.quad??new H(0,0,1,1),r=e.tex.width*t.w,i=e.tex.height*t.h,n=new N(1);if(e.tiled){let s=Math.ceil((e.width||r)/r),o=Math.ceil((e.height||i)/i),a=kt(e.anchor||yt).add(new N(1,1)).scale(.5).scale(s*r,o*i);for(let h=0;h({pos:new N(t.x,t.y),uv:new N(0),color:e.color??O.WHITE,opacity:e.opacity??1}))),[0,1,3,1,2,3],e.fixed,f.defTex,e.shader,e.uniform)}function Xt(e){let t=e.pts;if(!t)throw new Error('drawLines() requires property "pts".');if(!(t.length<2))if(e.radius&&t.length>=3){let r=t[0].sdist(t[1]);for(let e=1;e=360&&e.outline)return!1!==e.fill&&$t(Object.assign(s,{outline:null})),void $t(Object.assign(s,{pts:n.slice(1),fill:!1}));$t(s)}function $t(e){if(!e.pts)throw new Error('drawPolygon() requires property "pts".');let t=e.pts.length;if(!(t<3)){if(qt(),Lt(e.pos),Ot(e.scale),Gt(e.angle),Lt(e.offset),!1!==e.fill){let r=e.color??O.WHITE,i=e.pts.map(((t,i)=>({pos:new N(t.x,t.y),uv:new N(0,0),color:e.colors&&e.colors[i]?e.colors[i].mult(r):r,opacity:e.opacity??1}))),n=[...Array(t-2).keys()].map((e=>[0,e+1,e+2])).flat();ct(i,e.indices??n,e.fixed,f.defTex,e.shader,e.uniform)}e.outline&&Xt({pts:[...e.pts,e.pts[0]],radius:e.radius,width:e.outline.width,color:e.outline.color,join:e.outline.join,uniform:e.uniform,fixed:e.fixed,opacity:e.opacity}),Ht()}}function er(e,t,r){ft(),d.clear(d.STENCIL_BUFFER_BIT),d.enable(d.STENCIL_TEST),d.stencilFunc(d.NEVER,1,255),d.stencilOp(d.REPLACE,d.REPLACE,d.REPLACE),t(),ft(),d.stencilFunc(r,1,255),d.stencilOp(d.KEEP,d.KEEP,d.KEEP),e(),ft(),d.disable(d.STENCIL_TEST)}function tr(e,t){er(e,t,d.EQUAL)}function rr(e,t){er(e,t,d.NOTEQUAL)}function ir(){return(f.viewport.width+f.viewport.height)/(f.width+f.height)}function nr(e){ft();let t=f.width,r=f.height;f.width=f.viewport.width,f.height=f.viewport.height,e(),ft(),f.width=t,f.height=r}function sr(e,t){t.pos&&(e.pos=e.pos.add(t.pos)),t.scale&&(e.scale=e.scale.scale(L(t.scale))),t.angle&&(e.angle+=t.angle),t.color&&1===e.ch.length&&(e.color=e.color.mult(t.color)),t.opacity&&(e.opacity*=t.opacity)}P(B,"loadFont"),P(Q,"loadBitmapFont"),P(J,"slice"),P(te,"loadSpriteAtlas"),P(ae,"createSpriteSheet"),P(fe,"loadSprite"),P(ye,"loadPedit"),P(Ve,"loadAseprite"),P(Fe,"loadShader"),P(Ce,"loadShaderURL"),P(Ue,"loadSound"),P(Ne,"loadBean"),P(Le,"getSprite"),P(Oe,"getSound"),P(Ge,"getFont"),P(qe,"getBitmapFont"),P(He,"getShader"),P(Ke,"getAsset"),P(Ye,"resolveSprite"),P(je,"resolveSound"),P(Qe,"resolveShader"),P(ze,"resolveFont"),P(Je,"volume"),P(Xe,"play"),P(We,"burp"),P(rt,"makeCanvas"),P(ot,"makeShader"),P(dt,"makeFont"),P(ct,"drawRaw"),P(ft,"flush"),P(pt,"frameStart"),P(gt,"usePostEffect"),P(Ct,"frameEnd"),P(Ut,"screen2ndc"),P(Nt,"pushMatrix"),P(Lt,"pushTranslate"),P(Ot,"pushScale"),P(Gt,"pushRotate"),P(qt,"pushTransform"),P(Ht,"popTransform"),P(Kt,"drawUVQuad"),P(Yt,"drawTexture"),P(jt,"drawSprite"),P(Qt,"getArcPts"),P(zt,"drawRect"),P(Jt,"drawLine"),P(Xt,"drawLines"),P(Wt,"drawTriangle"),P(Zt,"drawCircle"),P(_t,"drawEllipse"),P($t,"drawPolygon"),P(er,"drawStenciled"),P(tr,"drawMasked"),P(rr,"drawSubtracted"),P(ir,"getViewportScale"),P(nr,"drawUnscaled"),P(sr,"applyCharTransform");let or=/\[(? +
+
+

Tap/Click around to move

+ + +
+ +
+ + diff --git a/dist/map.json b/dist/map.json new file mode 100644 index 0000000..48ffdb6 --- /dev/null +++ b/dist/map.json @@ -0,0 +1,388 @@ +{ "compressionlevel":-1, + "height":13, + "infinite":false, + "layers":[ + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 28, 28, 28, 28, 28, 29, 0, 0, 0, 27, 28, 28, 28, 28, 28, 29, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 67, 67, 67, 67, 67, 67, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":13, + "id":1, + "name":"ground", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":27, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 302, 303, 303, 303, 304, 0, 0, 0, 0, 0, 0, 302, 303, 304, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 341, 342, 342, 342, 343, 0, 0, 0, 0, 0, 0, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 380, 381, 381, 381, 382, 0, 0, 0, 0, 0, 0, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 381, 382, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":13, + "id":2, + "name":"ground-2", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":27, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 229, 0, 0, 0, 347, 348, 0, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 386, 387, 0, 389, 0, 185, 188, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 227, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 265, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":13, + "id":3, + "name":"props", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":27, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":4, + "name":"boundaries", + "objects":[ + { + "height":48, + "id":1, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":48, + "y":64 + }, + { + "height":16, + "id":2, + "name":"exit", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":32, + "y":112 + }, + { + "height":32, + "id":3, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":48, + "y":128 + }, + { + "height":16, + "id":4, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":112, + "x":64, + "y":160 + }, + { + "height":15.9090909090909, + "id":5, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":48, + "x":176, + "y":144.090909090909 + }, + { + "height":15.8181818181818, + "id":6, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":208, + "y":160.181818181818 + }, + { + "height":48, + "id":8, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":208, + "y":64 + }, + { + "height":14.6363636363636, + "id":12, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":47.9090909090909, + "x":176, + "y":96 + }, + { + "height":16, + "id":13, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":112, + "x":224, + "y":64 + }, + { + "height":80.0909090909091, + "id":14, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":336, + "y":95.9090909090909 + }, + { + "height":16, + "id":15, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":112, + "x":224, + "y":176 + }, + { + "height":16, + "id":16, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":47.7840909090909, + "x":64, + "y":64 + }, + { + "height":32, + "id":17, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":16, + "x":48, + "y":80 + }, + { + "height":16, + "id":19, + "name":"bed", + "rotation":0, + "type":"", + "visible":true, + "width":32, + "x":304, + "y":80 + }, + { + "height":17.4119318181818, + "id":23, + "name":"sofa-table", + "rotation":0, + "type":"", + "visible":true, + "width":27.5909090909091, + "x":98.1157361660079, + "y":98.4877717391304 + }, + { + "height":23.399209486166, + "id":26, + "name":"tv", + "rotation":0, + "type":"", + "visible":true, + "width":13.7391304347826, + "x":113.130434782609, + "y":136.600790513834 + }, + { + "height":22.8125, + "id":29, + "name":"pc", + "rotation":0, + "type":"", + "visible":true, + "width":13.875, + "x":161, + "y":72.0625 + }, + { + "height":14.117527173913, + "id":30, + "name":"cs-degree", + "rotation":0, + "type":"", + "visible":true, + "width":15.125, + "x":112.375, + "y":65.375 + }, + { + "height":0.125, + "id":31, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":127.5, + "y":79.75 + }, + { + "height":15.875, + "id":32, + "name":"", + "rotation":0, + "type":"", + "visible":true, + "width":32.0625, + "x":128.0625, + "y":64 + }, + { + "height":10.375, + "id":33, + "name":"resume", + "rotation":0, + "type":"", + "visible":true, + "width":14.25, + "x":225.53125, + "y":80.0625 + }, + { + "height":7.03125, + "id":34, + "name":"library", + "rotation":0, + "type":"", + "visible":true, + "width":11.75, + "x":274.125, + "y":80.125 + }, + { + "height":9.90625, + "id":35, + "name":"projects", + "rotation":0, + "type":"", + "visible":true, + "width":13.25, + "x":240.34375, + "y":80.25 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }, + { + "draworder":"topdown", + "id":5, + "name":"spawnpoints", + "objects":[ + { + "height":0, + "id":27, + "name":"player", + "point":true, + "rotation":0, + "type":"", + "visible":true, + "width":0, + "x":72.5454545454545, + "y":111.818181818182 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "x":0, + "y":0 + }], + "nextlayerid":6, + "nextobjectid":36, + "orientation":"orthogonal", + "renderorder":"right-down", + "tiledversion":"1.10.2", + "tileheight":16, + "tilesets":[ + { + "columns":39, + "firstgid":1, + "image":"spritesheet.png", + "imageheight":496, + "imagewidth":624, + "margin":0, + "name":"spritesheet", + "spacing":0, + "tilecount":1209, + "tileheight":16, + "tilewidth":16 + }], + "tilewidth":16, + "type":"map", + "version":"1.10", + "width":27 +} \ No newline at end of file diff --git a/dist/map.png b/dist/map.png new file mode 100644 index 0000000000000000000000000000000000000000..e63c3b98ff0d71f4f7aca302485f04af42154724 GIT binary patch literal 4840 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%0D4-$oIFwsK`Xx8=;NM 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 literal 0 HcmV?d00001