diff --git a/docs/main.js b/docs/main.js index fdb7517..0f289b2 100644 --- a/docs/main.js +++ b/docs/main.js @@ -1,2 +1,2 @@ /*! For license information please see main.js.LICENSE.txt */ -(()=>{var e={591:e=>{"use strict";e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},577:()=>{},354:()=>{},479:()=>{},498:()=>{}},a={};function t(r){var n=a[r];if(void 0!==n)return n.exports;var i=a[r]={exports:{}};return e[r](i,i.exports,t),i.exports}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e=null;"undefined"!=typeof WebSocket?e=WebSocket:"undefined"!=typeof MozWebSocket?e=MozWebSocket:void 0!==t.g?e=t.g.WebSocket||t.g.MozWebSocket:"undefined"!=typeof window?e=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(e=self.WebSocket||self.MozWebSocket);const a=e;function r(e){for(var a={$:"Nil"},t=e.length-1;t>=0;t--)a={$:"Cons",head:BigInt(e.charCodeAt(t)),tail:a};return a}function n(e,a,t){for(;;){var r=a;switch(r.$){case"Leaf":var n={$:"None"};break;case"Node":var i=t;switch(i.$){case"E":n=r.val;break;case"I":a=r.rgt,t=i.tail;continue;case"O":a=r.lft,t=i.tail;continue}}return n}}function i(e,a,t,r){var n=a;switch(n.$){case"Leaf":var s=t;switch(s.$){case"E":var o={$:"Node"},c={$:"Some"},v=r;c.value=v,o.val=c,o.lft={$:"Leaf"},o.rgt={$:"Leaf"};break;case"I":(o={$:"Node"}).val={$:"None"},o.lft={$:"Leaf"};var u=i(e,{$:"Leaf"},s.tail,r);o.rgt=u;break;case"O":(o={$:"Node"}).val={$:"None"};var l=i(e,{$:"Leaf"},s.tail,r);o.lft=l,o.rgt={$:"Leaf"}}break;case"Node":var d=t;switch(d.$){case"E":o={$:"Node"};var h={$:"Some"},f=r;h.value=f,o.val=h;var $=n.lft;o.lft=$;var b=n.rgt;o.rgt=b;break;case"I":o={$:"Node"};var _=n.val;o.val=_;var y=n.lft;o.lft=y;var g=i(e,n.rgt,d.tail,r);o.rgt=g;break;case"O":o={$:"Node"};var p=n.val;o.val=p;var k=i(e,n.lft,d.tail,r);o.lft=k;var m=n.rgt;o.rgt=m}}return o}function s(e,a){switch(e.$){case"False":var t={$:"False"};break;case"True":t=a}return t}function o(e){var a=e;switch(a.$){case"False":var t=function(e){if("False"===e.$)var a={$:"True"};else a={$:"False"};return a};break;case"True":t=function(e){if("True"===e.$)var a={$:"True"};else a={$:"False"};return a};break;default:t=null(a)}return t}function c(e,a){switch(e.$){case"False":var t=a;break;case"True":t={$:"True"}}return t}function v(e){if(0n===e)var a={$:"False"};else a={$:"True"};return a}function u(e,a){var t=e,r=a;return BigInt.asUintN(64,t===r)}function l(e,a){switch(v(u(e,a)).$){case"True":var t={$:"EQ"};break;case"False":var r=e,n=a;switch(v(BigInt.asUintN(64,rr))}function k(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t>=r))}function m(e){var a=e;return v(BigInt.asUintN(64,0===a))}function w(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t<=r))}function x(e,a){var t=e,r=a;switch(v(BigInt.asUintN(64,t<=r)).$){case"True":var n=e;break;case"False":n=a}return n}function N(e,a){return e*a}function S(e){switch(m(e).$){case"True":var a=e;break;case"False":a=function(e,a,t){for(;;){var r=t;if(0n===r)var n=a;else{var i=a,s=y(e,a),o=y(_(i,s),2);switch(g(a,o).$){case"True":n=o;break;case"False":var c=r;a=o,t=BigInt.asUintN(64,c-1n);continue}}return n}}(e,y(e,2),10n)}return a}function B(e,a){return e-a}var M=0n,P=2n;function F(e,a,t){var r=a;switch(r.$){case"Cons":var n={$:"Cons"},i=r.head;n.head=i;var s=F(e,r.tail,t);n.tail=s;break;case"Nil":n=t}return n}function T(e,a,t,r,n){var i=a;switch(i.$){case"Cons":var s=n(i.head)(T(e,i.tail,t,r,n));break;case"Nil":s=r}return s}function C(e,a,t,r){var n=a;switch(n.$){case"Cons":switch(r(t)(n.head).$){case"False":var i={$:"Cons"},s=n.head;i.head=s;var o=C(e,n.tail,t,r);i.tail=o;break;case"True":(i={$:"Cons"}).head=t;var c={$:"Cons"},v=n.head;c.head=v;var u=n.tail;c.tail=u,i.tail=c}break;case"Nil":(i={$:"Cons"}).head=t,i.tail={$:"Nil"}}return i}function I(e,a,t){var r=a;switch(r.$){case"Cons":var n=C(e,I(e,r.tail,t),r.head,t);break;case"Nil":n={$:"Nil"}}return n}function U(e,a,t,r){var n=t;switch(n.$){case"Cons":var i={$:"Cons"},s=r(n.head);i.head=s;var o=U(e,a,n.tail,r);i.tail=o;break;case"Nil":i={$:"Nil"}}return i}function E(e,a,t,r){var n=t;switch(n.$){case"Cons":var i=r;switch(i.$){case"Cons":var s={$:"Cons"},o={$:"Pair"},c=n.head;o.fst=c;var v=i.head;o.snd=v,s.head=o;var u=E(e,a,n.tail,i.tail);s.tail=u;break;case"Nil":s={$:"Nil"}}break;case"Nil":s={$:"Nil"}}return s}var A=1n,L=3n;function G(e){var a=new Map;return a.set(-1n,{$:"None"}),a}function O(e,a){return v(u(e,a))}function R(e,a,t,r,n,i){return function(e,a,t,r,n,i){for(;;){switch(O(r,0n).$){case"False":var s=t,o=r,c=s.has(o)?s.get(o):s.get(-1n),v=s,u=c;switch(u.$){case"None":var l=r;t=v,r=BigInt.asUintN(64,l-1n);continue;case"Some":var d=r,h=r;t=v,r=BigInt.asUintN(64,d-1n),n=i(n)(h)(u.value);continue}break;case"True":var f=t,$=f.has(0n)?f.get(0n):f.get(-1n);switch($.$){case"None":var b=n;break;case"Some":b=i(n)(0n)($.value)}}return b}}(0,0,t,r,n,i)}function V(e,a,t){var r=a,n=t;return r.has(n)?r.get(n):r.get(-1n)}function Z(e,a,t,r){var n=a,i=t,s={$:"Some"},o=r;s.value=o,n.has(i)?n.get(i):n.get(-1n);var c=n;return n.set(i,s),c}function j(e,a,t){return function(e,a,t,r){for(;;){switch(O(t,0n).$){case"False":var n=a,i=t,s=n.has(i)?n.get(i):n.get(-1n),o=n,c=s;switch(c.$){case"None":var v=t;a=o,t=BigInt.asUintN(64,v-1n);continue;case"Some":var u=e,l=o,d=t,h=BigInt.asUintN(64,d-1n),f={$:"Cons"},$=c.value;f.head=$;var b=r;f.tail=b,e=u,a=l,t=h,r=f;continue}break;case"True":var _=a,y=_.has(0n)?_.get(0n):_.get(-1n);switch(y.$){case"None":var g=r;break;case"Some":g={$:"Cons"};var p=y.value;g.head=p;var k=r;g.tail=k}}return g}}(e,a,t,{$:"Nil"})}function D(e,a,t,r){return(0,a.compare)(t)(r)}function q(e,a,t,r,n,i){for(;;){var s=t;switch(s.$){case"Leaf":var o=n;break;case"Node":var c=q(e,a,s.left,r,n,i),v=i(s.key_value)(c);t=s.right,n=v;continue}return o}}function K(e,a,t,r){var n=r;switch(n.$){case"Leaf":var i=function(e){return{$:"None"}};break;case"Node":var s=n.key_value;i=function(r){switch(D(0,t,r,s.fst).$){case"EQ":var i={$:"Some"},o=s.snd;i.value=o;break;case"GT":i=K(e,a,t,n.right)(r);break;case"LT":i=K(e,a,t,n.left)(r)}return i}}return i}function W(e,a,t,r){var n=r;switch(n.$){case"Leaf":var i=function(e){var a={$:"Pair"},t={$:"Node"},r=e;return t.key_value=r,t.balance={$:"Zero"},t.left={$:"Leaf"},t.right={$:"Leaf"},a.fst=t,a.snd={$:"True"},a};break;case"Node":var s=n.key_value;i=function(r){var i=r;switch(D(0,t,i.fst,s.fst).$){case"EQ":var o={$:"Pair"},c={$:"Node"},v={$:"Pair"},u=i.fst;v.fst=u;var l=i.snd;v.snd=l,c.key_value=v;var d=n.balance;c.balance=d;var h=n.left;c.left=h;var f=n.right;c.right=f,o.fst=c,o.snd={$:"False"};break;case"GT":var $=W(e,a,t,n.right),b={$:"Pair"},_=i.fst;b.fst=_;var y=i.snd;b.snd=y;var g=$(b);switch(g.snd.$){case"True":switch(n.balance.$){case"PlusOne":var p={$:"Node"},k={$:"Pair"},m=s.fst;k.fst=m;var w=s.snd;k.snd=w,p.key_value=k,p.balance={$:"PlusOne"};var x=n.left;p.left=x;var N=g.fst;p.right=N,o=function(e,a,t){var r=t;switch(r.$){case"Leaf":(c={$:"Pair"}).fst={$:"Leaf"},c.snd={$:"False"};break;case"Node":var n=r.balance;if("PlusOne"===n.$){var i=r.right;if("Node"===i.$){var s=i.balance;switch(s.$){case"MinusOne":var o=i.left;if("Node"===o.$)switch(o.balance.$){case"MinusOne":var c={$:"Pair"},v={$:"Node"},u=o.key_value;v.key_value=u,v.balance={$:"Zero"};var l={$:"Node"},d=r.key_value;l.key_value=d,l.balance={$:"Zero"};var h=r.left;l.left=h;var f=o.left;l.right=f,v.left=l;var $={$:"Node"},b=i.key_value;$.key_value=b,$.balance={$:"PlusOne"};var _=o.right;$.left=_;var y=i.right;$.right=y,v.right=$,c.fst=v,c.snd={$:"False"};break;case"PlusOne":c={$:"Pair"};var g={$:"Node"},p=o.key_value;g.key_value=p,g.balance={$:"Zero"};var k={$:"Node"},m=r.key_value;k.key_value=m,k.balance={$:"MinusOne"};var w=r.left;k.left=w;var x=o.left;k.right=x,g.left=k;var N={$:"Node"},S=i.key_value;N.key_value=S,N.balance={$:"Zero"};var B=o.right;N.left=B;var M=i.right;N.right=M,g.right=N,c.fst=g,c.snd={$:"False"};break;case"Zero":c={$:"Pair"};var P={$:"Node"},F=o.key_value;P.key_value=F,P.balance={$:"Zero"};var T={$:"Node"},C=r.key_value;T.key_value=C,T.balance={$:"Zero"};var I=r.left;T.left=I;var U=o.left;T.right=U,P.left=T;var E={$:"Node"},A=i.key_value;E.key_value=A,E.balance={$:"Zero"};var L=o.right;E.left=L;var G=i.right;E.right=G,P.right=E,c.fst=P,c.snd={$:"False"}}else{c={$:"Pair"};var O={$:"Node"},R=r.key_value;O.key_value=R,O.balance={$:"PlusOne"};var V=r.left;O.left=V;var Z={$:"Node"},j=i.key_value;Z.key_value=j,Z.balance={$:"MinusOne"};var D=o;Z.left=D;var q=i.right;Z.right=q,O.right=Z,c.fst=O,c.snd={$:"False"}}break;case"PlusOne":c={$:"Pair"};var K={$:"Node"},W=i.key_value;K.key_value=W,K.balance={$:"Zero"};var H={$:"Node"},Q=r.key_value;H.key_value=Q,H.balance={$:"Zero"};var z=r.left;H.left=z;var Y=i.left;H.right=Y,K.left=H;var X=i.right;K.right=X,c.fst=K,c.snd={$:"False"};break;case"Zero":c={$:"Pair"};var J={$:"Node"},ee=i.key_value;J.key_value=ee,J.balance={$:"MinusOne"};var ae={$:"Node"},te=r.key_value;ae.key_value=te,ae.balance={$:"PlusOne"};var re=r.left;ae.left=re;var ne=i.left;ae.right=ne,J.left=ae;var ie=i.right;J.right=ie,c.fst=J,c.snd={$:"True"};break;default:c=null(s)(i.left)(i.right)}}else{c={$:"Pair"};var se={$:"Node"},oe=r.key_value;se.key_value=oe,se.balance={$:"PlusOne"};var ce=r.left;se.left=ce;var ve=i;se.right=ve,c.fst=se,c.snd={$:"False"}}}else{c={$:"Pair"};var ue={$:"Node"},le=r.key_value;ue.key_value=le;var de=n;ue.balance=de;var he=r.left;ue.left=he;var fe=r.right;ue.right=fe,c.fst=ue,c.snd={$:"False"}}break;default:c=null(r)}return c}(0,0,p);break;case"Zero":o={$:"Pair"};var S={$:"Node"},B={$:"Pair"},M=s.fst;B.fst=M;var P=s.snd;B.snd=P,S.key_value=B,S.balance={$:"PlusOne"};var F=n.left;S.left=F;var T=g.fst;S.right=T,o.fst=S,o.snd={$:"True"};break;case"MinusOne":o={$:"Pair"};var C={$:"Node"},I={$:"Pair"},U=s.fst;I.fst=U;var E=s.snd;I.snd=E,C.key_value=I,C.balance={$:"Zero"};var A=n.left;C.left=A;var L=g.fst;C.right=L,o.fst=C,o.snd={$:"False"}}break;case"False":o={$:"Pair"};var G={$:"Node"},O={$:"Pair"},R=s.fst;O.fst=R;var V=s.snd;O.snd=V,G.key_value=O;var Z=n.balance;G.balance=Z;var j=n.left;G.left=j;var q=g.fst;G.right=q,o.fst=G,o.snd={$:"False"}}break;case"LT":var K=W(e,a,t,n.left),H={$:"Pair"},Q=i.fst;H.fst=Q;var z=i.snd;H.snd=z;var Y=K(H);switch(Y.snd.$){case"True":switch(n.balance.$){case"PlusOne":o={$:"Pair"};var X={$:"Node"},J={$:"Pair"},ee=s.fst;J.fst=ee;var ae=s.snd;J.snd=ae,X.key_value=J,X.balance={$:"Zero"};var te=Y.fst;X.left=te;var re=n.right;X.right=re,o.fst=X,o.snd={$:"False"};break;case"Zero":o={$:"Pair"};var ne={$:"Node"},ie={$:"Pair"},se=s.fst;ie.fst=se;var oe=s.snd;ie.snd=oe,ne.key_value=ie,ne.balance={$:"MinusOne"};var ce=Y.fst;ne.left=ce;var ve=n.right;ne.right=ve,o.fst=ne,o.snd={$:"True"};break;case"MinusOne":var ue={$:"Node"},le={$:"Pair"},de=s.fst;le.fst=de;var he=s.snd;le.snd=he,ue.key_value=le,ue.balance={$:"MinusOne"};var fe=Y.fst;ue.left=fe;var $e=n.right;ue.right=$e,o=function(e,a,t){var r=t;switch(r.$){case"Leaf":(o={$:"Pair"}).fst={$:"Leaf"},o.snd={$:"False"};break;case"Node":var n=r.balance;if("MinusOne"===n.$){var i=r.left;if("Node"===i.$){var s=i.balance;switch(s.$){case"MinusOne":var o={$:"Pair"},c={$:"Node"},v=i.key_value;c.key_value=v,c.balance={$:"Zero"};var u=i.left;c.left=u;var l={$:"Node"},d=r.key_value;l.key_value=d,l.balance={$:"Zero"};var h=i.right;l.left=h;var f=r.right;l.right=f,c.right=l,o.fst=c,o.snd={$:"False"};break;case"PlusOne":var $=i.right;if("Node"===$.$)switch($.balance.$){case"MinusOne":o={$:"Pair"};var b={$:"Node"},_=$.key_value;b.key_value=_,b.balance={$:"Zero"};var y={$:"Node"},g=i.key_value;y.key_value=g,y.balance={$:"Zero"};var p=i.left;y.left=p;var k=$.left;y.right=k,b.left=y;var m={$:"Node"},w=r.key_value;m.key_value=w,m.balance={$:"PlusOne"};var x=$.right;m.left=x;var N=r.right;m.right=N,b.right=m,o.fst=b,o.snd={$:"False"};break;case"PlusOne":o={$:"Pair"};var S={$:"Node"},B=$.key_value;S.key_value=B,S.balance={$:"Zero"};var M={$:"Node"},P=i.key_value;M.key_value=P,M.balance={$:"MinusOne"};var F=i.left;M.left=F;var T=$.left;M.right=T,S.left=M;var C={$:"Node"},I=r.key_value;C.key_value=I,C.balance={$:"Zero"};var U=$.right;C.left=U;var E=r.right;C.right=E,S.right=C,o.fst=S,o.snd={$:"False"};break;case"Zero":o={$:"Pair"};var A={$:"Node"},L=$.key_value;A.key_value=L,A.balance={$:"Zero"};var G={$:"Node"},O=i.key_value;G.key_value=O,G.balance={$:"Zero"};var R=i.left;G.left=R;var V=$.left;G.right=V,A.left=G;var Z={$:"Node"},j=r.key_value;Z.key_value=j,Z.balance={$:"Zero"};var D=$.right;Z.left=D;var q=r.right;Z.right=q,A.right=Z,o.fst=A,o.snd={$:"False"}}else{o={$:"Pair"};var K={$:"Node"},W=r.key_value;K.key_value=W,K.balance={$:"MinusOne"};var H={$:"Node"},Q=i.key_value;H.key_value=Q,H.balance={$:"PlusOne"};var z=i.left;H.left=z;var Y=$;H.right=Y,K.left=H;var X=r.right;K.right=X,o.fst=K,o.snd={$:"False"}}break;case"Zero":o={$:"Pair"};var J={$:"Node"},ee=i.key_value;J.key_value=ee,J.balance={$:"PlusOne"};var ae=i.left;J.left=ae;var te={$:"Node"},re=r.key_value;te.key_value=re,te.balance={$:"MinusOne"};var ne=i.right;te.left=ne;var ie=r.right;te.right=ie,J.right=te,o.fst=J,o.snd={$:"True"};break;default:o=null(s)(i.left)(i.right)(r.right)}}else{o={$:"Pair"};var se={$:"Node"},oe=r.key_value;se.key_value=oe,se.balance={$:"MinusOne"};var ce=i;se.left=ce;var ve=r.right;se.right=ve,o.fst=se,o.snd={$:"False"}}}else{o={$:"Pair"};var ue={$:"Node"},le=r.key_value;ue.key_value=le;var de=n;ue.balance=de;var he=r.left;ue.left=he;var fe=r.right;ue.right=fe,o.fst=ue,o.snd={$:"False"}}break;default:o=null(r)}return o}(0,0,ue)}break;case"False":o={$:"Pair"};var be={$:"Node"},_e={$:"Pair"},ye=s.fst;_e.fst=ye;var ge=s.snd;_e.snd=ge,be.key_value=_e;var pe=n.balance;be.balance=pe;var ke=Y.fst;be.left=ke;var me=n.right;be.right=me,o.fst=be,o.snd={$:"False"}}}return o}}return i}function H(e,a,t,r,n){return function(e,a,t){return t.fst}(0,0,W(e,a,t,r)(n))}function Q(e,a,t){var r=t;switch(r.$){case"Leaf":var n={$:"Nil"};break;case"Node":var i=r.key_value,s=Q(e,a,r.left),o=Q(e,a,r.right),c=e,v=s,u={$:"Cons"},l=i.fst;u.head=l;var d=o;u.tail=d,n=F(c,v,u)}return n}!function(){var e=new Map;e.set(1n,{$:"None"});var a={$:"Some",value:10n};e.set(2n,a);var t={$:"Some",value:20n};e.set(5n,t),e.set(-1n,{$:"None"})}(),function(){var e=new Map,a={$:"Some",value:42n};e.set(0n,a),e.set(1n,{$:"None"});var t={$:"Some",value:10n};e.set(2n,t);var r={$:"Some",value:20n};e.set(5n,r),e.set(-1n,{$:"None"})}(),function(){var e=new Map;e.set(1n,{$:"None"});var a={$:"Some",value:10n};e.set(2n,a);var t={$:"Some",value:20n};e.set(5n,t),e.set(-1n,{$:"None"})}();var z=101n,Y=null,X=function(e){return function(a){return function(e,a){for(;;){var t=e;switch(t.$){case"Cons":var r=a;switch(r.$){case"Cons":switch(D(0,h,t.head,r.head).$){case"LT":var n={$:"LT"};break;case"EQ":e=t.tail,a=r.tail;continue;case"GT":n={$:"GT"}}break;case"Nil":n={$:"GT"}}break;case"Nil":switch(a.$){case"Cons":n={$:"LT"};break;case"Nil":n={$:"EQ"}}}return n}}(e,a)}},J=function(){var e={$:"Ord"},a=X;return e.compare=a,e}(),ee=J;function ae(e,a){for(;;){var t=e;switch(t.$){case"Cons":var r=a;switch(r.$){case"Cons":switch(f(t.head,r.head).$){case"True":e=t.tail,a=r.tail;continue;case"False":var n={$:"False"}}break;case"Nil":n={$:"False"}}break;case"Nil":switch(a.$){case"Cons":n={$:"False"};break;case"Nil":n={$:"True"}}}return n}}var te=50n;function re(e,a){var t=e,r=a;return BigInt.asUintN(64,t+r)}function ne(e,a){var t=e,r=a;return BigInt.asUintN(64,t/r)}function ie(e){switch(e.$){case"False":var a=0n;break;case"True":a=1n}return a}function se(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t>r))}function oe(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t>=r))}function ce(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t=r)).$){case"True":var n=e;break;case"False":n=a}return n}(i.cached_tick,r),o=function(e,a,t,r){var n=t;switch(n.$){case"None":var i={$:"Some"},s={$:"StateNode"},o=r;s.tick=o,s.keep=0n,s.life=0n;var c=a;s.state=c,s.older={$:"None"},i.value=s;break;case"Some":var v=function(e,a){return a.keep}(0,n.value);i=st(0,a,n.value,r,v)}return i}(0,n,i.state_logs,r),c={$:"Mach"},u=i.ticks_per_second;c.ticks_per_second=u;var l=i.genesis_tick;c.genesis_tick=l;var d=s;c.cached_tick=d;var h=o;c.state_logs=h;var f=i.action_logs;c.action_logs=f;var $=i.action_eq;return c.action_eq=$,c}function dt(e,a,t,r){var n=t,i=function(e,a){var t=e,r=a;switch(v(BigInt.asUintN(64,t<=r)).$){case"True":var n=e;break;case"False":n=a}return n}(r,n.genesis_tick),s={$:"Mach"},o=n.ticks_per_second;s.ticks_per_second=o;var c=i;s.genesis_tick=c;var u=n.cached_tick;s.cached_tick=u;var l=n.state_logs;s.state_logs=l;var d=n.action_logs;s.action_logs=d;var h=n.action_eq;return s.action_eq=h,s}var ht=function(){var e={$:"Game"},a=Pa;e.init=a;var t=Qa;e.when=t;var r=Ia;return e.tick=r,e}(),ft=ht;function $t(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(0===e.length)return{value:null,bytesRead:0};switch(e[a]){case Number(M):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(M))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));return a+=8,{value:{$:"KeyEvent",time:t,pid:r,key:{$:"Cons",head:BigInt(e[a]),tail:{$:"Nil"}},pressed:0!==e[a+=1]?{$:"True"}:{$:"False"}},bytesRead:a+=1}}(e,a);case Number(A):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(A))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0)),n=function(e){return{value:0===e[arguments.length>1&&void 0!==arguments[1]?arguments[1]:0]?{$:"LeftButton"}:{$:"RightButton"},bytesRead:1}}(e,a+=8),i=bt(e,a+=n.bytesRead),s=bt(e,a+=i.bytesRead);return a+=s.bytesRead,{value:{$:"MouseClick",time:t,pid:r,click:n.value,x:i.value,y:s.value},bytesRead:a}}(e,a);case Number(P):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(P))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var n=BigInt(e[a]),i=0!==e[a+=1],s=bt(e,a+=1),o=bt(e,a+=s.bytesRead);return a+=o.bytesRead,{value:{$:"KeyMouse",time:t,pid:r,key:{$:"Cons",head:n,tail:{$:"Nil"}},pressed:i?{$:"True"}:{$:"False"},x:s.value,y:o.value},bytesRead:a}}(e,a);case Number(L):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(L))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0)),n=bt(e,a+=8),i=bt(e,a+=n.bytesRead);return a+=i.bytesRead,{value:{$:"MouseMove",time:t,pid:r,x:n.value,y:i.value},bytesRead:a}}(e,a);case Number(z):return function(e){var a=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[a]===Number(z)?function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(z))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0)),n=function(e){for(var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=[];a=0;n--)r={$:"Cons",head:BigInt(t[n]),tail:r};return{value:r,bytesRead:t.length}}(e,a+=8);return a+=n.bytesRead,{value:{$:"SetNick",time:t,pid:r,nick:n.value},bytesRead:a}}(e,a):{value:null,bytesRead:0}}(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);return null===a.value?{value:null,bytesRead:0}:{value:{$:"ActionEvent",action:a.value},bytesRead:a.bytesRead}}(e,a);default:return{value:null,bytesRead:0}}}function bt(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return{value:new DataView(e instanceof ArrayBuffer?e:e.buffer).getFloat64(a,!0),bytesRead:8}}function _t(e){return function(e){if(Array.isArray(e))return yt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return yt(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?yt(e,a):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function yt(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,o=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return s=e.done,e},e:function(e){o=!0,i=e},f:function(){try{s||null==t.return||t.return()}finally{if(o)throw i}}}}function wt(e,a){if(e){if("string"==typeof e)return xt(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?xt(e,a):void 0}}function xt(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t4&&void 0!==arguments[4]?arguments[4]:16,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"black";e.font="".concat(n,"px Arial"),e.fillStyle=i,e.fillText(a.toString(),t,r)}(c,s,o.x,o.y)}}var St=50;function Bt(e,a,t,r,n,i,s){if((0===e.button||2===e.button)&&e.target instanceof HTMLCanvasElement){var o=a.time()+St,c={$:"MouseClick",time:o,pid:t,click:0===e.button?{$:"LeftButton"}:{$:"RightButton"},x:Number((e.clientX-e.target.offsetLeft).toFixed(2)),y:Number((e.clientY-e.target.offsetTop).toFixed(2))};a.send(r,gt(c));var v=s(BigInt(o))(c);return i(n)(v)}return n}var Mt={},Pt=0,Ft=0;function Tt(e,a,t,r){e.target instanceof HTMLCanvasElement&&(Pt=e.clientX-e.target.offsetLeft,Ft=e.clientY-e.target.offsetTop)}function Ct(e,a,t,r,n,i,s){var o=a.time()+St,c="keydown"===e.type,v=e.key.toUpperCase().charCodeAt(0);if(Mt[v]!==c){Mt[v]=c;var u={$:"KeyMouse",time:o,pid:t,key:{$:"Cons",head:v,tail:{$:"Nil"}},pressed:1==c?{$:"True"}:{$:"False"},x:Number(Pt.toFixed(2)),y:Number(Ft.toFixed(2))};a.send(r,gt(u));var l=s(BigInt(o))(u);return i(n)(l)}return n}function It(e){return It="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},It(e)}function Ut(){Ut=function(){return a};var e,a={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,a,t){e[a]=t.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function v(e,a,t){return Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[a]}try{v({},"")}catch(e){v=function(e,a,t){return e[a]=t}}function u(e,a,t,r){var i=a&&a.prototype instanceof _?a:_,s=Object.create(i.prototype),o=new F(r||[]);return n(s,"_invoke",{value:S(e,t,o)}),s}function l(e,a,t){try{return{type:"normal",arg:e.call(a,t)}}catch(e){return{type:"throw",arg:e}}}a.wrap=u;var d="suspendedStart",h="suspendedYield",f="executing",$="completed",b={};function _(){}function y(){}function g(){}var p={};v(p,s,(function(){return this}));var k=Object.getPrototypeOf,m=k&&k(k(T([])));m&&m!==t&&r.call(m,s)&&(p=m);var w=g.prototype=_.prototype=Object.create(p);function x(e){["next","throw","return"].forEach((function(a){v(e,a,(function(e){return this._invoke(a,e)}))}))}function N(e,a){function t(n,i,s,o){var c=l(e[n],e,i);if("throw"!==c.type){var v=c.arg,u=v.value;return u&&"object"==It(u)&&r.call(u,"__await")?a.resolve(u.__await).then((function(e){t("next",e,s,o)}),(function(e){t("throw",e,s,o)})):a.resolve(u).then((function(e){v.value=e,s(v)}),(function(e){return t("throw",e,s,o)}))}o(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new a((function(a,n){t(e,r,a,n)}))}return i=i?i.then(n,n):n()}})}function S(a,t,r){var n=d;return function(i,s){if(n===f)throw Error("Generator is already running");if(n===$){if("throw"===i)throw s;return{value:e,done:!0}}for(r.method=i,r.arg=s;;){var o=r.delegate;if(o){var c=B(o,r);if(c){if(c===b)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===d)throw n=$,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=f;var v=l(a,t,r);if("normal"===v.type){if(n=r.done?$:h,v.arg===b)continue;return{value:v.arg,done:r.done}}"throw"===v.type&&(n=$,r.method="throw",r.arg=v.arg)}}}function B(a,t){var r=t.method,n=a.iterator[r];if(n===e)return t.delegate=null,"throw"===r&&a.iterator.return&&(t.method="return",t.arg=e,B(a,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),b;var i=l(n,a.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,b;var s=i.arg;return s?s.done?(t[a.resultName]=s.value,t.next=a.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,b):s:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,b)}function M(e){var a={tryLoc:e[0]};1 in e&&(a.catchLoc=e[1]),2 in e&&(a.finallyLoc=e[2],a.afterLoc=e[3]),this.tryEntries.push(a)}function P(e){var a=e.completion||{};a.type="normal",delete a.arg,e.completion=a}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function T(a){if(a||""===a){var t=a[s];if(t)return t.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var n=-1,i=function t(){for(;++n=0;--i){var s=this.tryEntries[i],o=s.completion;if("root"===s.tryLoc)return n("end");if(s.tryLoc<=this.prev){var c=r.call(s,"catchLoc"),v=r.call(s,"finallyLoc");if(c&&v){if(this.prev=0;--t){var n=this.tryEntries[t];if(n.tryLoc<=this.prev&&r.call(n,"finallyLoc")&&this.prev=0;--a){var t=this.tryEntries[a];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),P(t),b}},catch:function(e){for(var a=this.tryEntries.length-1;a>=0;--a){var t=this.tryEntries[a];if(t.tryLoc===e){var r=t.completion;if("throw"===r.type){var n=r.arg;P(t)}return n}}throw Error("illegal catch attempt")},delegateYield:function(a,t,r){return this.delegate={iterator:T(a),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=e),b}},a}function Et(e,a,t,r,n,i,s){try{var o=e[i](s),c=o.value}catch(e){return void t(e)}o.done?a(c):Promise.resolve(c).then(r,n)}function At(e){return function(){var a=this,t=arguments;return new Promise((function(r,n){var i=e.apply(a,t);function s(e){Et(i,r,n,s,o,"next",e)}function o(e){Et(i,r,n,s,o,"throw",e)}s(void 0)}))}}var Lt,Gt=new class{constructor(){this.rooms=new Map,this.server_time_offset=0,this.best_ping=1/0,this.last_ping_time=0}init(e){return new Promise(((t,r)=>{this.ws=new a(e),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{this.sync_time(),t()},this.ws.onerror=e=>r(e),this.ws.onmessage=e=>{const a=e.data;this.handle_message(new Uint8Array(a instanceof ArrayBuffer?a:new ArrayBuffer(0)))}}))}send(e,a){const t=new Uint8Array(7+a.length);t[0]=2,this.write_uint48_be(t,1,e),t.set(a,7),this.ws.send(t)}recv(e,a){return this.rooms.has(e)||(this.rooms.set(e,new Set),this.join_room(e)),this.rooms.get(e).add(a),()=>{this.rooms.get(e).delete(a),0===this.rooms.get(e).size&&(this.rooms.delete(e),this.exit_room(e))}}time(){return Date.now()+this.server_time_offset}handle_message(e){var a;switch(e[0]){case 3:const t=this.read_uint48_be(e,1),r=(this.read_uint48_be(e,7),e.slice(13));null===(a=this.rooms.get(t))||void 0===a||a.forEach((e=>e(r)));break;case 6:this.handle_pong(e)}}join_room(e){const a=new Uint8Array(7);a[0]=0,this.write_uint48_be(a,1,e),this.ws.send(a)}exit_room(e){const a=new Uint8Array(7);a[0]=1,this.write_uint48_be(a,1,e),this.ws.send(a)}sync_time(){const e=new Uint8Array(1);e[0]=5;const a=Date.now();this.ws.send(e),this.last_ping_time=a}handle_pong(e){const a=Date.now(),t=this.read_uint48_be(e,1),r=a-this.last_ping_time;rthis.sync_time()),3e3)}write_uint48_be(e,a,t){e[a]=t/Math.pow(2,40)&255,e[a+1]=t/Math.pow(2,32)&255,e[a+2]=t/Math.pow(2,24)&255,e[a+3]=t/Math.pow(2,16)&255,e[a+4]=t/Math.pow(2,8)&255,e[a+5]=255&t}read_uint48_be(e,a){return e[a]*Math.pow(2,40)+e[a+1]*Math.pow(2,32)+e[a+2]*Math.pow(2,24)+e[a+3]*Math.pow(2,16)+e[a+4]*Math.pow(2,8)+e[a+5]}},Ot=0,Rt=1,Vt=[],Zt=BigInt(50),jt=BigInt(Math.floor(Math.random()*Math.pow(2,4)));console.log("PID is:",jt);var Dt,qt,Kt,Wt=(Dt=Zt,function(e){return function(e,a,t,r){var n={$:"Mach"},i=t;n.ticks_per_second=i,n.genesis_tick=687399551400673280n,n.cached_tick=0n;n.state_logs={$:"None"};n.action_logs={$:"Leaf"};var s=r;return n.action_eq=s,n}(0,0,Dt,e)})((function(e){return function(e){var a=e;switch(a.$){case"ActionEvent":var t=function(e){var t=e;if("ActionEvent"===t.$)var r=function(e,a){var t=e,r=a,n=O(t.time,r.time),i=s(O(t.pid,r.pid),ae(t.nick,r.nick));return s(n,i)}(a.action,t.action);else r={$:"False"};return r};break;case"KeyEvent":t=function(e){var t=e;if("KeyEvent"===t.$)var r=O(a.time,t.time),n=O(a.pid,t.pid),i=s(ae(a.key,t.key),o(a.pressed)(t.pressed)),c=s(n,i),v=s(r,c);else v={$:"False"};return v};break;case"KeyMouse":t=function(e){var t=e;if("KeyMouse"===t.$)var r=O(a.time,t.time),n=O(a.pid,t.pid),i=ae(a.key,t.key),c=o(a.pressed)(t.pressed),v=s(g(a.x,t.x),g(a.y,t.y)),u=s(c,v),l=s(i,u),d=s(n,l),h=s(r,d);else h={$:"False"};return h};break;case"MouseClick":t=function(e){var t=e;if("MouseClick"===t.$)var r=O(a.time,t.time),n=O(a.pid,t.pid),i=function(e){var a=e;switch(a.$){case"LeftButton":var t=function(e){if("LeftButton"===e.$)var a={$:"True"};else a={$:"False"};return a};break;case"RightButton":t=function(e){if("RightButton"===e.$)var a={$:"True"};else a={$:"False"};return a};break;default:t=null(a)}return t}(a.click)(t.click),o=s(g(a.x,t.x),g(a.y,t.y)),c=s(i,o),v=s(n,c),u=s(r,v);else u={$:"False"};return u};break;case"MouseMove":t=function(e){var t=e;if("MouseMove"===t.$)var r=O(a.time,t.time),n=O(a.pid,t.pid),i=s(g(a.x,t.x),g(a.y,t.y)),o=s(n,i),c=s(r,o);else c={$:"False"};return c};break;default:t=null(a)}return t}(e)})),Ht=(Kt=null,function(e){return function(a){return function(e,a,t,r){var n=r,i=ct(0,0,t,n.time);return ut(0,a,function(e,a,t,r){var n=t,i=ot(0,it(0,r,n.state_logs),n.state_logs),s={$:"Mach"},o=n.ticks_per_second;s.ticks_per_second=o;var c=n.genesis_tick;s.genesis_tick=c;var v=n.cached_tick;s.cached_tick=v;var u=i;s.state_logs=u;var l=n.action_logs;s.action_logs=l;var d=n.action_eq;return s.action_eq=d,s}(0,0,function(e,a,t,r){var n=t;switch(ce(r,n.cached_tick).$){case"True":var i={$:"Mach"},s=n.ticks_per_second;i.ticks_per_second=s;var o=n.genesis_tick;i.genesis_tick=o;var c=r;i.cached_tick=c;var v=n.state_logs;i.state_logs=v;var u=n.action_logs;i.action_logs=u;var l=n.action_eq;i.action_eq=l;break;case"False":i={$:"Mach"};var d=n.ticks_per_second;i.ticks_per_second=d;var h=n.genesis_tick;i.genesis_tick=h;var f=n.cached_tick;i.cached_tick=f;var $=n.state_logs;i.state_logs=$;var b=n.action_logs;i.action_logs=b;var _=n.action_eq;i.action_eq=_}return i}(0,0,dt(0,0,t,i),i),i),i,n.action)}(0,Kt,e,a)}}),Qt=(qt=null,function(e){return function(a){return function(t){return function(r){return function(e,a,t,r,n){var i=ct(0,0,t,n),s=function(e,a,t,r){var n=t,i=n.state_logs;switch(i.$){case"None":var s={$:"Pair"},o=function(e,a,t){return t.init}(0,0,r);s.fst=o;var c=n.genesis_tick;s.snd=c;break;case"Some":s={$:"Pair"};var v=rt(0,i.value);s.fst=v;var u=nt(0,i.value);s.snd=u}return s}(0,0,t,r),o=de(i,s.snd);switch(c(se(o,1000000000000n),O(o,0n)).$){case"True":var v={$:"Pair"},u=s.fst;v.fst=u;var l=t;v.snd=l;break;case"False":v=function(e,a,t,r,n,i,s){for(;;){switch(O(i,s).$){case"True":var o={$:"Pair"},c=n;o.fst=c;var v=t;o.snd=v;break;case"False":var u=re(i,1n),l=T(a,za(0,Ja(0,0,t),i),e,n,Xa(0,0,r)),d=Ya(0,0,r)(l);t=lt(0,0,t,i,n),n=d,i=u;continue}return o}}(e,a,t,r,s.fst,s.snd,i)}return v}(qt,e,a,t,r)}}}})(null);function zt(e){return Yt.apply(this,arguments)}function Yt(){return(Yt=At(Ut().mark((function e(a){var t,r,n,i,s;return Ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a.preventDefault(),t=document.getElementById("room-number"),r=parseInt(t.value,10),n=document.getElementById("nickname"),i=n.value,s=Array.from(i,(function(e){return e.charCodeAt(0)})),e.next=8,Xt(r,s);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Xt(e,a){return Jt.apply(this,arguments)}function Jt(){return(Jt=At(Ut().mark((function e(a,t){var r,n,i,s;return Ut().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Ot=a,e.next=3,Gt.init("wss://server.uwu.games");case 3:return console.log("CONNECTED"),Gt.recv(Ot,(function(e){var a,t,r=vt(null),n=$t(e).value,i="ActionEvent"==n.$?n.action.time:n.time;"ActionEvent"==n.$&&"SetNick"==n.action.$&&(Vt.push(n.action.pid),er(Vt),Vt.length===Rt&&(a=document.getElementById("lobby-container"),t=document.getElementById("game-container"),a&&t?(a.style.display="none",t.style.display="block",requestAnimationFrame(rr)):console.error("Could not find lobby or game container")));var s=r(BigInt(i))(n);Wt=Ht(Wt)(s)})),r=Gt.time(),n={$:"ActionEvent",action:{$:"SetNick",time:BigInt(r),pid:jt,nick:{$:"Cons",head:BigInt(69),tail:{$:"Nil"}}}},i=vt(null),s=vt(null)(BigInt(r))(n),Wt=Ht(Wt)(s),e.next=12,Gt.send(Ot,gt(n));case 12:window.addEventListener("keydown",(function(e){Wt=Ct(e,Gt,jt,Ot,Wt,Ht,i)})),window.addEventListener("keyup",(function(e){Wt=Ct(e,Gt,jt,Ot,Wt,Ht,i)})),window.addEventListener("mousemove",(function(e){return Tt(e)})),window.addEventListener("click",(function(e){Wt=Bt(e,Gt,jt,Ot,Wt,Ht,i)})),window.addEventListener("contextmenu",(function(e){e.preventDefault(),Bt(e,Gt,jt,Ot)})),t=void 0,o=void 0,t=document.getElementById("login-container"),o=document.getElementById("lobby-container"),t&&o?(t.style.display="none",o.style.display="block"):console.error("Could not find login or lobby container");case 18:case"end":return e.stop()}var t,o}),e)})))).apply(this,arguments)}function er(e){var a=document.getElementById("lobby-players");a&&(a.innerHTML="Players in lobby: ".concat(e.length,"/").concat(Rt))}window.addEventListener("load",(function(){var e;document.getElementById("canvas").getContext("2d"),(e=document.getElementById("login-form"))?e.addEventListener("submit",zt):console.error("Login form not found!")}));var ar=20,tr=performance.now();function rr(e){var a=e-tr;if(a>=ar){tr=e-a%ar;var t=BigInt(Gt.time()),r=Qt(Wt)(ft)(t);Lt=r.fst,console.log(Lt),Wt=r.snd,function(e){var a=document.getElementById("canvas"),t=a.getContext("2d");t&&(t.fillStyle="white",t.fillRect(0,0,a.width,a.height),function(e){var a,r,n=mt(e.entries());try{for(n.s();!(a=n.n()).done;){var i=kt(a.value,2),s=(i[0],i[1]);"Some"==s.$&&(r=s.value.hitbox,function(e,a){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"black";switch(e.beginPath(),e.fillStyle=t,a.$){case"Circle":var r=a.center,n=a.radius;e.arc(r.x,r.y,n,0,2*Math.PI),e.fill();break;case"Polygon":var i=a.center,s=a.vertices;e.moveTo(i.x+s.head.x,i.y+s.head.y);for(var o=s.tail;"Nil"!==o.$;)e.lineTo(i.x+o.head.x,i.y+o.head.y),o=o.tail;e.closePath(),e.fill()}}(t,r))}}catch(e){n.e(e)}finally{n.f()}}(e.game_map.bodies),function(e,a,t){var r,n=mt(a.entries());try{for(n.s();!(r=n.n()).done;){var i=kt(r.value,2),s=i[0],o=i[1];"Some"==o.$&&t(s,o.value,e)}}catch(e){n.e(e)}finally{n.f()}}(e,e.hero_states,Nt))}(Lt)}requestAnimationFrame(rr)}})()})(); \ No newline at end of file +(()=>{var e={591:e=>{"use strict";e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},577:()=>{},354:()=>{},479:()=>{},498:()=>{}},a={};function t(r){var n=a[r];if(void 0!==n)return n.exports;var i=a[r]={exports:{}};return e[r](i,i.exports,t),i.exports}t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e=null;"undefined"!=typeof WebSocket?e=WebSocket:"undefined"!=typeof MozWebSocket?e=MozWebSocket:void 0!==t.g?e=t.g.WebSocket||t.g.MozWebSocket:"undefined"!=typeof window?e=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(e=self.WebSocket||self.MozWebSocket);const a=e;function r(e){for(var a={$:"Nil"},t=e.length-1;t>=0;t--)a={$:"Cons",head:BigInt(e.charCodeAt(t)),tail:a};return a}function n(e,a,t){for(;;){var r=a;switch(r.$){case"Leaf":var n={$:"None"};break;case"Node":var i=t;switch(i.$){case"E":n=r.val;break;case"I":a=r.rgt,t=i.tail;continue;case"O":a=r.lft,t=i.tail;continue}}return n}}function i(e,a,t,r){var n=a;switch(n.$){case"Leaf":var s=t;switch(s.$){case"E":var o={$:"Node"},c={$:"Some"},v=r;c.value=v,o.val=c,o.lft={$:"Leaf"},o.rgt={$:"Leaf"};break;case"I":(o={$:"Node"}).val={$:"None"},o.lft={$:"Leaf"};var u=i(e,{$:"Leaf"},s.tail,r);o.rgt=u;break;case"O":(o={$:"Node"}).val={$:"None"};var l=i(e,{$:"Leaf"},s.tail,r);o.lft=l,o.rgt={$:"Leaf"}}break;case"Node":var d=t;switch(d.$){case"E":o={$:"Node"};var h={$:"Some"},f=r;h.value=f,o.val=h;var $=n.lft;o.lft=$;var b=n.rgt;o.rgt=b;break;case"I":o={$:"Node"};var _=n.val;o.val=_;var y=n.lft;o.lft=y;var p=i(e,n.rgt,d.tail,r);o.rgt=p;break;case"O":o={$:"Node"};var g=n.val;o.val=g;var k=i(e,n.lft,d.tail,r);o.lft=k;var m=n.rgt;o.rgt=m}}return o}function s(e,a){switch(e.$){case"False":var t={$:"False"};break;case"True":t=a}return t}function o(e){var a=e;switch(a.$){case"False":var t=function(e){if("False"===e.$)var a={$:"True"};else a={$:"False"};return a};break;case"True":t=function(e){if("True"===e.$)var a={$:"True"};else a={$:"False"};return a};break;default:t=null(a)}return t}function c(e,a){switch(e.$){case"False":var t=a;break;case"True":t={$:"True"}}return t}function v(e){if(0n===e)var a={$:"False"};else a={$:"True"};return a}function u(e,a){var t=e,r=a;return BigInt.asUintN(64,t===r)}function l(e,a){switch(v(u(e,a)).$){case"True":var t={$:"EQ"};break;case"False":var r=e,n=a;switch(v(BigInt.asUintN(64,rr))}function m(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t>=r))}function w(e){var a=e;return v(BigInt.asUintN(64,0===a))}function x(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t<=r))}function N(e,a){var t=e,r=a;switch(v(BigInt.asUintN(64,t<=r)).$){case"True":var n=e;break;case"False":n=a}return n}function S(e,a){return e*a}function M(e){switch(k(e,0).$){case"True":var a=1;break;case"False":switch(b(e,0).$){case"True":a=-1;break;case"False":a=0}}return a}function B(e){switch(w(e).$){case"True":var a=e;break;case"False":a=function(e,a,t){for(;;){var r=t;if(0n===r)var n=a;else{var i=a,s=p(e,a),o=p(y(i,s),2);switch(g(a,o).$){case"True":n=o;break;case"False":var c=r;a=o,t=BigInt.asUintN(64,c-1n);continue}}return n}}(e,p(e,2),10n)}return a}function P(e,a){return e-a}var F=0n,T=2n;function C(e,a,t){var r=a;switch(r.$){case"Cons":var n={$:"Cons"},i=r.head;n.head=i;var s=C(e,r.tail,t);n.tail=s;break;case"Nil":n=t}return n}function I(e,a,t,r,n){var i=a;switch(i.$){case"Cons":var s=n(i.head)(I(e,i.tail,t,r,n));break;case"Nil":s=r}return s}function U(e,a,t,r){var n=a;switch(n.$){case"Cons":switch(r(t)(n.head).$){case"False":var i={$:"Cons"},s=n.head;i.head=s;var o=U(e,n.tail,t,r);i.tail=o;break;case"True":(i={$:"Cons"}).head=t;var c={$:"Cons"},v=n.head;c.head=v;var u=n.tail;c.tail=u,i.tail=c}break;case"Nil":(i={$:"Cons"}).head=t,i.tail={$:"Nil"}}return i}function E(e,a,t){var r=a;switch(r.$){case"Cons":var n=U(e,E(e,r.tail,t),r.head,t);break;case"Nil":n={$:"Nil"}}return n}function A(e,a,t,r){var n=t;switch(n.$){case"Cons":var i={$:"Cons"},s=r(n.head);i.head=s;var o=A(e,a,n.tail,r);i.tail=o;break;case"Nil":i={$:"Nil"}}return i}function L(e,a,t,r){var n=t;switch(n.$){case"Cons":var i=r;switch(i.$){case"Cons":var s={$:"Cons"},o={$:"Pair"},c=n.head;o.fst=c;var v=i.head;o.snd=v,s.head=o;var u=L(e,a,n.tail,i.tail);s.tail=u;break;case"Nil":s={$:"Nil"}}break;case"Nil":s={$:"Nil"}}return s}var G=1n,O=3n;function R(e){var a=new Map;return a.set(-1n,{$:"None"}),a}function V(e,a){return v(u(e,a))}function Z(e,a,t,r,n,i){return function(e,a,t,r,n,i){for(;;){switch(V(r,0n).$){case"False":var s=t,o=r,c=s.has(o)?s.get(o):s.get(-1n),v=s,u=c;switch(u.$){case"None":var l=r;t=v,r=BigInt.asUintN(64,l-1n);continue;case"Some":var d=r,h=r;t=v,r=BigInt.asUintN(64,d-1n),n=i(n)(h)(u.value);continue}break;case"True":var f=t,$=f.has(0n)?f.get(0n):f.get(-1n);switch($.$){case"None":var b=n;break;case"Some":b=i(n)(0n)($.value)}}return b}}(0,0,t,r,n,i)}function j(e,a,t){var r=a,n=t;return r.has(n)?r.get(n):r.get(-1n)}function D(e,a,t,r){var n=a,i=t,s={$:"Some"},o=r;s.value=o,n.has(i)?n.get(i):n.get(-1n);var c=n;return n.set(i,s),c}function q(e,a,t){return function(e,a,t,r){for(;;){switch(V(t,0n).$){case"False":var n=a,i=t,s=n.has(i)?n.get(i):n.get(-1n),o=n,c=s;switch(c.$){case"None":var v=t;a=o,t=BigInt.asUintN(64,v-1n);continue;case"Some":var u=e,l=o,d=t,h=BigInt.asUintN(64,d-1n),f={$:"Cons"},$=c.value;f.head=$;var b=r;f.tail=b,e=u,a=l,t=h,r=f;continue}break;case"True":var _=a,y=_.has(0n)?_.get(0n):_.get(-1n);switch(y.$){case"None":var p=r;break;case"Some":p={$:"Cons"};var g=y.value;p.head=g;var k=r;p.tail=k}}return p}}(e,a,t,{$:"Nil"})}function K(e,a,t,r){return(0,a.compare)(t)(r)}function W(e,a,t,r,n,i){for(;;){var s=t;switch(s.$){case"Leaf":var o=n;break;case"Node":var c=W(e,a,s.left,r,n,i),v=i(s.key_value)(c);t=s.right,n=v;continue}return o}}function H(e,a,t,r){var n=r;switch(n.$){case"Leaf":var i=function(e){return{$:"None"}};break;case"Node":var s=n.key_value;i=function(r){switch(K(0,t,r,s.fst).$){case"EQ":var i={$:"Some"},o=s.snd;i.value=o;break;case"GT":i=H(e,a,t,n.right)(r);break;case"LT":i=H(e,a,t,n.left)(r)}return i}}return i}function Q(e,a,t,r){var n=r;switch(n.$){case"Leaf":var i=function(e){var a={$:"Pair"},t={$:"Node"},r=e;return t.key_value=r,t.balance={$:"Zero"},t.left={$:"Leaf"},t.right={$:"Leaf"},a.fst=t,a.snd={$:"True"},a};break;case"Node":var s=n.key_value;i=function(r){var i=r;switch(K(0,t,i.fst,s.fst).$){case"EQ":var o={$:"Pair"},c={$:"Node"},v={$:"Pair"},u=i.fst;v.fst=u;var l=i.snd;v.snd=l,c.key_value=v;var d=n.balance;c.balance=d;var h=n.left;c.left=h;var f=n.right;c.right=f,o.fst=c,o.snd={$:"False"};break;case"GT":var $=Q(e,a,t,n.right),b={$:"Pair"},_=i.fst;b.fst=_;var y=i.snd;b.snd=y;var p=$(b);switch(p.snd.$){case"True":switch(n.balance.$){case"PlusOne":var g={$:"Node"},k={$:"Pair"},m=s.fst;k.fst=m;var w=s.snd;k.snd=w,g.key_value=k,g.balance={$:"PlusOne"};var x=n.left;g.left=x;var N=p.fst;g.right=N,o=function(e,a,t){var r=t;switch(r.$){case"Leaf":(c={$:"Pair"}).fst={$:"Leaf"},c.snd={$:"False"};break;case"Node":var n=r.balance;if("PlusOne"===n.$){var i=r.right;if("Node"===i.$){var s=i.balance;switch(s.$){case"MinusOne":var o=i.left;if("Node"===o.$)switch(o.balance.$){case"MinusOne":var c={$:"Pair"},v={$:"Node"},u=o.key_value;v.key_value=u,v.balance={$:"Zero"};var l={$:"Node"},d=r.key_value;l.key_value=d,l.balance={$:"Zero"};var h=r.left;l.left=h;var f=o.left;l.right=f,v.left=l;var $={$:"Node"},b=i.key_value;$.key_value=b,$.balance={$:"PlusOne"};var _=o.right;$.left=_;var y=i.right;$.right=y,v.right=$,c.fst=v,c.snd={$:"False"};break;case"PlusOne":c={$:"Pair"};var p={$:"Node"},g=o.key_value;p.key_value=g,p.balance={$:"Zero"};var k={$:"Node"},m=r.key_value;k.key_value=m,k.balance={$:"MinusOne"};var w=r.left;k.left=w;var x=o.left;k.right=x,p.left=k;var N={$:"Node"},S=i.key_value;N.key_value=S,N.balance={$:"Zero"};var M=o.right;N.left=M;var B=i.right;N.right=B,p.right=N,c.fst=p,c.snd={$:"False"};break;case"Zero":c={$:"Pair"};var P={$:"Node"},F=o.key_value;P.key_value=F,P.balance={$:"Zero"};var T={$:"Node"},C=r.key_value;T.key_value=C,T.balance={$:"Zero"};var I=r.left;T.left=I;var U=o.left;T.right=U,P.left=T;var E={$:"Node"},A=i.key_value;E.key_value=A,E.balance={$:"Zero"};var L=o.right;E.left=L;var G=i.right;E.right=G,P.right=E,c.fst=P,c.snd={$:"False"}}else{c={$:"Pair"};var O={$:"Node"},R=r.key_value;O.key_value=R,O.balance={$:"PlusOne"};var V=r.left;O.left=V;var Z={$:"Node"},j=i.key_value;Z.key_value=j,Z.balance={$:"MinusOne"};var D=o;Z.left=D;var q=i.right;Z.right=q,O.right=Z,c.fst=O,c.snd={$:"False"}}break;case"PlusOne":c={$:"Pair"};var K={$:"Node"},W=i.key_value;K.key_value=W,K.balance={$:"Zero"};var H={$:"Node"},Q=r.key_value;H.key_value=Q,H.balance={$:"Zero"};var z=r.left;H.left=z;var Y=i.left;H.right=Y,K.left=H;var X=i.right;K.right=X,c.fst=K,c.snd={$:"False"};break;case"Zero":c={$:"Pair"};var J={$:"Node"},ee=i.key_value;J.key_value=ee,J.balance={$:"MinusOne"};var ae={$:"Node"},te=r.key_value;ae.key_value=te,ae.balance={$:"PlusOne"};var re=r.left;ae.left=re;var ne=i.left;ae.right=ne,J.left=ae;var ie=i.right;J.right=ie,c.fst=J,c.snd={$:"True"};break;default:c=null(s)(i.left)(i.right)}}else{c={$:"Pair"};var se={$:"Node"},oe=r.key_value;se.key_value=oe,se.balance={$:"PlusOne"};var ce=r.left;se.left=ce;var ve=i;se.right=ve,c.fst=se,c.snd={$:"False"}}}else{c={$:"Pair"};var ue={$:"Node"},le=r.key_value;ue.key_value=le;var de=n;ue.balance=de;var he=r.left;ue.left=he;var fe=r.right;ue.right=fe,c.fst=ue,c.snd={$:"False"}}break;default:c=null(r)}return c}(0,0,g);break;case"Zero":o={$:"Pair"};var S={$:"Node"},M={$:"Pair"},B=s.fst;M.fst=B;var P=s.snd;M.snd=P,S.key_value=M,S.balance={$:"PlusOne"};var F=n.left;S.left=F;var T=p.fst;S.right=T,o.fst=S,o.snd={$:"True"};break;case"MinusOne":o={$:"Pair"};var C={$:"Node"},I={$:"Pair"},U=s.fst;I.fst=U;var E=s.snd;I.snd=E,C.key_value=I,C.balance={$:"Zero"};var A=n.left;C.left=A;var L=p.fst;C.right=L,o.fst=C,o.snd={$:"False"}}break;case"False":o={$:"Pair"};var G={$:"Node"},O={$:"Pair"},R=s.fst;O.fst=R;var V=s.snd;O.snd=V,G.key_value=O;var Z=n.balance;G.balance=Z;var j=n.left;G.left=j;var D=p.fst;G.right=D,o.fst=G,o.snd={$:"False"}}break;case"LT":var q=Q(e,a,t,n.left),W={$:"Pair"},H=i.fst;W.fst=H;var z=i.snd;W.snd=z;var Y=q(W);switch(Y.snd.$){case"True":switch(n.balance.$){case"PlusOne":o={$:"Pair"};var X={$:"Node"},J={$:"Pair"},ee=s.fst;J.fst=ee;var ae=s.snd;J.snd=ae,X.key_value=J,X.balance={$:"Zero"};var te=Y.fst;X.left=te;var re=n.right;X.right=re,o.fst=X,o.snd={$:"False"};break;case"Zero":o={$:"Pair"};var ne={$:"Node"},ie={$:"Pair"},se=s.fst;ie.fst=se;var oe=s.snd;ie.snd=oe,ne.key_value=ie,ne.balance={$:"MinusOne"};var ce=Y.fst;ne.left=ce;var ve=n.right;ne.right=ve,o.fst=ne,o.snd={$:"True"};break;case"MinusOne":var ue={$:"Node"},le={$:"Pair"},de=s.fst;le.fst=de;var he=s.snd;le.snd=he,ue.key_value=le,ue.balance={$:"MinusOne"};var fe=Y.fst;ue.left=fe;var $e=n.right;ue.right=$e,o=function(e,a,t){var r=t;switch(r.$){case"Leaf":(o={$:"Pair"}).fst={$:"Leaf"},o.snd={$:"False"};break;case"Node":var n=r.balance;if("MinusOne"===n.$){var i=r.left;if("Node"===i.$){var s=i.balance;switch(s.$){case"MinusOne":var o={$:"Pair"},c={$:"Node"},v=i.key_value;c.key_value=v,c.balance={$:"Zero"};var u=i.left;c.left=u;var l={$:"Node"},d=r.key_value;l.key_value=d,l.balance={$:"Zero"};var h=i.right;l.left=h;var f=r.right;l.right=f,c.right=l,o.fst=c,o.snd={$:"False"};break;case"PlusOne":var $=i.right;if("Node"===$.$)switch($.balance.$){case"MinusOne":o={$:"Pair"};var b={$:"Node"},_=$.key_value;b.key_value=_,b.balance={$:"Zero"};var y={$:"Node"},p=i.key_value;y.key_value=p,y.balance={$:"Zero"};var g=i.left;y.left=g;var k=$.left;y.right=k,b.left=y;var m={$:"Node"},w=r.key_value;m.key_value=w,m.balance={$:"PlusOne"};var x=$.right;m.left=x;var N=r.right;m.right=N,b.right=m,o.fst=b,o.snd={$:"False"};break;case"PlusOne":o={$:"Pair"};var S={$:"Node"},M=$.key_value;S.key_value=M,S.balance={$:"Zero"};var B={$:"Node"},P=i.key_value;B.key_value=P,B.balance={$:"MinusOne"};var F=i.left;B.left=F;var T=$.left;B.right=T,S.left=B;var C={$:"Node"},I=r.key_value;C.key_value=I,C.balance={$:"Zero"};var U=$.right;C.left=U;var E=r.right;C.right=E,S.right=C,o.fst=S,o.snd={$:"False"};break;case"Zero":o={$:"Pair"};var A={$:"Node"},L=$.key_value;A.key_value=L,A.balance={$:"Zero"};var G={$:"Node"},O=i.key_value;G.key_value=O,G.balance={$:"Zero"};var R=i.left;G.left=R;var V=$.left;G.right=V,A.left=G;var Z={$:"Node"},j=r.key_value;Z.key_value=j,Z.balance={$:"Zero"};var D=$.right;Z.left=D;var q=r.right;Z.right=q,A.right=Z,o.fst=A,o.snd={$:"False"}}else{o={$:"Pair"};var K={$:"Node"},W=r.key_value;K.key_value=W,K.balance={$:"MinusOne"};var H={$:"Node"},Q=i.key_value;H.key_value=Q,H.balance={$:"PlusOne"};var z=i.left;H.left=z;var Y=$;H.right=Y,K.left=H;var X=r.right;K.right=X,o.fst=K,o.snd={$:"False"}}break;case"Zero":o={$:"Pair"};var J={$:"Node"},ee=i.key_value;J.key_value=ee,J.balance={$:"PlusOne"};var ae=i.left;J.left=ae;var te={$:"Node"},re=r.key_value;te.key_value=re,te.balance={$:"MinusOne"};var ne=i.right;te.left=ne;var ie=r.right;te.right=ie,J.right=te,o.fst=J,o.snd={$:"True"};break;default:o=null(s)(i.left)(i.right)(r.right)}}else{o={$:"Pair"};var se={$:"Node"},oe=r.key_value;se.key_value=oe,se.balance={$:"MinusOne"};var ce=i;se.left=ce;var ve=r.right;se.right=ve,o.fst=se,o.snd={$:"False"}}}else{o={$:"Pair"};var ue={$:"Node"},le=r.key_value;ue.key_value=le;var de=n;ue.balance=de;var he=r.left;ue.left=he;var fe=r.right;ue.right=fe,o.fst=ue,o.snd={$:"False"}}break;default:o=null(r)}return o}(0,0,ue)}break;case"False":o={$:"Pair"};var be={$:"Node"},_e={$:"Pair"},ye=s.fst;_e.fst=ye;var pe=s.snd;_e.snd=pe,be.key_value=_e;var ge=n.balance;be.balance=ge;var ke=Y.fst;be.left=ke;var me=n.right;be.right=me,o.fst=be,o.snd={$:"False"}}}return o}}return i}function z(e,a,t,r,n){return function(e,a,t){return t.fst}(0,0,Q(e,a,t,r)(n))}function Y(e,a,t){var r=t;switch(r.$){case"Leaf":var n={$:"Nil"};break;case"Node":var i=r.key_value,s=Y(e,a,r.left),o=Y(e,a,r.right),c=e,v=s,u={$:"Cons"},l=i.fst;u.head=l;var d=o;u.tail=d,n=C(c,v,u)}return n}!function(){var e=new Map;e.set(1n,{$:"None"});var a={$:"Some",value:10n};e.set(2n,a);var t={$:"Some",value:20n};e.set(5n,t),e.set(-1n,{$:"None"})}(),function(){var e=new Map,a={$:"Some",value:42n};e.set(0n,a),e.set(1n,{$:"None"});var t={$:"Some",value:10n};e.set(2n,t);var r={$:"Some",value:20n};e.set(5n,r),e.set(-1n,{$:"None"})}(),function(){var e=new Map;e.set(1n,{$:"None"});var a={$:"Some",value:10n};e.set(2n,a);var t={$:"Some",value:20n};e.set(5n,t),e.set(-1n,{$:"None"})}();var X=101n,J=null,ee=function(e){return function(a){return function(e,a){for(;;){var t=e;switch(t.$){case"Cons":var r=a;switch(r.$){case"Cons":switch(K(0,h,t.head,r.head).$){case"LT":var n={$:"LT"};break;case"EQ":e=t.tail,a=r.tail;continue;case"GT":n={$:"GT"}}break;case"Nil":n={$:"GT"}}break;case"Nil":switch(a.$){case"Cons":n={$:"LT"};break;case"Nil":n={$:"EQ"}}}return n}}(e,a)}},ae=function(){var e={$:"Ord"},a=ee;return e.compare=a,e}(),te=ae;function re(e,a){for(;;){var t=e;switch(t.$){case"Cons":var r=a;switch(r.$){case"Cons":switch(f(t.head,r.head).$){case"True":e=t.tail,a=r.tail;continue;case"False":var n={$:"False"}}break;case"Nil":n={$:"False"}}break;case"Nil":switch(a.$){case"Cons":n={$:"False"};break;case"Nil":n={$:"True"}}}return n}}var ne=50n;function ie(e,a){var t=e,r=a;return BigInt.asUintN(64,t+r)}function se(e,a){var t=e,r=a;return BigInt.asUintN(64,t/r)}function oe(e){switch(e.$){case"False":var a=0n;break;case"True":a=1n}return a}function ce(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t>r))}function ve(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t>=r))}function ue(e,a){var t=e,r=a;return v(BigInt.asUintN(64,t=r)).$){case"True":var n=e;break;case"False":n=a}return n}(i.cached_tick,r),o=function(e,a,t,r){var n=t;switch(n.$){case"None":var i={$:"Some"},s={$:"StateNode"},o=r;s.tick=o,s.keep=0n,s.life=0n;var c=a;s.state=c,s.older={$:"None"},i.value=s;break;case"Some":var v=function(e,a){return a.keep}(0,n.value);i=vt(0,a,n.value,r,v)}return i}(0,n,i.state_logs,r),c={$:"Mach"},u=i.ticks_per_second;c.ticks_per_second=u;var l=i.genesis_tick;c.genesis_tick=l;var d=s;c.cached_tick=d;var h=o;c.state_logs=h;var f=i.action_logs;c.action_logs=f;var $=i.action_eq;return c.action_eq=$,c}function $t(e,a,t,r){var n=t,i=function(e,a){var t=e,r=a;switch(v(BigInt.asUintN(64,t<=r)).$){case"True":var n=e;break;case"False":n=a}return n}(r,n.genesis_tick),s={$:"Mach"},o=n.ticks_per_second;s.ticks_per_second=o;var c=i;s.genesis_tick=c;var u=n.cached_tick;s.cached_tick=u;var l=n.state_logs;s.state_logs=l;var d=n.action_logs;s.action_logs=d;var h=n.action_eq;return s.action_eq=h,s}var bt=function(){var e={$:"Game"},a=Ca;e.init=a;var t=Xa;e.when=t;var r=Aa;return e.tick=r,e}(),_t=bt;function yt(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(0===e.length)return{value:null,bytesRead:0};switch(e[a]){case Number(F):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(F))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));return a+=8,{value:{$:"KeyEvent",time:t,pid:r,key:{$:"Cons",head:BigInt(e[a]),tail:{$:"Nil"}},pressed:0!==e[a+=1]?{$:"True"}:{$:"False"}},bytesRead:a+=1}}(e,a);case Number(G):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(G))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0)),n=function(e){return{value:0===e[arguments.length>1&&void 0!==arguments[1]?arguments[1]:0]?{$:"LeftButton"}:{$:"RightButton"},bytesRead:1}}(e,a+=8),i=pt(e,a+=n.bytesRead),s=pt(e,a+=i.bytesRead);return a+=s.bytesRead,{value:{$:"MouseClick",time:t,pid:r,click:n.value,x:i.value,y:s.value},bytesRead:a}}(e,a);case Number(T):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(T))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var n=BigInt(e[a]),i=0!==e[a+=1],s=pt(e,a+=1),o=pt(e,a+=s.bytesRead);return a+=o.bytesRead,{value:{$:"KeyMouse",time:t,pid:r,key:{$:"Cons",head:n,tail:{$:"Nil"}},pressed:i?{$:"True"}:{$:"False"},x:s.value,y:o.value},bytesRead:a}}(e,a);case Number(O):return function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(O))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0)),n=pt(e,a+=8),i=pt(e,a+=n.bytesRead);return a+=i.bytesRead,{value:{$:"MouseMove",time:t,pid:r,x:n.value,y:i.value},bytesRead:a}}(e,a);case Number(X):return function(e){var a=function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e[a]===Number(X)?function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e[a]!==Number(X))return{value:null,bytesRead:0};a+=1;var t=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0));a+=8;var r=BigInt(new DataView(e.buffer,a).getBigUint64(0,!0)),n=function(e){for(var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=[];a=0;n--)r={$:"Cons",head:BigInt(t[n]),tail:r};return{value:r,bytesRead:t.length}}(e,a+=8);return a+=n.bytesRead,{value:{$:"SetNick",time:t,pid:r,nick:n.value},bytesRead:a}}(e,a):{value:null,bytesRead:0}}(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);return null===a.value?{value:null,bytesRead:0}:{value:{$:"ActionEvent",action:a.value},bytesRead:a.bytesRead}}(e,a);default:return{value:null,bytesRead:0}}}function pt(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return{value:new DataView(e instanceof ArrayBuffer?e:e.buffer).getFloat64(a,!0),bytesRead:8}}function gt(e){return function(e){if(Array.isArray(e))return kt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,a){if(e){if("string"==typeof e)return kt(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?kt(e,a):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function kt(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,o=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return s=e.done,e},e:function(e){o=!0,i=e},f:function(){try{s||null==t.return||t.return()}finally{if(o)throw i}}}}function St(e,a){if(e){if("string"==typeof e)return Mt(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?Mt(e,a):void 0}}function Mt(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=Array(a);t4&&void 0!==arguments[4]?arguments[4]:16,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"black";e.font="".concat(n,"px Arial"),e.fillStyle=i,e.fillText(a.toString(),t,r)}(c,s,o.x,o.y)}}var Pt=50;function Ft(e,a,t,r,n,i,s){if((0===e.button||2===e.button)&&e.target instanceof HTMLCanvasElement){var o=a.time()+Pt,c={$:"MouseClick",time:o,pid:t,click:0===e.button?{$:"LeftButton"}:{$:"RightButton"},x:Number((e.clientX-e.target.offsetLeft).toFixed(2)),y:Number((e.clientY-e.target.offsetTop).toFixed(2))};a.send(r,mt(c));var v=s(BigInt(o))(c);return i(n)(v)}return n}var Tt={},Ct=0,It=0;function Ut(e,a,t,r){e.target instanceof HTMLCanvasElement&&(Ct=e.clientX-e.target.offsetLeft,It=e.clientY-e.target.offsetTop)}function Et(e,a,t,r,n,i,s){var o=a.time()+Pt,c="keydown"===e.type,v=e.key.toUpperCase().charCodeAt(0);if(Tt[v]!==c){Tt[v]=c;var u={$:"KeyMouse",time:o,pid:t,key:{$:"Cons",head:v,tail:{$:"Nil"}},pressed:1==c?{$:"True"}:{$:"False"},x:Number(Ct.toFixed(2)),y:Number(It.toFixed(2))};a.send(r,mt(u));var l=s(BigInt(o))(u);return i(n)(l)}return n}function At(e){return At="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Lt(){Lt=function(){return a};var e,a={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,a,t){e[a]=t.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function v(e,a,t){return Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[a]}try{v({},"")}catch(e){v=function(e,a,t){return e[a]=t}}function u(e,a,t,r){var i=a&&a.prototype instanceof _?a:_,s=Object.create(i.prototype),o=new F(r||[]);return n(s,"_invoke",{value:S(e,t,o)}),s}function l(e,a,t){try{return{type:"normal",arg:e.call(a,t)}}catch(e){return{type:"throw",arg:e}}}a.wrap=u;var d="suspendedStart",h="suspendedYield",f="executing",$="completed",b={};function _(){}function y(){}function p(){}var g={};v(g,s,(function(){return this}));var k=Object.getPrototypeOf,m=k&&k(k(T([])));m&&m!==t&&r.call(m,s)&&(g=m);var w=p.prototype=_.prototype=Object.create(g);function x(e){["next","throw","return"].forEach((function(a){v(e,a,(function(e){return this._invoke(a,e)}))}))}function N(e,a){function t(n,i,s,o){var c=l(e[n],e,i);if("throw"!==c.type){var v=c.arg,u=v.value;return u&&"object"==At(u)&&r.call(u,"__await")?a.resolve(u.__await).then((function(e){t("next",e,s,o)}),(function(e){t("throw",e,s,o)})):a.resolve(u).then((function(e){v.value=e,s(v)}),(function(e){return t("throw",e,s,o)}))}o(c.arg)}var i;n(this,"_invoke",{value:function(e,r){function n(){return new a((function(a,n){t(e,r,a,n)}))}return i=i?i.then(n,n):n()}})}function S(a,t,r){var n=d;return function(i,s){if(n===f)throw Error("Generator is already running");if(n===$){if("throw"===i)throw s;return{value:e,done:!0}}for(r.method=i,r.arg=s;;){var o=r.delegate;if(o){var c=M(o,r);if(c){if(c===b)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===d)throw n=$,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=f;var v=l(a,t,r);if("normal"===v.type){if(n=r.done?$:h,v.arg===b)continue;return{value:v.arg,done:r.done}}"throw"===v.type&&(n=$,r.method="throw",r.arg=v.arg)}}}function M(a,t){var r=t.method,n=a.iterator[r];if(n===e)return t.delegate=null,"throw"===r&&a.iterator.return&&(t.method="return",t.arg=e,M(a,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),b;var i=l(n,a.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,b;var s=i.arg;return s?s.done?(t[a.resultName]=s.value,t.next=a.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,b):s:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,b)}function B(e){var a={tryLoc:e[0]};1 in e&&(a.catchLoc=e[1]),2 in e&&(a.finallyLoc=e[2],a.afterLoc=e[3]),this.tryEntries.push(a)}function P(e){var a=e.completion||{};a.type="normal",delete a.arg,e.completion=a}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(B,this),this.reset(!0)}function T(a){if(a||""===a){var t=a[s];if(t)return t.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var n=-1,i=function t(){for(;++n=0;--i){var s=this.tryEntries[i],o=s.completion;if("root"===s.tryLoc)return n("end");if(s.tryLoc<=this.prev){var c=r.call(s,"catchLoc"),v=r.call(s,"finallyLoc");if(c&&v){if(this.prev=0;--t){var n=this.tryEntries[t];if(n.tryLoc<=this.prev&&r.call(n,"finallyLoc")&&this.prev=0;--a){var t=this.tryEntries[a];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),P(t),b}},catch:function(e){for(var a=this.tryEntries.length-1;a>=0;--a){var t=this.tryEntries[a];if(t.tryLoc===e){var r=t.completion;if("throw"===r.type){var n=r.arg;P(t)}return n}}throw Error("illegal catch attempt")},delegateYield:function(a,t,r){return this.delegate={iterator:T(a),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=e),b}},a}function Gt(e,a,t,r,n,i,s){try{var o=e[i](s),c=o.value}catch(e){return void t(e)}o.done?a(c):Promise.resolve(c).then(r,n)}function Ot(e){return function(){var a=this,t=arguments;return new Promise((function(r,n){var i=e.apply(a,t);function s(e){Gt(i,r,n,s,o,"next",e)}function o(e){Gt(i,r,n,s,o,"throw",e)}s(void 0)}))}}var Rt,Vt=new class{constructor(){this.rooms=new Map,this.server_time_offset=0,this.best_ping=1/0,this.last_ping_time=0}init(e){return new Promise(((t,r)=>{this.ws=new a(e),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{this.sync_time(),t()},this.ws.onerror=e=>r(e),this.ws.onmessage=e=>{const a=e.data;this.handle_message(new Uint8Array(a instanceof ArrayBuffer?a:new ArrayBuffer(0)))}}))}send(e,a){const t=new Uint8Array(7+a.length);t[0]=2,this.write_uint48_be(t,1,e),t.set(a,7),this.ws.send(t)}recv(e,a){return this.rooms.has(e)||(this.rooms.set(e,new Set),this.join_room(e)),this.rooms.get(e).add(a),()=>{this.rooms.get(e).delete(a),0===this.rooms.get(e).size&&(this.rooms.delete(e),this.exit_room(e))}}time(){return Date.now()+this.server_time_offset}handle_message(e){var a;switch(e[0]){case 3:const t=this.read_uint48_be(e,1),r=(this.read_uint48_be(e,7),e.slice(13));null===(a=this.rooms.get(t))||void 0===a||a.forEach((e=>e(r)));break;case 6:this.handle_pong(e)}}join_room(e){const a=new Uint8Array(7);a[0]=0,this.write_uint48_be(a,1,e),this.ws.send(a)}exit_room(e){const a=new Uint8Array(7);a[0]=1,this.write_uint48_be(a,1,e),this.ws.send(a)}sync_time(){const e=new Uint8Array(1);e[0]=5;const a=Date.now();this.ws.send(e),this.last_ping_time=a}handle_pong(e){const a=Date.now(),t=this.read_uint48_be(e,1),r=a-this.last_ping_time;rthis.sync_time()),3e3)}write_uint48_be(e,a,t){e[a]=t/Math.pow(2,40)&255,e[a+1]=t/Math.pow(2,32)&255,e[a+2]=t/Math.pow(2,24)&255,e[a+3]=t/Math.pow(2,16)&255,e[a+4]=t/Math.pow(2,8)&255,e[a+5]=255&t}read_uint48_be(e,a){return e[a]*Math.pow(2,40)+e[a+1]*Math.pow(2,32)+e[a+2]*Math.pow(2,24)+e[a+3]*Math.pow(2,16)+e[a+4]*Math.pow(2,8)+e[a+5]}},Zt=0,jt=1,Dt=[],qt=BigInt(50),Kt=BigInt(Math.floor(Math.random()*Math.pow(2,4)));console.log("PID is:",Kt);var Wt,Ht,Qt,zt=(Wt=qt,function(e){return function(e,a,t,r){var n={$:"Mach"},i=t;n.ticks_per_second=i,n.genesis_tick=687399551400673280n,n.cached_tick=0n;n.state_logs={$:"None"};n.action_logs={$:"Leaf"};var s=r;return n.action_eq=s,n}(0,0,Wt,e)})((function(e){return function(e){var a=e;switch(a.$){case"ActionEvent":var t=function(e){var t=e;if("ActionEvent"===t.$)var r=function(e,a){var t=e,r=a,n=V(t.time,r.time),i=s(V(t.pid,r.pid),re(t.nick,r.nick));return s(n,i)}(a.action,t.action);else r={$:"False"};return r};break;case"KeyEvent":t=function(e){var t=e;if("KeyEvent"===t.$)var r=V(a.time,t.time),n=V(a.pid,t.pid),i=s(re(a.key,t.key),o(a.pressed)(t.pressed)),c=s(n,i),v=s(r,c);else v={$:"False"};return v};break;case"KeyMouse":t=function(e){var t=e;if("KeyMouse"===t.$)var r=V(a.time,t.time),n=V(a.pid,t.pid),i=re(a.key,t.key),c=o(a.pressed)(t.pressed),v=s(g(a.x,t.x),g(a.y,t.y)),u=s(c,v),l=s(i,u),d=s(n,l),h=s(r,d);else h={$:"False"};return h};break;case"MouseClick":t=function(e){var t=e;if("MouseClick"===t.$)var r=V(a.time,t.time),n=V(a.pid,t.pid),i=function(e){var a=e;switch(a.$){case"LeftButton":var t=function(e){if("LeftButton"===e.$)var a={$:"True"};else a={$:"False"};return a};break;case"RightButton":t=function(e){if("RightButton"===e.$)var a={$:"True"};else a={$:"False"};return a};break;default:t=null(a)}return t}(a.click)(t.click),o=s(g(a.x,t.x),g(a.y,t.y)),c=s(i,o),v=s(n,c),u=s(r,v);else u={$:"False"};return u};break;case"MouseMove":t=function(e){var t=e;if("MouseMove"===t.$)var r=V(a.time,t.time),n=V(a.pid,t.pid),i=s(g(a.x,t.x),g(a.y,t.y)),o=s(n,i),c=s(r,o);else c={$:"False"};return c};break;default:t=null(a)}return t}(e)})),Yt=(Qt=null,function(e){return function(a){return function(e,a,t,r){var n=r,i=lt(0,0,t,n.time);return ht(0,a,function(e,a,t,r){var n=t,i=ut(0,ct(0,r,n.state_logs),n.state_logs),s={$:"Mach"},o=n.ticks_per_second;s.ticks_per_second=o;var c=n.genesis_tick;s.genesis_tick=c;var v=n.cached_tick;s.cached_tick=v;var u=i;s.state_logs=u;var l=n.action_logs;s.action_logs=l;var d=n.action_eq;return s.action_eq=d,s}(0,0,function(e,a,t,r){var n=t;switch(ue(r,n.cached_tick).$){case"True":var i={$:"Mach"},s=n.ticks_per_second;i.ticks_per_second=s;var o=n.genesis_tick;i.genesis_tick=o;var c=r;i.cached_tick=c;var v=n.state_logs;i.state_logs=v;var u=n.action_logs;i.action_logs=u;var l=n.action_eq;i.action_eq=l;break;case"False":i={$:"Mach"};var d=n.ticks_per_second;i.ticks_per_second=d;var h=n.genesis_tick;i.genesis_tick=h;var f=n.cached_tick;i.cached_tick=f;var $=n.state_logs;i.state_logs=$;var b=n.action_logs;i.action_logs=b;var _=n.action_eq;i.action_eq=_}return i}(0,0,$t(0,0,t,i),i),i),i,n.action)}(0,Qt,e,a)}}),Xt=(Ht=null,function(e){return function(a){return function(t){return function(r){return function(e,a,t,r,n){var i=lt(0,0,t,n),s=function(e,a,t,r){var n=t,i=n.state_logs;switch(i.$){case"None":var s={$:"Pair"},o=function(e,a,t){return t.init}(0,0,r);s.fst=o;var c=n.genesis_tick;s.snd=c;break;case"Some":s={$:"Pair"};var v=st(0,i.value);s.fst=v;var u=ot(0,i.value);s.snd=u}return s}(0,0,t,r),o=fe(i,s.snd);switch(c(ce(o,1000000000000n),V(o,0n)).$){case"True":var v={$:"Pair"},u=s.fst;v.fst=u;var l=t;v.snd=l;break;case"False":v=function(e,a,t,r,n,i,s){for(;;){switch(V(i,s).$){case"True":var o={$:"Pair"},c=n;o.fst=c;var v=t;o.snd=v;break;case"False":var u=ie(i,1n),l=I(a,Ja(0,tt(0,0,t),i),e,n,at(0,0,r)),d=et(0,0,r)(l);t=ft(0,0,t,i,n),n=d,i=u;continue}return o}}(e,a,t,r,s.fst,s.snd,i)}return v}(Ht,e,a,t,r)}}}})(null);function Jt(e){return er.apply(this,arguments)}function er(){return(er=Ot(Lt().mark((function e(a){var t,r,n,i,s;return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a.preventDefault(),t=document.getElementById("room-number"),r=parseInt(t.value,10),n=document.getElementById("nickname"),i=n.value,s=Array.from(i,(function(e){return e.charCodeAt(0)})),e.next=8,ar(r,s);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ar(e,a){return tr.apply(this,arguments)}function tr(){return(tr=Ot(Lt().mark((function e(a,t){var r,n,i,s;return Lt().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Zt=a,e.next=3,Vt.init("wss://server.uwu.games");case 3:return console.log("CONNECTED"),Vt.recv(Zt,(function(e){var a,t,r=dt(null),n=yt(e).value,i="ActionEvent"==n.$?n.action.time:n.time;"ActionEvent"==n.$&&"SetNick"==n.action.$&&(Dt.push(n.action.pid),rr(Dt),Dt.length===jt&&(a=document.getElementById("lobby-container"),t=document.getElementById("game-container"),a&&t?(a.style.display="none",t.style.display="block",requestAnimationFrame(sr)):console.error("Could not find lobby or game container")));var s=r(BigInt(i))(n);zt=Yt(zt)(s)})),r=Vt.time(),n={$:"ActionEvent",action:{$:"SetNick",time:BigInt(r),pid:Kt,nick:{$:"Cons",head:BigInt(69),tail:{$:"Nil"}}}},i=dt(null),s=dt(null)(BigInt(r))(n),zt=Yt(zt)(s),e.next=12,Vt.send(Zt,mt(n));case 12:window.addEventListener("keydown",(function(e){zt=Et(e,Vt,Kt,Zt,zt,Yt,i)})),window.addEventListener("keyup",(function(e){zt=Et(e,Vt,Kt,Zt,zt,Yt,i)})),window.addEventListener("mousemove",(function(e){return Ut(e)})),window.addEventListener("click",(function(e){zt=Ft(e,Vt,Kt,Zt,zt,Yt,i)})),window.addEventListener("contextmenu",(function(e){e.preventDefault(),Ft(e,Vt,Kt,Zt)})),t=void 0,o=void 0,t=document.getElementById("login-container"),o=document.getElementById("lobby-container"),t&&o?(t.style.display="none",o.style.display="block"):console.error("Could not find login or lobby container");case 18:case"end":return e.stop()}var t,o}),e)})))).apply(this,arguments)}function rr(e){var a=document.getElementById("lobby-players");a&&(a.innerHTML="Players in lobby: ".concat(e.length,"/").concat(jt))}window.addEventListener("load",(function(){var e;document.getElementById("canvas").getContext("2d"),(e=document.getElementById("login-form"))?e.addEventListener("submit",Jt):console.error("Login form not found!")}));var nr=20,ir=performance.now();function sr(e){var a=e-ir;if(a>=nr){ir=e-a%nr;var t=BigInt(Vt.time()),r=Xt(zt)(_t)(t);Rt=r.fst,zt=r.snd,function(e){var a=document.getElementById("canvas"),t=a.getContext("2d");t&&(t.fillStyle="white",t.fillRect(0,0,a.width,a.height),function(e){var a,r,n=Nt(e.entries());try{for(n.s();!(a=n.n()).done;){var i=xt(a.value,2),s=(i[0],i[1]);"Some"==s.$&&(r=s.value.hitbox,function(e,a){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"black";switch(e.beginPath(),e.fillStyle=t,a.$){case"Circle":var r=a.center,n=a.radius;e.arc(r.x,r.y,n,0,2*Math.PI),e.fill();break;case"Polygon":var i=a.center,s=a.vertices;e.moveTo(i.x+s.head.x,i.y+s.head.y);for(var o=s.tail;"Nil"!==o.$;)e.lineTo(i.x+o.head.x,i.y+o.head.y),o=o.tail;e.closePath(),e.fill()}}(t,r))}}catch(e){n.e(e)}finally{n.f()}}(e.game_map.bodies),function(e,a,t){var r,n=Nt(a.entries());try{for(n.s();!(r=n.n()).done;){var i=xt(r.value,2),s=i[0],o=i[1];"Some"==o.$&&t(s,o.value,e)}}catch(e){n.e(e)}finally{n.f()}}(e,e.hero_states,Bt))}(Rt)}requestAnimationFrame(sr)}})()})(); \ No newline at end of file diff --git a/moba/ex.js b/moba/ex.js index 93ba460..b9cc831 100644 --- a/moba/ex.js +++ b/moba/ex.js @@ -539,13 +539,16 @@ const $UG$SIPD$GameMap$delete_body = _$0 => _$1 => $UG$SIPD$GameMap$delete_body$ function $UG$SIPD$State$delete_body$(_$0/*:UG/SIPD/State*/,_$1/*:BigInt*/) {var $x1 = _$0;var $x2 = $x1.game_map;var $x3 = _$1;var $new_game_map$0 = $UG$SIPD$GameMap$delete_body$($x2, $x3);var $x0 = ({$: "State"});var $x4 = $x1.next_id;$x0.next_id = $x4;var $x5 = $x1.tick;$x0.tick = $x5;var $x6 = $x1.players;$x0.players = $x6;var $x7 = $x1.hero_states;$x0.hero_states = $x7;var $x8 = $new_game_map$0;$x0.game_map = $x8;return $x0; } const $UG$SIPD$State$delete_body = _$0 => _$1 => $UG$SIPD$State$delete_body$(_$0,_$1) +function $V2$round$(_$0/*:V2*/) {var $x1 = _$0;var $x0 = ({$: "V2"});var $x3 = $x1.x;var $x4 = 0.0;var $x2 = (Math.round($x3 * Math.pow(10, 2)) / Math.pow(10, 2));$x0.x = $x2;var $x6 = $x1.y;var $x7 = 0.0;var $x5 = (Math.round($x6 * Math.pow(10, 2)) / Math.pow(10, 2));$x0.y = $x5;return $x0; } +const $V2$round = _$0 => $V2$round$(_$0) + function $UG$SIPD$GameMap$update_body$(_$0/*:UG/SIPD/GameMap*/,_$1/*:UG/SIPD/Body*/) {var $x1 = _$0;var $x2 = _$1;var $x3 = $UG$SIPD$Body;var $x4 = $x1.bodies;var $x5 = $x2.id;var $x6 = ({$: "Body"});var $x7 = $x2.id;$x6.id = $x7;var $x8 = $x2.hitbox;$x6.hitbox = $x8;var $x9 = $x2.tick;$x6.tick = $x9;var $x10 = $x2.effects;$x6.effects = $x10;var $x11 = $x2.collidable;$x6.collidable = $x11;var $new_bodies$0 = $Map$update$($x3, $x4, $x5, $x6);var $x13 = $x2.id;var $x14 = $x1.bodies_count;var $x12 = $U64$gt$($x13, $x14);switch ($x12.$) { case "True": { var $x0 = ({$: "GameMap"});var $x15 = $x1.width;$x0.width = $x15;var $x16 = $x1.height;$x0.height = $x16;var $x17 = $new_bodies$0;$x0.bodies = $x17;var $x18 = $x2.id;$x0.bodies_count = $x18; break; } case "False": { var $x0 = ({$: "GameMap"});var $x19 = $x1.width;$x0.width = $x19;var $x20 = $x1.height;$x0.height = $x20;var $x21 = $new_bodies$0;$x0.bodies = $x21;var $x22 = $x1.bodies_count;$x0.bodies_count = $x22; break; } }return $x0; } const $UG$SIPD$GameMap$update_body = _$0 => _$1 => $UG$SIPD$GameMap$update_body$(_$0,_$1) function $UG$SIPD$State$update_body$(_$0/*:UG/SIPD/State*/,_$1/*:UG/SIPD/Body*/) {var $x1 = _$0;var $x2 = $x1.game_map;var $x3 = _$1;var $new_game_map$0 = $UG$SIPD$GameMap$update_body$($x2, $x3);var $x0 = ({$: "State"});var $x4 = $x1.next_id;$x0.next_id = $x4;var $x5 = $x1.tick;$x0.tick = $x5;var $x6 = $x1.players;$x0.players = $x6;var $x7 = $x1.hero_states;$x0.hero_states = $x7;var $x8 = $new_game_map$0;$x0.game_map = $x8;return $x0; } const $UG$SIPD$State$update_body = _$0 => _$1 => $UG$SIPD$State$update_body$(_$0,_$1) -function $UG$SIPD$Effect$accelerated_move_range$(_$0/*:BigInt*/,_$1/*:Number*/,_$2/*:V2*/,_$3/*:Number*/,_$4/*:Number*/,_$5/*:BigInt*/,_$6/*:UG/SIPD/Effect*/,_$7/*:UG/SIPD/State*/) {var $x1 = _$7;var $x2 = $x1.game_map;var $x4 = _$0;var $x5 = $x2.bodies;var $x3 = $UG$SIPD$Body$get_body$($x4, $x5);switch ($x3.$) { case "None": { var $x0 = ({$: "State"});var $x6 = $x1.next_id;$x0.next_id = $x6;var $x7 = $x1.tick;$x0.tick = $x7;var $x8 = $x1.players;$x0.players = $x8;var $x9 = $x1.hero_states;$x0.hero_states = $x9;var $x10 = ({$: "GameMap"});var $x11 = $x2.width;$x10.width = $x11;var $x12 = $x2.height;$x10.height = $x12;var $x13 = $x2.bodies;$x10.bodies = $x13;var $x14 = $x2.bodies_count;$x10.bodies_count = $x14;$x0.game_map = $x10; break; } case "Some": { var $x15 = $x3.value;var $x16 = $x15.hitbox;var $hitbox_center$0 = $UG$Shape$get_center$($x16);var $x17 = _$2;var $x18 = $hitbox_center$0;var $distance_to_target$1 = $V2$sub$($x17, $x18);var $x19 = $distance_to_target$1;var $ln$2 = $V2$length$($x19);var $x22 = $ln$2;var $x23 = 20.0;var $x21 = $F64$lt$($x22, $x23);var $x25 = _$3;var $x26 = 0.0;var $x24 = $F64$lte$($x25, $x26);var $x20 = $Bool$or$($x21, $x24);switch ($x20.$) { case "True": { var $x27 = ({$: "State"});var $x28 = $x1.next_id;$x27.next_id = $x28;var $x29 = $x1.tick;$x27.tick = $x29;var $x30 = $x1.players;$x27.players = $x30;var $x31 = $x1.hero_states;$x27.hero_states = $x31;var $x32 = ({$: "GameMap"});var $x33 = $x2.width;$x32.width = $x33;var $x34 = $x2.height;$x32.height = $x34;var $x35 = $x2.bodies;$x32.bodies = $x35;var $x36 = $x2.bodies_count;$x32.bodies_count = $x36;$x27.game_map = $x32;var $x37 = _$0;var $x0 = $UG$SIPD$State$delete_body$($x27, $x37); break; } case "False": { var $x38 = _$1;var $x39 = _$4;var $accelerated_speed$3 = $F64$add$($x38, $x39);var $x40 = $accelerated_speed$3;var $x41 = _$3;var $move_distance$4 = $F64$min$($x40, $x41);var $x42 = $distance_to_target$1;var $direction$5 = $V2$normalize$($x42);var $x43 = $direction$5;var $x44 = $move_distance$4;var $movement$6 = $V2$mul_scalar$($x43, $x44);var $x45 = $x15.hitbox;var $x46 = $movement$6;var $new_hitbox$7 = $UG$Shape$move$($x45, $x46);var $x47 = ({$: "State"});var $x48 = $x1.next_id;$x47.next_id = $x48;var $x49 = $x1.tick;$x47.tick = $x49;var $x50 = $x1.players;$x47.players = $x50;var $x51 = $x1.hero_states;$x47.hero_states = $x51;var $x52 = ({$: "GameMap"});var $x53 = $x2.width;$x52.width = $x53;var $x54 = $x2.height;$x52.height = $x54;var $x55 = $x2.bodies;$x52.bodies = $x55;var $x56 = $x2.bodies_count;$x52.bodies_count = $x56;$x47.game_map = $x52;var $x57 = ({$: "Body"});var $x58 = $x15.id;$x57.id = $x58;var $x59 = $new_hitbox$7;$x57.hitbox = $x59;var $x60 = $x15.tick;$x57.tick = $x60;var $x61 = $x15.effects;$x57.effects = $x61;var $x62 = $x15.collidable;$x57.collidable = $x62;var $updated_state$8 = $UG$SIPD$State$update_body$($x47, $x57);var $x63 = _$6;var $x64 = $updated_state$8;var $state$9 = $UG$SIPD$Effect$apply$($x63, $x64);var $x66 = _$5;var $x67 = 0n;var $x65 = $U64$gt$($x66, $x67);switch ($x65.$) { case "True": { var $x74 = $UG$SIPD$Effect$accelerated_move_range;var $x75 = _$0;var $x73 = ($x74)($x75);var $x76 = $accelerated_speed$3;var $x72 = ($x73)($x76);var $x77 = _$2;var $x71 = ($x72)($x77);var $x78 = _$3;var $x70 = ($x71)($x78);var $x79 = _$4;var $x69 = ($x70)($x79);var $x81 = _$5;var $x82 = 1n;var $x80 = BigInt.asUintN(64, $x81 - $x82);var $x68 = ($x69)($x80);var $x83 = _$6;var $new_effect$10 = ($x68)($x83);var $x84 = $state$9;var $x85 = ({$: "Body"});var $x86 = $x15.id;$x85.id = $x86;var $x87 = $new_hitbox$7;$x85.hitbox = $x87;var $x88 = $x15.tick;$x85.tick = $x88;var $x89 = ({$: "Cons"});var $x90 = $new_effect$10;$x89.head = $x90;var $x91 = $x15.effects;$x89.tail = $x91;$x85.effects = $x89;var $x92 = $x15.collidable;$x85.collidable = $x92;var $x0 = $UG$SIPD$State$update_body$($x84, $x85); break; } case "False": { var $x93 = $state$9;var $x94 = _$0;var $x0 = $UG$SIPD$State$delete_body$($x93, $x94); break; } } break; } } break; } }return $x0; } +function $UG$SIPD$Effect$accelerated_move_range$(_$0/*:BigInt*/,_$1/*:Number*/,_$2/*:V2*/,_$3/*:Number*/,_$4/*:Number*/,_$5/*:BigInt*/,_$6/*:UG/SIPD/Effect*/,_$7/*:UG/SIPD/State*/) {var $x1 = _$7;var $x2 = $x1.game_map;var $x4 = _$0;var $x5 = $x2.bodies;var $x3 = $UG$SIPD$Body$get_body$($x4, $x5);switch ($x3.$) { case "None": { var $x0 = ({$: "State"});var $x6 = $x1.next_id;$x0.next_id = $x6;var $x7 = $x1.tick;$x0.tick = $x7;var $x8 = $x1.players;$x0.players = $x8;var $x9 = $x1.hero_states;$x0.hero_states = $x9;var $x10 = ({$: "GameMap"});var $x11 = $x2.width;$x10.width = $x11;var $x12 = $x2.height;$x10.height = $x12;var $x13 = $x2.bodies;$x10.bodies = $x13;var $x14 = $x2.bodies_count;$x10.bodies_count = $x14;$x0.game_map = $x10; break; } case "Some": { var $x15 = $x3.value;var $x16 = $x15.hitbox;var $hitbox_center$0 = $UG$Shape$get_center$($x16);var $x17 = _$2;var $x18 = $hitbox_center$0;var $distance_to_target$1 = $V2$sub$($x17, $x18);var $x19 = $distance_to_target$1;var $ln$2 = $V2$length$($x19);var $x22 = $ln$2;var $x23 = 20.0;var $x21 = $F64$lt$($x22, $x23);var $x25 = _$3;var $x26 = 0.0;var $x24 = $F64$lte$($x25, $x26);var $x20 = $Bool$or$($x21, $x24);switch ($x20.$) { case "True": { var $x27 = ({$: "State"});var $x28 = $x1.next_id;$x27.next_id = $x28;var $x29 = $x1.tick;$x27.tick = $x29;var $x30 = $x1.players;$x27.players = $x30;var $x31 = $x1.hero_states;$x27.hero_states = $x31;var $x32 = ({$: "GameMap"});var $x33 = $x2.width;$x32.width = $x33;var $x34 = $x2.height;$x32.height = $x34;var $x35 = $x2.bodies;$x32.bodies = $x35;var $x36 = $x2.bodies_count;$x32.bodies_count = $x36;$x27.game_map = $x32;var $x37 = _$0;var $x0 = $UG$SIPD$State$delete_body$($x27, $x37); break; } case "False": { var $x38 = _$1;var $x39 = _$4;var $accelerated_speed$3 = $F64$add$($x38, $x39);var $x40 = $accelerated_speed$3;var $x41 = _$3;var $move_distance$4 = $F64$min$($x40, $x41);var $x42 = $distance_to_target$1;var $direction$5 = $V2$normalize$($x42);var $x44 = $direction$5;var $x45 = $move_distance$4;var $x43 = $V2$mul_scalar$($x44, $x45);var $movement$6 = $V2$round$($x43);var $x46 = $x15.hitbox;var $x47 = $movement$6;var $new_hitbox$7 = $UG$Shape$move$($x46, $x47);var $x48 = ({$: "State"});var $x49 = $x1.next_id;$x48.next_id = $x49;var $x50 = $x1.tick;$x48.tick = $x50;var $x51 = $x1.players;$x48.players = $x51;var $x52 = $x1.hero_states;$x48.hero_states = $x52;var $x53 = ({$: "GameMap"});var $x54 = $x2.width;$x53.width = $x54;var $x55 = $x2.height;$x53.height = $x55;var $x56 = $x2.bodies;$x53.bodies = $x56;var $x57 = $x2.bodies_count;$x53.bodies_count = $x57;$x48.game_map = $x53;var $x58 = ({$: "Body"});var $x59 = $x15.id;$x58.id = $x59;var $x60 = $new_hitbox$7;$x58.hitbox = $x60;var $x61 = $x15.tick;$x58.tick = $x61;var $x62 = $x15.effects;$x58.effects = $x62;var $x63 = $x15.collidable;$x58.collidable = $x63;var $updated_state$8 = $UG$SIPD$State$update_body$($x48, $x58);var $x64 = _$6;var $x65 = $updated_state$8;var $state$9 = $UG$SIPD$Effect$apply$($x64, $x65);var $x67 = _$5;var $x68 = 0n;var $x66 = $U64$gt$($x67, $x68);switch ($x66.$) { case "True": { var $x75 = $UG$SIPD$Effect$accelerated_move_range;var $x76 = _$0;var $x74 = ($x75)($x76);var $x77 = $accelerated_speed$3;var $x73 = ($x74)($x77);var $x78 = _$2;var $x72 = ($x73)($x78);var $x79 = _$3;var $x71 = ($x72)($x79);var $x80 = _$4;var $x70 = ($x71)($x80);var $x82 = _$5;var $x83 = 1n;var $x81 = BigInt.asUintN(64, $x82 - $x83);var $x69 = ($x70)($x81);var $x84 = _$6;var $new_effect$10 = ($x69)($x84);var $x85 = $state$9;var $x86 = ({$: "Body"});var $x87 = $x15.id;$x86.id = $x87;var $x88 = $new_hitbox$7;$x86.hitbox = $x88;var $x89 = $x15.tick;$x86.tick = $x89;var $x90 = ({$: "Cons"});var $x91 = $new_effect$10;$x90.head = $x91;var $x92 = $x15.effects;$x90.tail = $x92;$x86.effects = $x90;var $x93 = $x15.collidable;$x86.collidable = $x93;var $x0 = $UG$SIPD$State$update_body$($x85, $x86); break; } case "False": { var $x94 = $state$9;var $x95 = _$0;var $x0 = $UG$SIPD$State$delete_body$($x94, $x95); break; } } break; } } break; } }return $x0; } const $UG$SIPD$Effect$accelerated_move_range = _$0 => _$1 => _$2 => _$3 => _$4 => _$5 => _$6 => _$7 => $UG$SIPD$Effect$accelerated_move_range$(_$0,_$1,_$2,_$3,_$4,_$5,_$6,_$7) function $damage$handle_collidable$(_$0/*:BigInt*/,_$1/*:UG/SIPD/Body*/,_$2/*:UG/SIPD/Body*/,_$3/*:UG/SIPD/State*/) {var $x1 = _$1;var $x2 = _$2;var $x3 = $x2.collidable;switch ($x3.$) { case "TakesEffects": { var $got$0 = _$3;var $x4 = $got$0;var $x6 = $UG$SIPD$Hero$HeroState;var $x7 = $x4.hero_states;var $x8 = $x2.id;var $x5 = $Map$get$($x6, $x7, $x8);switch ($x5.$) { case "Some": { var $got$1 = $x5.value;var $x9 = $got$1;var $x10 = $x9.health;var $x11 = _$0;var $new_health$2 = $U64$sub$($x10, $x11);var $x12 = $UG$SIPD$Hero$HeroState;var $x13 = $x4.hero_states;var $x14 = $x2.id;var $x15 = ({$: "HeroState"});var $x16 = $x9.cooldowns;$x15.cooldowns = $x16;var $x17 = $new_health$2;$x15.health = $x17;var $updated_hero_states$3 = $Map$insert$($x12, $x13, $x14, $x15);var $x18 = ({$: "State"});var $x19 = $x4.next_id;$x18.next_id = $x19;var $x20 = $x4.tick;$x18.tick = $x20;var $x21 = $x4.players;$x18.players = $x21;var $x22 = $updated_hero_states$3;$x18.hero_states = $x22;var $x23 = $x4.game_map;$x18.game_map = $x23;var $x24 = $x1.id;var $state$4 = $UG$SIPD$State$delete_body$($x18, $x24);var $x27 = $new_health$2;var $x28 = 0n;var $x26 = $U64$lte$($x27, $x28);var $x30 = _$0;var $x31 = $x9.health;var $x29 = $U64$gte$($x30, $x31);var $x25 = $Bool$or$($x26, $x29);switch ($x25.$) { case "True": { var $x32 = $state$4;var $x33 = $x2.id;var $x0 = $UG$SIPD$State$delete_body$($x32, $x33); break; } case "False": { var $x0 = $state$4; break; } } break; } case "None": { var $x0 = _$3; break; } } break; } default: { var $x0 = _$3; break; } }return $x0; } @@ -578,6 +581,9 @@ const $V2$calculate_angle = _$0 => _$1 => $V2$calculate_angle$(_$0,_$1) function $UG$Shape$get_rotation$(_$0/*:UG/Shape*/) {var $x1 = _$0;switch ($x1.$) { case "Circle": { var $x0 = 0.0; break; } case "Polygon": { var $x2 = $x1.vertices;switch ($x2.$) { case "Nil": { var $x0 = 0.0; break; } case "Cons": { var $x3 = $x2.tail;switch ($x3.$) { case "Nil": { var $x0 = 0.0; break; } case "Cons": { var $x5 = $x3.head;var $x4 = $V2$x$($x5);var $x7 = $x2.head;var $x6 = $V2$x$($x7);var $dx$0 = $F64$sub$($x4, $x6);var $x9 = $x3.head;var $x8 = $V2$y$($x9);var $x11 = $x2.head;var $x10 = $V2$y$($x11);var $dy$1 = $F64$sub$($x8, $x10);var $x12 = $dy$1;var $x13 = $dx$0;var $x0 = Math.atan2($x12, $x13); break; } } break; } } break; } }return $x0; } const $UG$Shape$get_rotation = _$0 => $UG$Shape$get_rotation$(_$0) +function $calculate_angle_diff$(_$0/*:Number*/) {var $x3 = _$0;var $x2 = $F64$abs$($x3);var $x4 = 3.1415;var $x1 = $F64$gt$($x2, $x4);switch ($x1.$) { case "False": { var $x0 = _$0; break; } case "True": { var $x5 = _$0;var $x9 = _$0;var $x10 = 2.0;var $x8 = $F64$mul$($x9, $x10);var $x11 = 3.1415;var $x7 = $F64$mul$($x8, $x11);var $x6 = $F64$sign$($x7);var $x0 = $F64$sub$($x5, $x6); break; } }return $x0; } +const $calculate_angle_diff = _$0 => $calculate_angle_diff$(_$0) + function $V2$rotate$(_$0/*:V2*/,_$1/*:Number*/) {var $x1 = _$0;var $x2 = _$1;var $x3 = 0.0;var $cos_theta$0 = Math.cos($x2);var $x4 = _$1;var $x5 = 0.0;var $sin_theta$1 = Math.sin($x4);var $x7 = $x1.x;var $x8 = $cos_theta$0;var $x6 = $F64$mul$($x7, $x8);var $x10 = $x1.y;var $x11 = $sin_theta$1;var $x9 = $F64$mul$($x10, $x11);var $new_x$2 = $F64$sub$($x6, $x9);var $x13 = $x1.x;var $x14 = $sin_theta$1;var $x12 = $F64$mul$($x13, $x14);var $x16 = $x1.y;var $x17 = $cos_theta$0;var $x15 = $F64$mul$($x16, $x17);var $new_y$3 = $F64$add$($x12, $x15);var $x0 = ({$: "V2"});var $x18 = $new_x$2;$x0.x = $x18;var $x19 = $new_y$3;$x0.y = $x19;return $x0; } const $V2$rotate = _$0 => _$1 => $V2$rotate$(_$0,_$1) @@ -590,7 +596,7 @@ const $UG$SIPD$GameMap$insert_body = _$0 => _$1 => $UG$SIPD$GameMap$insert_body$ function $UG$SIPD$State$insert_body$(_$0/*:UG/SIPD/State*/,_$1/*:UG/SIPD/Body*/) {var $x1 = _$0;var $x2 = $x1.game_map;var $x3 = _$1;var $new_game_map$0 = $UG$SIPD$GameMap$insert_body$($x2, $x3);var $x0 = ({$: "State"});var $x4 = $x1.next_id;$x0.next_id = $x4;var $x5 = $x1.tick;$x0.tick = $x5;var $x6 = $x1.players;$x0.players = $x6;var $x7 = $x1.hero_states;$x0.hero_states = $x7;var $x8 = $new_game_map$0;$x0.game_map = $x8;return $x0; } const $UG$SIPD$State$insert_body = _$0 => _$1 => $UG$SIPD$State$insert_body$(_$0,_$1) -function $UG$SIPD$Effect$tick_disintegrate_line$(_$0/*:BigInt*/,_$1/*:BigInt*/,_$2/*:Number*/,_$3/*:Number*/,_$4/*:Number*/,_$5/*:UG/SIPD/State*/) {var $x1 = _$5;var $x2 = $x1.game_map;var $x4 = _$0;var $x5 = $x2.bodies;var $x3 = $UG$SIPD$Body$get_body$($x4, $x5);switch ($x3.$) { case "None": { var $x0 = ({$: "State"});var $x6 = $x1.next_id;$x0.next_id = $x6;var $x7 = $x1.tick;$x0.tick = $x7;var $x8 = $x1.players;$x0.players = $x8;var $x9 = $x1.hero_states;$x0.hero_states = $x9;var $x10 = ({$: "GameMap"});var $x11 = $x2.width;$x10.width = $x11;var $x12 = $x2.height;$x10.height = $x12;var $x13 = $x2.bodies;$x10.bodies = $x13;var $x14 = $x2.bodies_count;$x10.bodies_count = $x14;$x0.game_map = $x10; break; } case "Some": { var $x16 = _$1;var $x17 = $x2.bodies;var $x15 = $UG$SIPD$Body$get_body$($x16, $x17);switch ($x15.$) { case "None": { var $x0 = ({$: "State"});var $x18 = $x1.next_id;$x0.next_id = $x18;var $x19 = $x1.tick;$x0.tick = $x19;var $x20 = $x1.players;$x0.players = $x20;var $x21 = $x1.hero_states;$x0.hero_states = $x21;var $x22 = ({$: "GameMap"});var $x23 = $x2.width;$x22.width = $x23;var $x24 = $x2.height;$x22.height = $x24;var $x25 = $x2.bodies;$x22.bodies = $x25;var $x26 = $x2.bodies_count;$x22.bodies_count = $x26;$x0.game_map = $x22; break; } case "Some": { var $x28 = $UG$SIPD$Player;var $x29 = $x1.players;var $x30 = _$1;var $x27 = $Map$get$($x28, $x29, $x30);switch ($x27.$) { case "None": { var $x0 = ({$: "State"});var $x31 = $x1.next_id;$x0.next_id = $x31;var $x32 = $x1.tick;$x0.tick = $x32;var $x33 = $x1.players;$x0.players = $x33;var $x34 = $x1.hero_states;$x0.hero_states = $x34;var $x35 = ({$: "GameMap"});var $x36 = $x2.width;$x35.width = $x36;var $x37 = $x2.height;$x35.height = $x37;var $x38 = $x2.bodies;$x35.bodies = $x38;var $x39 = $x2.bodies_count;$x35.bodies_count = $x39;$x0.game_map = $x35; break; } case "Some": { var $got$0 = $x15.value;var $x40 = $got$0;var $x41 = $x40.hitbox;var $hero_pos$1 = $UG$Shape$get_center$($x41);var $x42 = $hero_pos$1;var $x43 = _$2;var $x44 = _$3;var $def_line$2 = $UG$Shape$start_centered_rectangle$($x42, $x43, $x44);var $got$3 = $x3.value;var $x45 = $got$3;var $got$4 = $x27.value;var $x46 = $got$4;var $x47 = $hero_pos$1;var $x48 = $x46.target;var $target_angle$5 = $V2$calculate_angle$($x47, $x48);var $x49 = $x45.hitbox;var $current_angle$6 = $UG$Shape$get_rotation$($x49);var $x50 = $target_angle$5;var $x51 = $current_angle$6;var $angle_diff$7 = $F64$sub$($x50, $x51);var $x54 = $angle_diff$7;var $x53 = $F64$abs$($x54);var $x55 = _$4;var $x52 = $F64$gt$($x53, $x55);switch ($x52.$) { case "True": { var $x56 = $current_angle$6;var $x58 = _$4;var $x60 = $angle_diff$7;var $x59 = $F64$sign$($x60);var $x57 = $F64$mul$($x58, $x59);var $new_angle$8 = $F64$add$($x56, $x57);var $x61 = $def_line$2;var $x62 = $new_angle$8;var $new_line_shape$9 = $UG$Shape$rotate$($x61, $x62);var $x63 = ({$: "State"});var $x64 = $x1.next_id;$x63.next_id = $x64;var $x65 = $x1.tick;$x63.tick = $x65;var $x66 = $x1.players;$x63.players = $x66;var $x67 = $x1.hero_states;$x63.hero_states = $x67;var $x68 = ({$: "GameMap"});var $x69 = $x2.width;$x68.width = $x69;var $x70 = $x2.height;$x68.height = $x70;var $x71 = $x2.bodies;$x68.bodies = $x71;var $x72 = $x2.bodies_count;$x68.bodies_count = $x72;$x63.game_map = $x68;var $x73 = ({$: "Body"});var $x74 = $x45.id;$x73.id = $x74;var $x75 = $new_line_shape$9;$x73.hitbox = $x75;var $x76 = $x45.tick;$x73.tick = $x76;var $x77 = $x45.effects;$x73.effects = $x77;var $x78 = $x45.collidable;$x73.collidable = $x78;var $new_state$10 = $UG$SIPD$State$insert_body$($x63, $x73);var $x79 = ({$: "Body"});var $x80 = $x45.id;$x79.id = $x80;var $x81 = $new_line_shape$9;$x79.hitbox = $x81;var $x82 = $x45.tick;$x79.tick = $x82;var $x83 = $x45.effects;$x79.effects = $x83;var $x84 = $x45.collidable;$x79.collidable = $x84;var $x85 = $new_state$10;var $x0 = $UG$SIPD$Body$apply_effects$($x79, $x85); break; } case "False": { var $new_angle$8 = $target_angle$5;var $x86 = $def_line$2;var $x87 = $new_angle$8;var $new_line_shape$9 = $UG$Shape$rotate$($x86, $x87);var $x88 = ({$: "State"});var $x89 = $x1.next_id;$x88.next_id = $x89;var $x90 = $x1.tick;$x88.tick = $x90;var $x91 = $x1.players;$x88.players = $x91;var $x92 = $x1.hero_states;$x88.hero_states = $x92;var $x93 = ({$: "GameMap"});var $x94 = $x2.width;$x93.width = $x94;var $x95 = $x2.height;$x93.height = $x95;var $x96 = $x2.bodies;$x93.bodies = $x96;var $x97 = $x2.bodies_count;$x93.bodies_count = $x97;$x88.game_map = $x93;var $x98 = ({$: "Body"});var $x99 = $x45.id;$x98.id = $x99;var $x100 = $new_line_shape$9;$x98.hitbox = $x100;var $x101 = $x45.tick;$x98.tick = $x101;var $x102 = $x45.effects;$x98.effects = $x102;var $x103 = $x45.collidable;$x98.collidable = $x103;var $new_state$10 = $UG$SIPD$State$insert_body$($x88, $x98);var $x104 = ({$: "Body"});var $x105 = $x45.id;$x104.id = $x105;var $x106 = $new_line_shape$9;$x104.hitbox = $x106;var $x107 = $x45.tick;$x104.tick = $x107;var $x108 = $x45.effects;$x104.effects = $x108;var $x109 = $x45.collidable;$x104.collidable = $x109;var $x110 = $new_state$10;var $x0 = $UG$SIPD$Body$apply_effects$($x104, $x110); break; } } break; } } break; } } break; } }return $x0; } +function $UG$SIPD$Effect$tick_disintegrate_line$(_$0/*:BigInt*/,_$1/*:BigInt*/,_$2/*:Number*/,_$3/*:Number*/,_$4/*:Number*/,_$5/*:UG/SIPD/State*/) {var $x1 = _$5;var $x2 = $x1.game_map;var $x4 = _$0;var $x5 = $x2.bodies;var $x3 = $UG$SIPD$Body$get_body$($x4, $x5);switch ($x3.$) { case "None": { var $x0 = ({$: "State"});var $x6 = $x1.next_id;$x0.next_id = $x6;var $x7 = $x1.tick;$x0.tick = $x7;var $x8 = $x1.players;$x0.players = $x8;var $x9 = $x1.hero_states;$x0.hero_states = $x9;var $x10 = ({$: "GameMap"});var $x11 = $x2.width;$x10.width = $x11;var $x12 = $x2.height;$x10.height = $x12;var $x13 = $x2.bodies;$x10.bodies = $x13;var $x14 = $x2.bodies_count;$x10.bodies_count = $x14;$x0.game_map = $x10; break; } case "Some": { var $x16 = _$1;var $x17 = $x2.bodies;var $x15 = $UG$SIPD$Body$get_body$($x16, $x17);switch ($x15.$) { case "None": { var $x0 = ({$: "State"});var $x18 = $x1.next_id;$x0.next_id = $x18;var $x19 = $x1.tick;$x0.tick = $x19;var $x20 = $x1.players;$x0.players = $x20;var $x21 = $x1.hero_states;$x0.hero_states = $x21;var $x22 = ({$: "GameMap"});var $x23 = $x2.width;$x22.width = $x23;var $x24 = $x2.height;$x22.height = $x24;var $x25 = $x2.bodies;$x22.bodies = $x25;var $x26 = $x2.bodies_count;$x22.bodies_count = $x26;$x0.game_map = $x22; break; } case "Some": { var $x28 = $UG$SIPD$Player;var $x29 = $x1.players;var $x30 = _$1;var $x27 = $Map$get$($x28, $x29, $x30);switch ($x27.$) { case "None": { var $x0 = ({$: "State"});var $x31 = $x1.next_id;$x0.next_id = $x31;var $x32 = $x1.tick;$x0.tick = $x32;var $x33 = $x1.players;$x0.players = $x33;var $x34 = $x1.hero_states;$x0.hero_states = $x34;var $x35 = ({$: "GameMap"});var $x36 = $x2.width;$x35.width = $x36;var $x37 = $x2.height;$x35.height = $x37;var $x38 = $x2.bodies;$x35.bodies = $x38;var $x39 = $x2.bodies_count;$x35.bodies_count = $x39;$x0.game_map = $x35; break; } case "Some": { var $got$0 = $x15.value;var $x40 = $got$0;var $x41 = $x40.hitbox;var $hero_pos$1 = $UG$Shape$get_center$($x41);var $x42 = $hero_pos$1;var $x43 = _$2;var $x44 = _$3;var $def_line$2 = $UG$Shape$start_centered_rectangle$($x42, $x43, $x44);var $got$3 = $x3.value;var $x45 = $got$3;var $got$4 = $x27.value;var $x46 = $got$4;var $x49 = $hero_pos$1;var $x50 = $x46.target;var $x47 = $V2$calculate_angle$($x49, $x50);var $x48 = 0.0;var $target_angle$5 = (Math.round($x47 * Math.pow(10, 2)) / Math.pow(10, 2));var $x53 = $x45.hitbox;var $x51 = $UG$Shape$get_rotation$($x53);var $x52 = 0.0;var $current_angle$6 = (Math.round($x51 * Math.pow(10, 2)) / Math.pow(10, 2));var $x56 = $target_angle$5;var $x57 = $current_angle$6;var $x54 = $F64$sub$($x56, $x57);var $x55 = 0.0;var $raw_diff$7 = (Math.round($x54 * Math.pow(10, 2)) / Math.pow(10, 2));var $x60 = $raw_diff$7;var $x58 = $calculate_angle_diff$($x60);var $x59 = 0.0;var $angle_diff$8 = (Math.round($x58 * Math.pow(10, 2)) / Math.pow(10, 2));var $x63 = $angle_diff$8;var $x62 = $F64$abs$($x63);var $x64 = _$4;var $x61 = $F64$gt$($x62, $x64);switch ($x61.$) { case "True": { var $x65 = $current_angle$6;var $x67 = _$4;var $x69 = $angle_diff$8;var $x68 = $F64$sign$($x69);var $x66 = $F64$mul$($x67, $x68);var $new_angle$9 = $F64$add$($x65, $x66);var $x70 = $def_line$2;var $x71 = $new_angle$9;var $new_line_shape$10 = $UG$Shape$rotate$($x70, $x71);var $x72 = ({$: "State"});var $x73 = $x1.next_id;$x72.next_id = $x73;var $x74 = $x1.tick;$x72.tick = $x74;var $x75 = $x1.players;$x72.players = $x75;var $x76 = $x1.hero_states;$x72.hero_states = $x76;var $x77 = ({$: "GameMap"});var $x78 = $x2.width;$x77.width = $x78;var $x79 = $x2.height;$x77.height = $x79;var $x80 = $x2.bodies;$x77.bodies = $x80;var $x81 = $x2.bodies_count;$x77.bodies_count = $x81;$x72.game_map = $x77;var $x82 = ({$: "Body"});var $x83 = $x45.id;$x82.id = $x83;var $x84 = $new_line_shape$10;$x82.hitbox = $x84;var $x85 = $x45.tick;$x82.tick = $x85;var $x86 = $x45.effects;$x82.effects = $x86;var $x87 = $x45.collidable;$x82.collidable = $x87;var $new_state$11 = $UG$SIPD$State$insert_body$($x72, $x82);var $x88 = ({$: "Body"});var $x89 = $x45.id;$x88.id = $x89;var $x90 = $new_line_shape$10;$x88.hitbox = $x90;var $x91 = $x45.tick;$x88.tick = $x91;var $x92 = $x45.effects;$x88.effects = $x92;var $x93 = $x45.collidable;$x88.collidable = $x93;var $x94 = $new_state$11;var $x0 = $UG$SIPD$Body$apply_effects$($x88, $x94); break; } case "False": { var $new_angle$9 = $target_angle$5;var $x95 = $def_line$2;var $x96 = $new_angle$9;var $new_line_shape$10 = $UG$Shape$rotate$($x95, $x96);var $x97 = ({$: "State"});var $x98 = $x1.next_id;$x97.next_id = $x98;var $x99 = $x1.tick;$x97.tick = $x99;var $x100 = $x1.players;$x97.players = $x100;var $x101 = $x1.hero_states;$x97.hero_states = $x101;var $x102 = ({$: "GameMap"});var $x103 = $x2.width;$x102.width = $x103;var $x104 = $x2.height;$x102.height = $x104;var $x105 = $x2.bodies;$x102.bodies = $x105;var $x106 = $x2.bodies_count;$x102.bodies_count = $x106;$x97.game_map = $x102;var $x107 = ({$: "Body"});var $x108 = $x45.id;$x107.id = $x108;var $x109 = $new_line_shape$10;$x107.hitbox = $x109;var $x110 = $x45.tick;$x107.tick = $x110;var $x111 = $x45.effects;$x107.effects = $x111;var $x112 = $x45.collidable;$x107.collidable = $x112;var $new_state$11 = $UG$SIPD$State$insert_body$($x97, $x107);var $x113 = ({$: "Body"});var $x114 = $x45.id;$x113.id = $x114;var $x115 = $new_line_shape$10;$x113.hitbox = $x115;var $x116 = $x45.tick;$x113.tick = $x116;var $x117 = $x45.effects;$x113.effects = $x117;var $x118 = $x45.collidable;$x113.collidable = $x118;var $x119 = $new_state$11;var $x0 = $UG$SIPD$Body$apply_effects$($x113, $x119); break; } } break; } } break; } } break; } }return $x0; } const $UG$SIPD$Effect$tick_disintegrate_line = _$0 => _$1 => _$2 => _$3 => _$4 => _$5 => $UG$SIPD$Effect$tick_disintegrate_line$(_$0,_$1,_$2,_$3,_$4,_$5) function $disintegrate$create_disintegrate_line$(_$0/*:BigInt*/,_$1/*:BigInt*/,_$2/*:Number*/,_$3/*:Number*/,_$4/*:Number*/,_$5/*:V2*/,_$6/*:V2*/) {var $x2 = _$6;var $x3 = _$5;var $x1 = $V2$sub$($x2, $x3);var $direction$0 = $V2$normalize$($x1);var $center$1 = _$5;var $x4 = $center$1;var $x5 = _$2;var $x6 = _$3;var $body_shape$2 = $UG$Shape$start_centered_rectangle$($x4, $x5, $x6);var $x11 = $UG$SIPD$Effect$tick_disintegrate_line;var $x12 = _$0;var $x10 = ($x11)($x12);var $x13 = _$1;var $x9 = ($x10)($x13);var $x14 = _$2;var $x8 = ($x9)($x14);var $x15 = _$3;var $x7 = ($x8)($x15);var $x16 = _$4;var $body_tick$3 = ($x7)($x16);var $x0 = ({$: "Body"});var $x17 = _$0;$x0.id = $x17;var $x18 = $body_shape$2;$x0.hitbox = $x18;var $x19 = $body_tick$3;$x0.tick = $x19;var $x20 = ({$: "Nil"});$x0.effects = $x20;var $x21 = ({$: "Untouchable"});$x0.collidable = $x21;return $x0; } @@ -815,7 +821,7 @@ const $update_player_key = _$0 => _$1 => _$2 => _$3 => _$4 => _$5 => $update_pla function $update_player_target$(_$0/*:Maybe*/,_$1/*:Number*/,_$2/*:Number*/,_$3/*:BigInt*/,_$4/*:Map>*/) {var $x1 = _$0;switch ($x1.$) { case "None": { var $x0 = _$4; break; } case "Some": { var $x2 = $x1.value;var $x3 = $UG$SIPD$Player;var $x4 = _$4;var $x5 = _$3;var $x6 = ({$: "Player"});var $x7 = $x2.id;$x6.id = $x7;var $x8 = $x2.name;$x6.name = $x8;var $x9 = $x2.keys;$x6.keys = $x9;var $x10 = ({$: "V2"});var $x11 = _$1;$x10.x = $x11;var $x12 = _$2;$x10.y = $x12;$x6.target = $x10;var $x13 = $x2.hero;$x6.hero = $x13;var $x0 = $Map$insert$($x3, $x4, $x5, $x6); break; } }return $x0; } const $update_player_target = _$0 => _$1 => _$2 => _$3 => _$4 => $update_player_target$(_$0,_$1,_$2,_$3,_$4) -function $handle_event$(_$0/*:UG/SIPD/Event*/) {var $x1 = _$0;switch ($x1.$) { case "ActionEvent": { var $x2 = $x1.action;var $x0 = ($__3$0 => {var $x4 = $__3$0;var $x5 = $UG$SIPD$Player;var $x6 = $x4.players;var $x7 = $x2.pid;var $action_player$1 = $Map$get$($x5, $x6, $x7);var $x8 = $action_player$1;var $x9 = $x2.nick;var $x10 = $x2.pid;var $x11 = $x4.players;var $updated_players$2 = $update_player_name$($x8, $x9, $x10, $x11);var $x3 = ({$: "State"});var $x12 = $x4.next_id;$x3.next_id = $x12;var $x13 = $x4.tick;$x3.tick = $x13;var $x14 = $updated_players$2;$x3.players = $x14;var $x15 = $x4.hero_states;$x3.hero_states = $x15;var $x16 = $x4.game_map;$x3.game_map = $x16;return $x3;}); break; } case "KeyEvent": { var $x0 = ($__4$0 => {var $x18 = $__4$0;var $x19 = $UG$SIPD$Player;var $x20 = $x18.players;var $x21 = $x1.pid;var $action_player$1 = $Map$get$($x19, $x20, $x21);var $x23 = $x1.key;var $x24 = $action_player$1;var $x22 = $get_key_value$($x23, $x24);var $old_value$2 = $get_mouse_pos$($x22);var $x25 = $action_player$1;var $x26 = $x1.key;var $x27 = $x1.pressed;var $x28 = $x1.pid;var $x29 = $old_value$2;var $x30 = $x18.players;var $updated_players$3 = $update_player_key$($x25, $x26, $x27, $x28, $x29, $x30);var $x17 = ({$: "State"});var $x31 = $x18.next_id;$x17.next_id = $x31;var $x32 = $x18.tick;$x17.tick = $x32;var $x33 = $updated_players$3;$x17.players = $x33;var $x34 = $x18.hero_states;$x17.hero_states = $x34;var $x35 = $x18.game_map;$x17.game_map = $x35;return $x17;}); break; } case "KeyMouse": { var $x0 = ($__6$0 => {var $x37 = $__6$0;var $x38 = $UG$SIPD$Player;var $x39 = $x37.players;var $x40 = $x1.pid;var $action_player$1 = $Map$get$($x38, $x39, $x40);var $x41 = $action_player$1;var $x42 = $x1.key;var $x43 = $x1.pressed;var $x44 = $x1.pid;var $x45 = ({$: "V2"});var $x46 = $x1.x;$x45.x = $x46;var $x47 = $x1.y;$x45.y = $x47;var $x48 = $x37.players;var $updated_players$2 = $update_player_key$($x41, $x42, $x43, $x44, $x45, $x48);var $x36 = ({$: "State"});var $x49 = $x37.next_id;$x36.next_id = $x49;var $x50 = $x37.tick;$x36.tick = $x50;var $x51 = $updated_players$2;$x36.players = $x51;var $x52 = $x37.hero_states;$x36.hero_states = $x52;var $x53 = $x37.game_map;$x36.game_map = $x53;return $x36;}); break; } case "MouseClick": { var $x54 = $x1.click;switch ($x54.$) { case "LeftButton": { var $x0 = ($__4$0 => {var $x56 = $__4$0;var $x57 = $UG$SIPD$Player;var $x58 = $x56.players;var $x59 = $x1.pid;var $action_player$1 = $Map$get$($x57, $x58, $x59);var $x60 = $action_player$1;var $x61 = $x1.x;var $x62 = $x1.y;var $x63 = $x1.pid;var $x64 = $x56.players;var $updated_players$2 = $update_player_target$($x60, $x61, $x62, $x63, $x64);var $x55 = ({$: "State"});var $x65 = $x56.next_id;$x55.next_id = $x65;var $x66 = $x56.tick;$x55.tick = $x66;var $x67 = $updated_players$2;$x55.players = $x67;var $x68 = $x56.hero_states;$x55.hero_states = $x68;var $x69 = $x56.game_map;$x55.game_map = $x69;return $x55;}); break; } case "RightButton": { var $x0 = ($__4$0 => {var $x71 = $__4$0;var $x72 = $UG$SIPD$Player;var $x73 = $x71.players;var $x74 = $x1.pid;var $action_player$1 = $Map$get$($x72, $x73, $x74);var $x75 = $action_player$1;var $x76 = $x1.x;var $x77 = $x1.y;var $x78 = $x1.pid;var $x79 = $x71.players;var $updated_players$2 = $update_player_target$($x75, $x76, $x77, $x78, $x79);var $x70 = ({$: "State"});var $x80 = $x71.next_id;$x70.next_id = $x80;var $x81 = $x71.tick;$x70.tick = $x81;var $x82 = $updated_players$2;$x70.players = $x82;var $x83 = $x71.hero_states;$x70.hero_states = $x83;var $x84 = $x71.game_map;$x70.game_map = $x84;return $x70;}); break; } } break; } case "MouseMove": { var $x0 = ($__4$0 => {var $x86 = $__4$0;var $x85 = ({$: "State"});var $x87 = $x86.next_id;$x85.next_id = $x87;var $x88 = $x86.tick;$x85.tick = $x88;var $x89 = $x86.players;$x85.players = $x89;var $x90 = $x86.hero_states;$x85.hero_states = $x90;var $x91 = $x86.game_map;$x85.game_map = $x91;return $x85;}); break; } }return $x0; } +function $handle_event$(_$0/*:UG/SIPD/Event*/) {var $x1 = _$0;switch ($x1.$) { case "ActionEvent": { var $x2 = $x1.action;var $x0 = ($__3$0 => {var $x4 = $__3$0;var $x5 = $UG$SIPD$Player;var $x6 = $x4.players;var $x7 = $x2.pid;var $action_player$1 = $Map$get$($x5, $x6, $x7);var $x8 = $action_player$1;var $x9 = $x2.nick;var $x10 = $x2.pid;var $x11 = $x4.players;var $updated_players$2 = $update_player_name$($x8, $x9, $x10, $x11);var $x3 = ({$: "State"});var $x12 = $x4.next_id;$x3.next_id = $x12;var $x13 = $x4.tick;$x3.tick = $x13;var $x14 = $updated_players$2;$x3.players = $x14;var $x15 = $x4.hero_states;$x3.hero_states = $x15;var $x16 = $x4.game_map;$x3.game_map = $x16;return $x3;}); break; } case "KeyEvent": { var $x0 = ($__4$0 => {var $x18 = $__4$0;var $x19 = $UG$SIPD$Player;var $x20 = $x18.players;var $x21 = $x1.pid;var $action_player$1 = $Map$get$($x19, $x20, $x21);var $x23 = $x1.key;var $x24 = $action_player$1;var $x22 = $get_key_value$($x23, $x24);var $old_value$2 = $get_mouse_pos$($x22);var $x25 = $action_player$1;var $x26 = $x1.key;var $x27 = $x1.pressed;var $x28 = $x1.pid;var $x29 = $old_value$2;var $x30 = $x18.players;var $updated_players$3 = $update_player_key$($x25, $x26, $x27, $x28, $x29, $x30);var $x17 = ({$: "State"});var $x31 = $x18.next_id;$x17.next_id = $x31;var $x32 = $x18.tick;$x17.tick = $x32;var $x33 = $updated_players$3;$x17.players = $x33;var $x34 = $x18.hero_states;$x17.hero_states = $x34;var $x35 = $x18.game_map;$x17.game_map = $x35;return $x17;}); break; } case "KeyMouse": { var $x0 = ($__6$0 => {var $x37 = $__6$0;var $x38 = $UG$SIPD$Player;var $x39 = $x37.players;var $x40 = $x1.pid;var $action_player$1 = $Map$get$($x38, $x39, $x40);var $x41 = $action_player$1;var $x42 = $x1.key;var $x43 = $x1.pressed;var $x44 = $x1.pid;var $x46 = ({$: "V2"});var $x47 = $x1.x;$x46.x = $x47;var $x48 = $x1.y;$x46.y = $x48;var $x45 = $V2$round$($x46);var $x49 = $x37.players;var $updated_players$2 = $update_player_key$($x41, $x42, $x43, $x44, $x45, $x49);var $x36 = ({$: "State"});var $x50 = $x37.next_id;$x36.next_id = $x50;var $x51 = $x37.tick;$x36.tick = $x51;var $x52 = $updated_players$2;$x36.players = $x52;var $x53 = $x37.hero_states;$x36.hero_states = $x53;var $x54 = $x37.game_map;$x36.game_map = $x54;return $x36;}); break; } case "MouseClick": { var $x55 = $x1.click;switch ($x55.$) { case "LeftButton": { var $x0 = ($__4$0 => {var $x57 = $__4$0;var $x58 = $UG$SIPD$Player;var $x59 = $x57.players;var $x60 = $x1.pid;var $action_player$1 = $Map$get$($x58, $x59, $x60);var $x61 = $action_player$1;var $x63 = $x1.x;var $x64 = 0.0;var $x62 = (Math.round($x63 * Math.pow(10, 2)) / Math.pow(10, 2));var $x66 = $x1.y;var $x67 = 0.0;var $x65 = (Math.round($x66 * Math.pow(10, 2)) / Math.pow(10, 2));var $x68 = $x1.pid;var $x69 = $x57.players;var $updated_players$2 = $update_player_target$($x61, $x62, $x65, $x68, $x69);var $x56 = ({$: "State"});var $x70 = $x57.next_id;$x56.next_id = $x70;var $x71 = $x57.tick;$x56.tick = $x71;var $x72 = $updated_players$2;$x56.players = $x72;var $x73 = $x57.hero_states;$x56.hero_states = $x73;var $x74 = $x57.game_map;$x56.game_map = $x74;return $x56;}); break; } case "RightButton": { var $x0 = ($__4$0 => {var $x76 = $__4$0;var $x77 = $UG$SIPD$Player;var $x78 = $x76.players;var $x79 = $x1.pid;var $action_player$1 = $Map$get$($x77, $x78, $x79);var $x80 = $action_player$1;var $x82 = $x1.x;var $x83 = 0.0;var $x81 = (Math.round($x82 * Math.pow(10, 2)) / Math.pow(10, 2));var $x85 = $x1.y;var $x86 = 0.0;var $x84 = (Math.round($x85 * Math.pow(10, 2)) / Math.pow(10, 2));var $x87 = $x1.pid;var $x88 = $x76.players;var $updated_players$2 = $update_player_target$($x80, $x81, $x84, $x87, $x88);var $x75 = ({$: "State"});var $x89 = $x76.next_id;$x75.next_id = $x89;var $x90 = $x76.tick;$x75.tick = $x90;var $x91 = $updated_players$2;$x75.players = $x91;var $x92 = $x76.hero_states;$x75.hero_states = $x92;var $x93 = $x76.game_map;$x75.game_map = $x93;return $x75;}); break; } } break; } case "MouseMove": { var $x0 = ($__4$0 => {var $x95 = $__4$0;var $x94 = ({$: "State"});var $x96 = $x95.next_id;$x94.next_id = $x96;var $x97 = $x95.tick;$x94.tick = $x97;var $x98 = $x95.players;$x94.players = $x98;var $x99 = $x95.hero_states;$x94.hero_states = $x99;var $x100 = $x95.game_map;$x94.game_map = $x100;return $x94;}); break; } }return $x0; } const $handle_event = _$0 => $handle_event$(_$0) function $UG$SIPD$Game$when$(_$0/*:UG/SIPD/Event*/,_$1/*:UG/SIPD/State*/) {var $x1 = _$0;var $pid$0 = $UG$SIPD$Event$get_event_pid$($x1);var $x2 = $pid$0;var $x3 = _$0;var $x4 = _$1;var $state$1 = $handle_new_player$($x2, $x3, $x4);var $x6 = _$0;var $x5 = $handle_event$($x6);var $x7 = $state$1;var $state$2 = ($x5)($x7);var $x0 = $state$2;return $x0; } @@ -1011,4 +1017,4 @@ const $test$9$ = (() => {var $x0 = ({$: "Refl"});return $x0; })() const $test$9 = $test$9$ -export { $BinTree, $Maybe, $BinMap, $BinMap$empty, $Bits, $BinMap$get, $BinMap$new, $BinMap$set, $Bool, $Bool$and, $Bool$eq, $Bool$if, $Bool$not, $Bool$or, $Char, $U64$to_bool, $U64$eql, $Cmp, $U64$compare, $Char$compare, $Ord, $Char$Ord, $Char$eq, $Equal, $F64$negate, $F64$lt, $F64$abs, $F64$add, $F64$div, $F64$eql, $F64$eq, $F64$gt, $F64$gte, $F64$is_zero, $F64$lte, $F64$min, $F64$mul, $F64$sign, $F64$sqrt_go, $F64$sqrt, $F64$sub, $KEYEVENT, $KEYMOUSE, $List, $List$append, $List$foldr, $List$fold, $List$foldl, $List$head, $List$insert_at_sorted, $List$insertion_sort, $List$map, $List$sort, $Pair, $List$zip, $MOUSECLICK, $MOUSEMOVE, $Map$delete, $Map$empty, $U64$eq, $Map$fold$go, $Map$fold, $Map$fold$test_map, $Map$get, $Map$get$test_map, $Map$insert, $Map$update, $Map$values$go, $Map$values, $Map$values$test_map, $Maybe$none, $Nat, $Nat$add, $Nat$lte, $Nat$gte, $Nat$max, $Ord$compare, $OrdTree$Balance, $OrdTree, $OrdTree$Balance$rotate_left, $OrdTree$Balance$rotate_right, $OrdTree$empty, $OrdTree$fold, $OrdTree$get, $OrdTree$height, $Pair$get_fst, $OrdTree$insert$go, $OrdTree$insert, $OrdTree$keys, $OrdTree$singleton, $OrdTree$size, $SETNICK, $String, $String$compare, $String$Ord, $String$eq, $TPS, $U64$Ord, $U64$add, $U64$div, $U64$from_bool, $U64$gt, $U64$gte, $U64$lt, $U64$lte, $U64$max, $U64$min, $U64$mod, $U64$mul, $U64$neq, $U64$sub, $U64$to_bits, $UG$Collision$Collidable, $V2, $V2$div_scalar, $V2$length, $V2$is_zero, $V2$normalize, $V2$sub, $UG$Shape$segments, $V2$dot, $V2$point_to_segment_distance, $UG$Shape$closest_point_on_polygon$go, $UG$Shape$closest_point_on_polygon, $UG$Shape$abs_vertices$go, $UG$Shape, $UG$Shape$abs_vertices, $V2$new, $closest_point_polygon_polygon, $UG$Collision$calculate_collision_normal, $UG$Shape$get_center, $V2$add, $UG$Shape$move, $V2$sqr_dist, $V2$dist, $V2$x, $V2$y, $is_right_side, $process_edge, $point_in_polygon$go, $UG$Shape$point_in_polygon, $UG$Shape$any_vertex_inside, $UG$Shape$line_line_intersection, $UG$Shape$check_against_all, $UG$Shape$any_edges_intersect, $UG$Shape$collide, $UG$SIPD$Effect, $UG$SIPD$Skill, $UG$SIPD$Hero, $UG$SIPD$Player, $UG$SIPD$Hero$HeroState, $UG$SIPD$GameMap, $UG$SIPD$State, $UG$SIPD$Body, $UG$SIPD$Body$find_collision, $V2$mul_scalar, $collide_and_slide$handle_collidable, $collide_and_slide$go, $UG$Collision$collide_and_slide, $UG$SIPD$Action, $UG$SIPD$Action$eq, $UG$SIPD$Body$set_effects, $UG$SIPD$Effect$apply, $UG$SIPD$Body$apply_effects$go, $UG$SIPD$Body$apply_effects, $UG$SIPD$Body$delete_body, $UG$SIPD$Body$get_body, $UG$SIPD$Body$tick, $UG$SIPD$GameMap$delete_body, $UG$SIPD$State$delete_body, $UG$SIPD$GameMap$update_body, $UG$SIPD$State$update_body, $UG$SIPD$Effect$accelerated_move_range, $damage$handle_collidable, $UG$SIPD$GameMap$get_body, $UG$SIPD$Effect$collide_and_damage, $dps$handle_collidable, $UG$SIPD$Effect$collide_and_dps, $UG$SIPD$Player$get_mouse_pos, $UG$SIPD$State$generate_id, $UG$Shape$start_centered_rectangle, $V2$calculate_angle, $UG$Shape$get_rotation, $V2$rotate, $UG$Shape$rotate, $UG$SIPD$GameMap$insert_body, $UG$SIPD$State$insert_body, $UG$SIPD$Effect$tick_disintegrate_line, $disintegrate$create_disintegrate_line, $UG$SIPD$Effect$spawn_body, $UG$SIPD$Effect$with_duration, $UG$SIPD$Hero$HeroState$update_cooldown, $disintegrate$block_player_movement, $UG$SIPD$Effect$disintegrate, $V2$mul, $knockback$handle_collidable, $UG$SIPD$Effect$knockback, $V2$perpendicular, $magic_missiles$calculate_targets, $UG$Shape$circle, $magic_missiles$tick_projectile, $magic_missiles$create_projectile, $magic_missiles$go, $UG$SIPD$Effect$magic_missiles, $UG$SIPD$Effect$move, $UG$SIPD$Effect$move_range, $grow_projectile, $tick_projectile, $shoot$go, $UG$SIPD$Effect$shoot, $UG$SIPD$Effect$teleport, $tick_wave, $create_wave_body, $UG$SIPD$Effect$wave_of_force, $UG$SIPD$Event$Click, $UG$SIPD$Event, $UG$SIPD$Event$Click$eq, $UG$SIPD$Event$eq, $UG$SIPD$Event$get_event_pid, $UG$SM$Game, $UG$SIPD$Game, $UG$SIPD$GameMap$initial_map, $UG$SIPD$GameMap$init, $UG$SIPD$Game$init, $update_cooldown, $decrement_cooldowns, $update_hero_state, $update_cooldowns, $UG$SIPD$Game$tick, $get_player_name, $UG$SIPD$unit_scaling, $get_body_effects_state, $UG$SIPD$Hero$HeroState$key_on_cooldown, $UG$SIPD$Skill$apply, $revert_cooldown, $get_skill, $UG$SIPD$Player$is_player_key_pressed, $UG$SIPD$Hero$apply_skill_if_pressed, $UG$SIPD$Hero$apply_pressed_skills, $apply_skill_if_not_on_cooldown, $tick, $insert_skill, $UG$SIPD$Skill$move, $UG$SIPD$Skill$teleport, $UG$SIPD$range_unit, $time_to_tick, $UG$SIPD$Skill$wave_of_force, $UG$SIPD$Skill$shoot, $UG$SIPD$Skill$magic_missiles, $UG$SIPD$Skill$disintegrate, $insert_cooldown, $make_skills, $UG$SIPD$Hero$li_ming, $p_hero, $initial_keys, $UG$SIPD$Player$init, $handle_new_player, $update_player_name, $get_mouse_pos, $get_key_value, $update_player_key, $update_player_target, $handle_event, $UG$SIPD$Game$when, $UG$SIPD$GameMap$b_tick, $UG$SM$ActionLogs, $UG$SM$Tick, $UG$SM$ActionLogs$add_action, $UG$SM$ActionLogs$get_actions, $UG$SM$Game$init, $UG$SM$Game$tick, $UG$SM$Game$when, $UG$SM$StateLogs$StateNode, $UG$SM$StateLogs, $UG$SM$Mach, $UG$SM$Mach$action_logs, $UG$SM$Mach$cached_tick, $UG$SM$StateLogs$StateNode$keep, $UG$SM$StateLogs$StateNode$life, $UG$SM$StateLogs$StateNode$older, $UG$SM$StateLogs$StateNode$set_keep, $UG$SM$StateLogs$StateNode$set_life, $UG$SM$StateLogs$StateNode$state, $UG$SM$StateLogs$StateNode$tick, $UG$SM$StateLogs$find_rollback_amount$go, $UG$SM$StateLogs$find_rollback_amount, $UG$SM$StateLogs$push$go$life, $UG$SM$StateLogs$push$go, $UG$SM$StateLogs$push, $UG$SM$StateLogs$rollback$go, $UG$SM$StateLogs$rollback, $UG$SM$Time, $UG$SM$Time$time_to_tick, $UG$SM$TimedAction, $UG$SM$TimedAction$time_action, $UG$SM$add_action_to_logs, $UG$SM$get_initial_state, $UG$SM$update_mach, $UG$SM$compute$go, $UG$SM$compute, $UG$SM$new_mach, $UG$SM$update_genesis_tick, $UG$SM$update_cached_tick, $UG$SM$remove_future_states, $UG$SM$register_action, $UG$Shape$line_circle_intersection, $UG$Shape$check_edges, $export_action_eq, $export_compute, $export_game, $export_game_init, $export_game_tick, $export_game_when, $export_register_action, $export_time_action, $export_time_to_tick, $test$0, $test$1, $test$10, $test$2, $test$3, $test$4, $test$5, $test$6, $test$7, $test$8, $test$9 } +export { $BinTree, $Maybe, $BinMap, $BinMap$empty, $Bits, $BinMap$get, $BinMap$new, $BinMap$set, $Bool, $Bool$and, $Bool$eq, $Bool$if, $Bool$not, $Bool$or, $Char, $U64$to_bool, $U64$eql, $Cmp, $U64$compare, $Char$compare, $Ord, $Char$Ord, $Char$eq, $Equal, $F64$negate, $F64$lt, $F64$abs, $F64$add, $F64$div, $F64$eql, $F64$eq, $F64$gt, $F64$gte, $F64$is_zero, $F64$lte, $F64$min, $F64$mul, $F64$sign, $F64$sqrt_go, $F64$sqrt, $F64$sub, $KEYEVENT, $KEYMOUSE, $List, $List$append, $List$foldr, $List$fold, $List$foldl, $List$head, $List$insert_at_sorted, $List$insertion_sort, $List$map, $List$sort, $Pair, $List$zip, $MOUSECLICK, $MOUSEMOVE, $Map$delete, $Map$empty, $U64$eq, $Map$fold$go, $Map$fold, $Map$fold$test_map, $Map$get, $Map$get$test_map, $Map$insert, $Map$update, $Map$values$go, $Map$values, $Map$values$test_map, $Maybe$none, $Nat, $Nat$add, $Nat$lte, $Nat$gte, $Nat$max, $Ord$compare, $OrdTree$Balance, $OrdTree, $OrdTree$Balance$rotate_left, $OrdTree$Balance$rotate_right, $OrdTree$empty, $OrdTree$fold, $OrdTree$get, $OrdTree$height, $Pair$get_fst, $OrdTree$insert$go, $OrdTree$insert, $OrdTree$keys, $OrdTree$singleton, $OrdTree$size, $SETNICK, $String, $String$compare, $String$Ord, $String$eq, $TPS, $U64$Ord, $U64$add, $U64$div, $U64$from_bool, $U64$gt, $U64$gte, $U64$lt, $U64$lte, $U64$max, $U64$min, $U64$mod, $U64$mul, $U64$neq, $U64$sub, $U64$to_bits, $UG$Collision$Collidable, $V2, $V2$div_scalar, $V2$length, $V2$is_zero, $V2$normalize, $V2$sub, $UG$Shape$segments, $V2$dot, $V2$point_to_segment_distance, $UG$Shape$closest_point_on_polygon$go, $UG$Shape$closest_point_on_polygon, $UG$Shape$abs_vertices$go, $UG$Shape, $UG$Shape$abs_vertices, $V2$new, $closest_point_polygon_polygon, $UG$Collision$calculate_collision_normal, $UG$Shape$get_center, $V2$add, $UG$Shape$move, $V2$sqr_dist, $V2$dist, $V2$x, $V2$y, $is_right_side, $process_edge, $point_in_polygon$go, $UG$Shape$point_in_polygon, $UG$Shape$any_vertex_inside, $UG$Shape$line_line_intersection, $UG$Shape$check_against_all, $UG$Shape$any_edges_intersect, $UG$Shape$collide, $UG$SIPD$Effect, $UG$SIPD$Skill, $UG$SIPD$Hero, $UG$SIPD$Player, $UG$SIPD$Hero$HeroState, $UG$SIPD$GameMap, $UG$SIPD$State, $UG$SIPD$Body, $UG$SIPD$Body$find_collision, $V2$mul_scalar, $collide_and_slide$handle_collidable, $collide_and_slide$go, $UG$Collision$collide_and_slide, $UG$SIPD$Action, $UG$SIPD$Action$eq, $UG$SIPD$Body$set_effects, $UG$SIPD$Effect$apply, $UG$SIPD$Body$apply_effects$go, $UG$SIPD$Body$apply_effects, $UG$SIPD$Body$delete_body, $UG$SIPD$Body$get_body, $UG$SIPD$Body$tick, $UG$SIPD$GameMap$delete_body, $UG$SIPD$State$delete_body, $V2$round, $UG$SIPD$GameMap$update_body, $UG$SIPD$State$update_body, $UG$SIPD$Effect$accelerated_move_range, $damage$handle_collidable, $UG$SIPD$GameMap$get_body, $UG$SIPD$Effect$collide_and_damage, $dps$handle_collidable, $UG$SIPD$Effect$collide_and_dps, $UG$SIPD$Player$get_mouse_pos, $UG$SIPD$State$generate_id, $UG$Shape$start_centered_rectangle, $V2$calculate_angle, $UG$Shape$get_rotation, $calculate_angle_diff, $V2$rotate, $UG$Shape$rotate, $UG$SIPD$GameMap$insert_body, $UG$SIPD$State$insert_body, $UG$SIPD$Effect$tick_disintegrate_line, $disintegrate$create_disintegrate_line, $UG$SIPD$Effect$spawn_body, $UG$SIPD$Effect$with_duration, $UG$SIPD$Hero$HeroState$update_cooldown, $disintegrate$block_player_movement, $UG$SIPD$Effect$disintegrate, $V2$mul, $knockback$handle_collidable, $UG$SIPD$Effect$knockback, $V2$perpendicular, $magic_missiles$calculate_targets, $UG$Shape$circle, $magic_missiles$tick_projectile, $magic_missiles$create_projectile, $magic_missiles$go, $UG$SIPD$Effect$magic_missiles, $UG$SIPD$Effect$move, $UG$SIPD$Effect$move_range, $grow_projectile, $tick_projectile, $shoot$go, $UG$SIPD$Effect$shoot, $UG$SIPD$Effect$teleport, $tick_wave, $create_wave_body, $UG$SIPD$Effect$wave_of_force, $UG$SIPD$Event$Click, $UG$SIPD$Event, $UG$SIPD$Event$Click$eq, $UG$SIPD$Event$eq, $UG$SIPD$Event$get_event_pid, $UG$SM$Game, $UG$SIPD$Game, $UG$SIPD$GameMap$initial_map, $UG$SIPD$GameMap$init, $UG$SIPD$Game$init, $update_cooldown, $decrement_cooldowns, $update_hero_state, $update_cooldowns, $UG$SIPD$Game$tick, $get_player_name, $UG$SIPD$unit_scaling, $get_body_effects_state, $UG$SIPD$Hero$HeroState$key_on_cooldown, $UG$SIPD$Skill$apply, $revert_cooldown, $get_skill, $UG$SIPD$Player$is_player_key_pressed, $UG$SIPD$Hero$apply_skill_if_pressed, $UG$SIPD$Hero$apply_pressed_skills, $apply_skill_if_not_on_cooldown, $tick, $insert_skill, $UG$SIPD$Skill$move, $UG$SIPD$Skill$teleport, $UG$SIPD$range_unit, $time_to_tick, $UG$SIPD$Skill$wave_of_force, $UG$SIPD$Skill$shoot, $UG$SIPD$Skill$magic_missiles, $UG$SIPD$Skill$disintegrate, $insert_cooldown, $make_skills, $UG$SIPD$Hero$li_ming, $p_hero, $initial_keys, $UG$SIPD$Player$init, $handle_new_player, $update_player_name, $get_mouse_pos, $get_key_value, $update_player_key, $update_player_target, $handle_event, $UG$SIPD$Game$when, $UG$SIPD$GameMap$b_tick, $UG$SM$ActionLogs, $UG$SM$Tick, $UG$SM$ActionLogs$add_action, $UG$SM$ActionLogs$get_actions, $UG$SM$Game$init, $UG$SM$Game$tick, $UG$SM$Game$when, $UG$SM$StateLogs$StateNode, $UG$SM$StateLogs, $UG$SM$Mach, $UG$SM$Mach$action_logs, $UG$SM$Mach$cached_tick, $UG$SM$StateLogs$StateNode$keep, $UG$SM$StateLogs$StateNode$life, $UG$SM$StateLogs$StateNode$older, $UG$SM$StateLogs$StateNode$set_keep, $UG$SM$StateLogs$StateNode$set_life, $UG$SM$StateLogs$StateNode$state, $UG$SM$StateLogs$StateNode$tick, $UG$SM$StateLogs$find_rollback_amount$go, $UG$SM$StateLogs$find_rollback_amount, $UG$SM$StateLogs$push$go$life, $UG$SM$StateLogs$push$go, $UG$SM$StateLogs$push, $UG$SM$StateLogs$rollback$go, $UG$SM$StateLogs$rollback, $UG$SM$Time, $UG$SM$Time$time_to_tick, $UG$SM$TimedAction, $UG$SM$TimedAction$time_action, $UG$SM$add_action_to_logs, $UG$SM$get_initial_state, $UG$SM$update_mach, $UG$SM$compute$go, $UG$SM$compute, $UG$SM$new_mach, $UG$SM$update_genesis_tick, $UG$SM$update_cached_tick, $UG$SM$remove_future_states, $UG$SM$register_action, $UG$Shape$line_circle_intersection, $UG$Shape$check_edges, $export_action_eq, $export_compute, $export_game, $export_game_init, $export_game_tick, $export_game_when, $export_register_action, $export_time_action, $export_time_to_tick, $test$0, $test$1, $test$10, $test$2, $test$3, $test$4, $test$5, $test$6, $test$7, $test$8, $test$9 } diff --git a/moba/main.js b/moba/main.js index af4974f..f4b4e80 100644 --- a/moba/main.js +++ b/moba/main.js @@ -165,7 +165,6 @@ function game_loop(currentTime) { const pair = compute(mach)($export_game)(time); state = pair.fst; - console.log(state); mach = pair.snd; draw_state(state);