try again")}function z(e){q(e,"you were absorbed
try again"),ee("absorbed",u.playAbsorbedChord),setTimeout((function(){return te("absorbed",2)}),1e3)}function q(e,a){t.gameState.gameOver=!0,t.gameState.started=!1,t.gameState.readyToTryAgainAt=e+2e3,o.resetInput(),ue(a)}function Y(){return t.gameState.gameOver||t.gameState.gameWon||t.gameState.levelWon}function J(e,t){e.radius=K(e.radius,t.radius)}function K(e,t){return e+t/12}function Z(){return r([],b).sort((function(e,t){return e.radius-t.radius}))}function $(){for(var e=!1,t=Z(),a=_.radius,r=0;ro+re(e,t,r,n)}function oe(e){return 0===e?m:Math.sign(e)*m}function ie(e){if(0!==e.radius){var t=D().borderSize,a=X(e.radius);if(e.index!==_.index){var r=oe(e.vel[0]),n=oe(e.vel[1]);e.acc[0]+=i.clamp(r,-3e-4,f),e.acc[1]+=i.clamp(n,-3e-4,f)}var o=e.index===_.index?.004:6e-4;e.vel[0]=i.clamp(.98*(e.vel[0]+e.acc[0]),-o*a,o*a),e.vel[1]=i.clamp(.98*(e.vel[1]+e.acc[1]),-o*a,o*a),E[4*e.index+0]+=e.vel[0],E[4*e.index+1]+=e.vel[1],E[4*e.index+0]-E[4*e.index+2]<=-t&&(E[4*e.index+0]=Math.max(-t+E[4*e.index+2],E[4*e.index+0]),e.vel[0]=Math.abs(e.vel[0]),e.acc[0]=Math.abs(e.acc[0])),E[4*e.index+0]+E[4*e.index+2]>=t&&(E[4*e.index+0]=Math.min(t-E[4*e.index+2],E[4*e.index+0]),e.vel[0]=-Math.abs(e.vel[0]),e.acc[0]=-Math.abs(e.acc[0])),E[4*e.index+1]+E[4*e.index+2]>=t&&(E[4*e.index+1]=Math.min(t-E[4*e.index+2],E[4*e.index+1]),e.vel[1]=-Math.abs(e.vel[1]),e.acc[1]=-Math.abs(e.acc[1])),E[4*e.index+1]-E[4*e.index+2]<=-t&&(E[4*e.index+1]=Math.max(-t+E[4*e.index+2],E[4*e.index+1]),e.vel[1]=Math.abs(e.vel[1]),e.acc[1]=Math.abs(e.acc[1]))}}function ue(e,t){void 0===t&&(t=0),setTimeout((function(){C.innerHTML=e,C.style.opacity="1.0"}),t)}j(),requestAnimationFrame((function e(a){var r,c,l,p;requestAnimationFrame(e),r=Math.min(window.innerWidth,900),c=Math.min(window.innerHeight,900),l=t.gameState.dimensions.width,p=t.gameState.dimensions.height,r===l&&c===p||(s.width=r,s.height=c,d.viewport(0,0,r,c),t.gameState.dimensions.width=r,t.gameState.dimensions.height=c),function(e){var a=Q(e),r=o.anyInputPressed();!t.gameState.started&&r&&a?t.gameState.started=!0:t.gameState.gameOver&&r&&a&&j()}(a);var g=!t.gameState.started&&t.gameState.gameOver;t.gameState.levelWon&&Q(a)&&(t.gameState.currentLevel==w.length?(t.gameState.gameWon=!0,ue("absorption complete
good job")):(t.gameState.currentLevel++,t.gameState.levelWon=!1,t.gameState.gameOver=!1,t.gameState.started=!1,j())),(t.gameState.started||g)&&(function(){if(!t.gameState.gameOver){_.acc[0]=0,_.acc[1]=0,o.inputState.left&&(_.acc[0]-=m),o.inputState.right&&(_.acc[0]+=m),o.inputState.up&&(_.acc[1]+=m),o.inputState.down&&(_.acc[1]-=m);var e=X(_.radius);_.acc[0]+=i.clamp(_.acc[0]*e,-3e-4,f),_.acc[1]+=i.clamp(_.acc[1]*e,-3e-4,f)}}(),function(e){for(var t=0;t0){var r=i.clamp((e-a.animation.startTime)/v,0,1);r=i.easeOutBack(r),a.animation.currentValue=i.lerp(a.animation.startValue,a.animation.endValue,r),E[4*a.index+2]=a.animation.currentValue}}}(a),!Y()&&function(){for(var e=!0,t=_.radius,a=1;ab[a].radius))break}return e}()&&function(e){t.gameState.levelWon=!0,t.gameState.readyToTryAgainAt=e+T,o.resetInput(),t.gameState.currentLevel==w.length?(t.gameState.gameWon=!0,ue("absorption complete
good job")):ue(t.gameState.currentLevel+" of "+w.length+" complete
")}(a)),function(){F.props[0]=E[_.index+0],F.props[1]=E[_.index+1];var e=D().borderSize;F.props[0]<-e&&(F.props[0]=-e),F.props[0]>e&&(F.props[0]=e),F.props[1]<-e&&(F.props[1]=-e),F.props[1]>e&&(F.props[1]=e)}(),function(e){y.fill(0);for(var a=!1,r=0;rg?(h=ne(s,d,m,f,p,g,r===_.index),A=n,T=c,S=r,x=i,w=b[n],M=b[c]):g>m&&(h=ne(f,p,g,s,d,m,i===_.index),A=c,T=n,S=i,x=r,w=b[c],M=b[n]),h&&(b[A].animation.startTime=e,b[A].animation.endTime=e+v,b[A].animation.startValue=E[S+2],J(w,M),b[A].animation.endValue=w.radius,b[T].animation.startTime=e,b[T].animation.endTime=e+v,b[T].animation.startValue=E[x+2],M.radius=0,b[T].animation.endValue=M.radius,T!==_.index||t.gameState.gameOver?Y()||A!==_.index||(ee("absorb",u.playAbsorbChord),setTimeout((function(){return te("absorb",2)}),250)):z(e),t.gameState.levelWon||t.gameState.gameOver||!$()||H(e))}}}a&&!Y()?ee("intersect",u.playIntersectChord):te("intersect")}(a),function(e){d.clearColor(0,0,0,1),d.clearDepth(1),d.enable(d.DEPTH_TEST),d.depthFunc(d.LEQUAL),s.height=function(e){return e.width/(window.innerWidth/window.innerHeight)}(s),d.viewport(0,0,s.width,s.height),d.clear(d.COLOR_BUFFER_BIT|d.DEPTH_BUFFER_BIT),n.configureBuffer(d,B,N,O,2,"aSquarePosition"),P[0]=s.width,P[1]=s.height,d.uniform2fv(B.uniforms.uRes,P),d.uniform4fv(B.uniforms.uCameraProps,F.props);var a=D().borderSize;d.uniform1f(B.uniforms.uBorder,a),d.uniform4fv(B.uniforms.uCircleProps,E),d.uniform4fv(B.uniforms.uCircleColorProps,y),d.uniform1f(B.uniforms.uTime,e),d.uniform1i(B.uniforms.uGameWon,t.gameState.gameWon?1:0),d.drawArrays(d.TRIANGLES,0,6)}(a),function(){var e=I.textContent,t=k();e!==t&&(I.innerText=t);var a=L.textContent,r=G();a!==r&&(L.innerText=r)}()}))},489:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.anyInputPressed=t.resetInput=t.inputState=t.userHasInteracted=t.addEventListeners=void 0;var r=a(49),n=a(607),o=!1;function i(e){e.preventDefault(),c(e.changedTouches[0].clientX,e.changedTouches[0].clientY)}function u(e){e.preventDefault(),c(e.clientX,e.clientY)}function c(e,a){var r=e/window.innerWidth-.5,n=a/window.innerHeight-.5,o=.01;Math.abs(r)>o&&r>0&&(t.inputState.right=!0),Math.abs(r)>o&&r<0&&(t.inputState.left=!0),Math.abs(n)>o&&n>0&&(t.inputState.down=!0),Math.abs(n)>o&&n<0&&(t.inputState.up=!0),l()}function l(){o||(o=!0,r.createAudioContext(),r.setVolume(n.gameState.audio?n.VOLUME:0))}function s(e){e.preventDefault(),e.stopPropagation(),t.inputState.up=!1,t.inputState.right=!1,t.inputState.down=!1,t.inputState.left=!1}function d(e){v()&&(s(e),u(e))}function m(e){s(e),i(e)}function f(e){e.preventDefault(),e.stopPropagation()}function v(){return t.inputState.up||t.inputState.right||t.inputState.down||t.inputState.left}window.addEventListener("keydown",(function(e){switch(l(),e.key){case"ArrowLeft":t.inputState.left=!0;break;case"ArrowRight":t.inputState.right=!0;break;case"ArrowUp":t.inputState.up=!0;break;case"ArrowDown":t.inputState.down=!0}})),window.addEventListener("keyup",(function(e){switch(e.key){case"ArrowLeft":t.inputState.left=!1;break;case"ArrowRight":t.inputState.right=!1;break;case"ArrowUp":t.inputState.up=!1;break;case"ArrowDown":t.inputState.down=!1}})),t.addEventListeners=function(e){e.addEventListener("mousedown",u,!1),e.addEventListener("mousemove",d,!1),e.addEventListener("mouseup",s,!1),e.addEventListener("touchstart",i,{passive:!1}),e.addEventListener("touchend",s,{passive:!1}),e.addEventListener("touchmove",m,{passive:!1}),e.addEventListener("touchcancel",f,{passive:!1})},t.userHasInteracted=function(){return o},t.inputState={left:!1,right:!1,up:!1,down:!1},t.resetInput=function(){t.inputState.left=!1,t.inputState.right=!1,t.inputState.up=!1,t.inputState.down=!1},t.anyInputPressed=v},982:(e,t)=>{"use strict";function a(e){for(var t=0,a=0;0===t;)t=e();for(;0===a;)a=e();var r=Math.sqrt(-2*Math.log(t)),n=2*Math.PI*a;return r*Math.cos(n)}Object.defineProperty(t,"__esModule",{value:!0}),t.randomNormals=t.randomNormalWithMean=t.randomSign=t.randomFloatBetween=t.lerpVec3=t.lerp=t.easeOutBack=t.clamp=void 0,t.clamp=function(e,t,a){return Math.min(Math.max(e,t),a)},t.easeOutBack=function(e){var t=1.70158;return 1+2.70158*Math.pow(e-1,3)+t*Math.pow(e-1,2)},t.lerp=function(e,t,a){return e*(1-a)+t*a},t.lerpVec3=function(e,t,a,r){var n=t[0],o=t[1],i=t[2];return e[0]=n+r*(a[0]-n),e[1]=o+r*(a[1]-o),e[2]=i+r*(a[2]-i),e},t.randomFloatBetween=function(e,t){return Math.random()*(t-e)+e},t.randomSign=function(){return Math.random()<.5?-1:1},t.randomNormalWithMean=function(e,t){return Math.abs(a(Math.random)*t+e)},t.randomNormals=a},749:(e,t)=>{"use strict";function a(e,t,a){var r=e.createShader(t);if(e.shaderSource(r,a),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r));return r}Object.defineProperty(t,"__esModule",{value:!0}),t.loadTexture=t.configureBuffer=t.compiledProgram=void 0,t.compiledProgram=function(e,t,r){return function(e,t,a){var r=e.createProgram();if(e.attachShader(r,t),e.attachShader(r,a),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS))throw new Error(e.getProgramInfoLog(r));return r}(e,a(e,e.VERTEX_SHADER,t),a(e,e.FRAGMENT_SHADER,r))},t.configureBuffer=function(e,t,a,r,n,o){var i=t.attributes[o];void 0===i&&console.warn("No attribute location for "+o+"!"),e.enableVertexAttribArray(i),e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferData(e.ARRAY_BUFFER,r,e.STATIC_DRAW),e.vertexAttribPointer(i,n,e.FLOAT,!1,0,0)},t.loadTexture=function(e,t){var a=e.createTexture();e.bindTexture(e.TEXTURE_2D,a);var r=e.RGBA,n=e.RGBA,o=e.UNSIGNED_BYTE,i=new Uint8Array([0,0,255,255]);e.texImage2D(e.TEXTURE_2D,0,r,1,1,0,n,o,i);var u=new Image;return u.onload=function(){e.bindTexture(e.TEXTURE_2D,a),e.texImage2D(e.TEXTURE_2D,0,r,n,o,u),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST)},u.src=t,a}},943:e=>{e.exports={sourceCode:"#version 100\n#define A 75\n#define B 3.14159\n#define C 3.\nprecision highp float;precision highp int;uniform vec2 D;uniform vec4 E[A];uniform vec4 F[A];uniform vec4 G;uniform float H;uniform float I;uniform bool J;const float K=.025;const float L=.00001;const float M=.001;const float N=.12;const vec4 O=vec4(1.);float P(vec2 Q,float R){return length(Q)-R;}float S(vec2 T){return fract(sin(dot(T,vec2(12.9898,78.233)))*43758.5453);}float U(vec2 V,float W){float X=length(V);float Y=.02/X;Y*=smoothstep(1.,.1,X);return Y;}vec3 Z(vec2 V){vec3 a=vec3(0);vec2 b=fract(V)-.5;vec2 c=floor(V);float d=H/1000.;for(int e=-1;e<=1;e++){for(int f=-1;f<=1;f++){vec2 g=vec2(f,e);float h=S(c+g);float i=fract(h*345.21);float X=U(b-g-vec2(h,fract(h*10.)-.5),smoothstep(.9,1.,i)*.6);vec3 j=sin(vec3(.2,.3,.9)*fract(h*2345.6)*B*4.)*.5+.5;j=j*vec3(1.,0.5,1.+i);X*=sin(d*3.+h*B*2.)*.5+1.;a+=X*i*j;}}return a;}float k(in vec2 Q,in vec2 l){vec2 X=abs(Q)-l;return length(max(X,0.))+min(max(X.x,X.y),0.);}float m(float n,float o,float d){return n*(1.-d)+o*d;}float p(float q,float r){return min(q,r);}float s(float f,float t){float X=step(0.,f+t*.5)-step(0.,f-t*.5);return 1.-clamp(X,0.,1.);}float u(float f,float t,float v){float X=smoothstep(-v,f-t*.5-v,f);float w=smoothstep(t*.5+v,f+t*.5+v,f);X=clamp(X,0.,1.);w=clamp(w,0.,1.);return p(X,w);}float x(float y,float l,float z){float AA=max(z-abs(y-l),0.)/z;return min(y,l)-AA*AA*z*(1./4.);}vec4 AB(vec4 AC,float AD,vec4 AE){return mix(AE,AC,AD);}vec3 AF(in float d,in vec3 y,in vec3 l,in vec3 AG,in vec3 X){return y+l*cos(6.28318*(AG*d+X));}void main(){float AH=max(log(E[0].z/.1),1.5);vec2 AI=(gl_FragCoord.xy-.5*D)/min(D.x,D.y)*AH;float AJ=abs(cos(sin((AI.x+AI.y*5.)+H/1000.)))+atan(AI.x*AI.y);float d=mod(H/10000.,100000.);vec4 AK=vec4(AF(AJ,vec3(0.025,0.025,0.1),vec3(0.025,0.025,0.1),vec3(1.,1.,1.),vec3(0.,0.1,0.2)),1.);vec4 AL=vec4(AF(AJ,vec3(0.5,0.5,1.),vec3(0.5,0.5,1.),vec3(0.5,0.5,1.),vec3(0.4,0.3,0.2)),1.);vec4 j=AK;float AM=step(I,(AI+G.xy).y);float AN=step(I,(AI+G.xy).x);float AO=step(-I,(AI+G.xy).y);float AP=step(-I,(AI+G.xy).x);j=mix(j,AL,AM);j=mix(j,AL,AN);j=mix(AL,j,AO);j=mix(AL,j,AP);for(float AQ=0.;AQ<1.;AQ+=1./C){vec2 AR=vec2(AI);float AS=mix(10.,0.5,AQ);AR+=G.xy*AQ;j+=vec4(Z(AR*AS+AQ*25.),1.);}float AT=k(-AI-G.xy,vec2(I,I));float AU=u(AT,.01,L);j=AB(j,AU,O);float X=999.;for(int AQ=0;AQ{e.exports={sourceCode:"#version 100\nattribute vec2 aSquarePosition;void main(){gl_Position=vec4(aSquarePosition.x,aSquarePosition.y,0.,1.);}",uniforms:{},consts:{}}}},t={};(function a(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,a),o.exports})(607)})();0
be the biggest
level 1 of 7
audio on