feat: scoreboard front and back

This commit is contained in:
Maxwell Paradis 2025-04-07 21:49:25 -05:00
parent ed7c32a86f
commit 40ee542a28
25 changed files with 231 additions and 104 deletions

View File

@ -5,10 +5,10 @@ async function sydb(client) {
let users = let users =
"CREATE TABLE IF NOT EXISTS qb.users (id UUID PRIMARY KEY, username TEXT, email TEXT);"; "CREATE TABLE IF NOT EXISTS qb.users (id UUID PRIMARY KEY, username TEXT, email TEXT);";
let scores = let scores =
"CREATE TABLE IF NOT EXISTS qb.scores (id UUID, username TEXT, email TEXT, day INT, count INT, score INT, PRIMARY KEY (day, score, username, id));"; "CREATE TABLE IF NOT EXISTS qb.scores (id UUID, username TEXT, email TEXT, day INT, count INT, score INT, cube TEXT, PRIMARY KEY (day, score, username, id));";
let blocks = let blocks =
"CREATE TABLE IF NOT EXISTS qb.blocks (day INT PRIMARY KEY, blocks list<int>);"; "CREATE TABLE IF NOT EXISTS qb.blocks (day INT PRIMARY KEY, blocks list<int>);";
//let working = "CREATE INDEX ON fooble.beta_score0 (username);" //let drop = "DROP TABLE qb.scores;"
let queries = [keyspace, users, blocks, scores]; let queries = [keyspace, users, blocks, scores];

View File

@ -1 +0,0 @@
h1.svelte-91m5ac,p.svelte-91m5ac{font-family:Roboto,sans-serif;text-align:center;color:#fff}.queueb.svelte-91m5ac{margin:auto;width:30rem;max-width:100vw;text-align:center}.cubeGrid.svelte-91m5ac{display:grid;grid-template-columns:repeat(var(--col-count),minmax(1rem,1fr));width:100%;gap:0}.cube.svelte-91m5ac{border:1px solid rgb(88,88,88);background-color:#ffffffb3;max-width:2.2rem;height:2rem;position:relative;overflow:visible}.activeBlock.svelte-91m5ac{display:grid;grid-template-columns:repeat(4,minmax(1rem,1fr));width:100%;gap:0;position:relative;overflow:auto;z-index:9998;width:420%;height:420%}.blocks.svelte-91m5ac,.noblocks.svelte-91m5ac{z-index:9999;width:100%;height:100%}.b2.svelte-91m5ac{outline:8px solid rgba(1,1,1,.208);outline-offset:-12px}.controls.svelte-91m5ac{display:flex;flex-direction:column;width:100%;margin:1.5rem 0}.controlRow.svelte-91m5ac{display:flex;flex-direction:row;justify-content:center;text-align:center}.control.svelte-91m5ac{flex-grow:1;width:8rem;height:3rem}.footer.svelte-91m5ac{display:flex;justify-content:center}.fullscreen-prompt.svelte-91m5ac{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000b3;display:flex;justify-content:center;z-index:1000}.prompt-content.svelte-91m5ac{display:flex;flex-direction:column;background:#fff;width:80vw;padding:2rem;margin:1rem;margin-bottom:auto;border-radius:10px;text-align:center;box-shadow:0 4px 6px #0000001a;max-height:70vh;overflow-y:auto}.prompt-text.svelte-91m5ac{color:#283c50}.prompt-input.svelte-91m5ac{color:#283c50;border:1px solid rgb(55,83,124);margin-bottom:1rem;padding:.5rem 1rem;border-radius:5px;cursor:pointer;min-width:50vw}.prompt-button.svelte-91m5ac{background-color:#283c50;color:#fff}.prompt-button.svelte-91m5ac:disabled{background-color:gray}button.svelte-91m5ac:hover{background-color:#0000001a;color:#fff}

View File

@ -0,0 +1 @@
h1.svelte-16cgsqn,p.svelte-16cgsqn,.scores.svelte-16cgsqn{font-family:Roboto,sans-serif;text-align:center;color:#fff}.queueb.svelte-16cgsqn{margin:auto;width:30rem;max-width:100vw;text-align:center}.cubeGrid.svelte-16cgsqn{display:grid;grid-template-columns:repeat(var(--col-count),minmax(1rem,1fr));width:100%;gap:0}.cube.svelte-16cgsqn{border:1px solid rgb(88,88,88);background-color:#ffffffb3;max-width:2.2rem;height:2rem;position:relative;overflow:visible}.activeBlock.svelte-16cgsqn{display:grid;grid-template-columns:repeat(4,minmax(1rem,1fr));width:100%;gap:0;position:relative;overflow:auto;z-index:9998;width:420%;height:420%}.blocks.svelte-16cgsqn,.noblocks.svelte-16cgsqn{z-index:9999;width:100%;height:100%}.b2.svelte-16cgsqn{outline:8px solid rgba(1,1,1,.208);outline-offset:-12px}.controls.svelte-16cgsqn{display:flex;flex-direction:column;width:100%;margin:1.5rem 0}.controlRow.svelte-16cgsqn{display:flex;flex-direction:row;justify-content:center;text-align:center}.control.svelte-16cgsqn{flex-grow:1;width:8rem;height:3rem}.footer.svelte-16cgsqn{display:flex;justify-content:center}.fullscreen-prompt.svelte-16cgsqn{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000b3;display:flex;justify-content:center;z-index:1000}.prompt-content.svelte-16cgsqn{display:flex;flex-direction:column;background:#fff;width:80vw;padding:2rem;margin:1rem;margin-bottom:auto;border-radius:10px;text-align:center;box-shadow:0 4px 6px #0000001a;max-height:70vh;overflow-y:auto}.prompt-text.svelte-16cgsqn{color:#283c50}.prompt-input.svelte-16cgsqn{color:#283c50;border:1px solid rgb(55,83,124);margin-bottom:1rem;padding:.5rem 1rem;border-radius:5px;cursor:pointer;min-width:50vw}.prompt-button.svelte-16cgsqn{background-color:#283c50;color:#fff}.prompt-button.svelte-16cgsqn:disabled{background-color:gray}button.svelte-16cgsqn:hover{background-color:#0000001a;color:#fff}.scores.svelte-16cgsqn{display:flex;flex-direction:row;flex-basis:auto;width:100%;padding-bottom:5em;margin-bottom:5em;justify-content:space-around}.fifty.svelte-16cgsqn{display:flex;flex-direction:column;text-align:center}.scoreTile.svelte-16cgsqn{display:flex;flex-direction:row;width:80vw;max-width:12em}.score.svelte-16cgsqn{text-align:right;width:30%}.username.svelte-16cgsqn{flex-grow:3;text-align:left}.underline.svelte-16cgsqn{border-bottom:2px solid #ccc}.hof.svelte-16cgsqn{flex-direction:column}.hof2.svelte-16cgsqn{width:90%;max-width:90%;align-self:center}

View File

@ -1 +0,0 @@
h1.svelte-91m5ac,p.svelte-91m5ac{font-family:Roboto,sans-serif;text-align:center;color:#fff}.queueb.svelte-91m5ac{margin:auto;width:30rem;max-width:100vw;text-align:center}.cubeGrid.svelte-91m5ac{display:grid;grid-template-columns:repeat(var(--col-count),minmax(1rem,1fr));width:100%;gap:0}.cube.svelte-91m5ac{border:1px solid rgb(88,88,88);background-color:#ffffffb3;max-width:2.2rem;height:2rem;position:relative;overflow:visible}.activeBlock.svelte-91m5ac{display:grid;grid-template-columns:repeat(4,minmax(1rem,1fr));width:100%;gap:0;position:relative;overflow:auto;z-index:9998;width:420%;height:420%}.blocks.svelte-91m5ac,.noblocks.svelte-91m5ac{z-index:9999;width:100%;height:100%}.b2.svelte-91m5ac{outline:8px solid rgba(1,1,1,.208);outline-offset:-12px}.controls.svelte-91m5ac{display:flex;flex-direction:column;width:100%;margin:1.5rem 0}.controlRow.svelte-91m5ac{display:flex;flex-direction:row;justify-content:center;text-align:center}.control.svelte-91m5ac{flex-grow:1;width:8rem;height:3rem}.footer.svelte-91m5ac{display:flex;justify-content:center}.fullscreen-prompt.svelte-91m5ac{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000b3;display:flex;justify-content:center;z-index:1000}.prompt-content.svelte-91m5ac{display:flex;flex-direction:column;background:#fff;width:80vw;padding:2rem;margin:1rem;margin-bottom:auto;border-radius:10px;text-align:center;box-shadow:0 4px 6px #0000001a;max-height:70vh;overflow-y:auto}.prompt-text.svelte-91m5ac{color:#283c50}.prompt-input.svelte-91m5ac{color:#283c50;border:1px solid rgb(55,83,124);margin-bottom:1rem;padding:.5rem 1rem;border-radius:5px;cursor:pointer;min-width:50vw}.prompt-button.svelte-91m5ac{background-color:#283c50;color:#fff}.prompt-button.svelte-91m5ac:disabled{background-color:gray}button.svelte-91m5ac:hover{background-color:#0000001a;color:#fff}

View File

@ -0,0 +1 @@
h1.svelte-16cgsqn,p.svelte-16cgsqn,.scores.svelte-16cgsqn{font-family:Roboto,sans-serif;text-align:center;color:#fff}.queueb.svelte-16cgsqn{margin:auto;width:30rem;max-width:100vw;text-align:center}.cubeGrid.svelte-16cgsqn{display:grid;grid-template-columns:repeat(var(--col-count),minmax(1rem,1fr));width:100%;gap:0}.cube.svelte-16cgsqn{border:1px solid rgb(88,88,88);background-color:#ffffffb3;max-width:2.2rem;height:2rem;position:relative;overflow:visible}.activeBlock.svelte-16cgsqn{display:grid;grid-template-columns:repeat(4,minmax(1rem,1fr));width:100%;gap:0;position:relative;overflow:auto;z-index:9998;width:420%;height:420%}.blocks.svelte-16cgsqn,.noblocks.svelte-16cgsqn{z-index:9999;width:100%;height:100%}.b2.svelte-16cgsqn{outline:8px solid rgba(1,1,1,.208);outline-offset:-12px}.controls.svelte-16cgsqn{display:flex;flex-direction:column;width:100%;margin:1.5rem 0}.controlRow.svelte-16cgsqn{display:flex;flex-direction:row;justify-content:center;text-align:center}.control.svelte-16cgsqn{flex-grow:1;width:8rem;height:3rem}.footer.svelte-16cgsqn{display:flex;justify-content:center}.fullscreen-prompt.svelte-16cgsqn{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000b3;display:flex;justify-content:center;z-index:1000}.prompt-content.svelte-16cgsqn{display:flex;flex-direction:column;background:#fff;width:80vw;padding:2rem;margin:1rem;margin-bottom:auto;border-radius:10px;text-align:center;box-shadow:0 4px 6px #0000001a;max-height:70vh;overflow-y:auto}.prompt-text.svelte-16cgsqn{color:#283c50}.prompt-input.svelte-16cgsqn{color:#283c50;border:1px solid rgb(55,83,124);margin-bottom:1rem;padding:.5rem 1rem;border-radius:5px;cursor:pointer;min-width:50vw}.prompt-button.svelte-16cgsqn{background-color:#283c50;color:#fff}.prompt-button.svelte-16cgsqn:disabled{background-color:gray}button.svelte-16cgsqn:hover{background-color:#0000001a;color:#fff}.scores.svelte-16cgsqn{display:flex;flex-direction:row;flex-basis:auto;width:100%;padding-bottom:5em;margin-bottom:5em;justify-content:space-around}.fifty.svelte-16cgsqn{display:flex;flex-direction:column;text-align:center}.scoreTile.svelte-16cgsqn{display:flex;flex-direction:row;width:80vw;max-width:12em}.score.svelte-16cgsqn{text-align:right;width:30%}.username.svelte-16cgsqn{flex-grow:3;text-align:left}.underline.svelte-16cgsqn{border-bottom:2px solid #ccc}.hof.svelte-16cgsqn{flex-direction:column}.hof2.svelte-16cgsqn{width:90%;max-width:90%;align-self:center}

View File

@ -1 +1 @@
import{a6 as E,a7 as b,a8 as I,F as R,a9 as H,aa as W,ab as Y,I as j,ac as L,a2 as B,ad as C,ae as $,af as T,N as w,M as k,J as F,c as p,ag as J,ah as z,ai as G,aj as K,ak as Q,al as U,a1 as X,a as Z,q as x,e as tt,h as N,s as et}from"./Brvyzw3T.js";import{b as rt}from"./DalkA_xl.js";const at=["touchstart","touchmove"];function nt(t){return at.includes(t)}let A=!1;function st(){A||(A=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(const a of t.target.elements)(e=a.__on_r)==null||e.call(a)})},{capture:!0}))}function P(t){var e=I,a=R;E(null),b(null);try{return t()}finally{E(e),b(a)}}function _t(t,e,a,i=a){t.addEventListener(e,()=>P(a));const n=t.__on_r;n?t.__on_r=()=>{n(),i(!0)}:t.__on_r=()=>i(!0),st()}const it=new Set,D=new Set;function ot(t,e,a,i={}){function n(r){if(i.capture||y.call(e,r),!r.cancelBubble)return P(()=>a==null?void 0:a.call(this,r))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?W(()=>{e.addEventListener(t,n,i)}):e.addEventListener(t,n,i),n}function lt(t,e,a,i,n){var r={capture:i,passive:n},u=ot(t,e,a,r);(e===document.body||e===window||e===document)&&H(()=>{e.removeEventListener(t,u,r)})}function y(t){var O;var e=this,a=e.ownerDocument,i=t.type,n=((O=t.composedPath)==null?void 0:O.call(t))||[],r=n[0]||t.target,u=0,d=t.__root;if(d){var _=n.indexOf(d);if(_!==-1&&(e===document||e===window)){t.__root=e;return}var h=n.indexOf(e);if(h===-1)return;_<=h&&(u=_)}if(r=n[u]||t.target,r!==e){Y(t,"currentTarget",{configurable:!0,get(){return r||a}});var m=I,f=R;E(null),b(null);try{for(var s,o=[];r!==null;){var c=r.assignedSlot||r.parentNode||r.host||null;try{var l=r["__"+i];if(l!==void 0&&(!r.disabled||t.target===r))if(j(l)){var[V,...q]=l;V.apply(r,[t,...q])}else l.call(r,t)}catch(g){s?o.push(g):s=g}if(t.cancelBubble||c===e||c===null)break;r=c}if(s){for(let g of o)queueMicrotask(()=>{throw g});throw s}}finally{t.__root=e,delete t.currentTarget,E(m),b(f)}}}function dt(t,e){var a=e==null?"":typeof e=="object"?e+"":e;a!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=a,t.nodeValue=a+"")}function ut(t,e){return M(t,e)}function ht(t,e){L(),e.intro=e.intro??!1;const a=e.target,i=N,n=p;try{for(var r=B(a);r&&(r.nodeType!==8||r.data!==C);)r=$(r);if(!r)throw T;w(!0),k(r),F();const u=M(t,{...e,anchor:r});if(p===null||p.nodeType!==8||p.data!==J)throw z(),T;return w(!1),u}catch(u){if(u===T)return e.recover===!1&&G(),L(),K(a),w(!1),ut(t,e);throw u}finally{w(i),k(n)}}const v=new Map;function M(t,{target:e,anchor:a,props:i={},events:n,context:r,intro:u=!0}){L();var d=new Set,_=f=>{for(var s=0;s<f.length;s++){var o=f[s];if(!d.has(o)){d.add(o);var c=nt(o);e.addEventListener(o,y,{passive:c});var l=v.get(o);l===void 0?(document.addEventListener(o,y,{passive:c}),v.set(o,1)):v.set(o,l+1)}}};_(Q(it)),D.add(_);var h=void 0,m=U(()=>{var f=a??e.appendChild(X());return Z(()=>{if(r){x({});var s=tt;s.c=r}n&&(i.$$events=n),N&&rt(f,null),h=t(f,i)||{},N&&(R.nodes_end=p),r&&et()}),()=>{var c;for(var s of d){e.removeEventListener(s,y);var o=v.get(s);--o===0?(document.removeEventListener(s,y),v.delete(s)):v.set(s,o)}D.delete(_),f!==a&&((c=f.parentNode)==null||c.removeChild(f))}});return S.set(h,m),h}let S=new WeakMap;function vt(t,e){const a=S.get(t);return a?(S.delete(t),a(e)):Promise.resolve()}export{st as a,lt as e,ht as h,_t as l,ut as m,dt as s,vt as u}; import{a6 as E,a7 as b,a8 as I,F as R,a9 as H,aa as W,ab as Y,I as j,ac as L,a2 as B,ad as C,ae as $,af as T,N as w,M as k,J as F,c as p,ag as J,ah as z,ai as G,aj as K,ak as Q,al as U,a1 as X,a as Z,q as x,e as tt,h as N,s as et}from"./DlLMAEhl.js";import{b as rt}from"./CrehCDwn.js";const at=["touchstart","touchmove"];function nt(t){return at.includes(t)}let A=!1;function st(){A||(A=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(const a of t.target.elements)(e=a.__on_r)==null||e.call(a)})},{capture:!0}))}function P(t){var e=I,a=R;E(null),b(null);try{return t()}finally{E(e),b(a)}}function _t(t,e,a,i=a){t.addEventListener(e,()=>P(a));const n=t.__on_r;n?t.__on_r=()=>{n(),i(!0)}:t.__on_r=()=>i(!0),st()}const it=new Set,D=new Set;function ot(t,e,a,i={}){function n(r){if(i.capture||y.call(e,r),!r.cancelBubble)return P(()=>a==null?void 0:a.call(this,r))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?W(()=>{e.addEventListener(t,n,i)}):e.addEventListener(t,n,i),n}function lt(t,e,a,i,n){var r={capture:i,passive:n},u=ot(t,e,a,r);(e===document.body||e===window||e===document)&&H(()=>{e.removeEventListener(t,u,r)})}function y(t){var O;var e=this,a=e.ownerDocument,i=t.type,n=((O=t.composedPath)==null?void 0:O.call(t))||[],r=n[0]||t.target,u=0,d=t.__root;if(d){var _=n.indexOf(d);if(_!==-1&&(e===document||e===window)){t.__root=e;return}var h=n.indexOf(e);if(h===-1)return;_<=h&&(u=_)}if(r=n[u]||t.target,r!==e){Y(t,"currentTarget",{configurable:!0,get(){return r||a}});var m=I,f=R;E(null),b(null);try{for(var s,o=[];r!==null;){var c=r.assignedSlot||r.parentNode||r.host||null;try{var l=r["__"+i];if(l!==void 0&&(!r.disabled||t.target===r))if(j(l)){var[V,...q]=l;V.apply(r,[t,...q])}else l.call(r,t)}catch(g){s?o.push(g):s=g}if(t.cancelBubble||c===e||c===null)break;r=c}if(s){for(let g of o)queueMicrotask(()=>{throw g});throw s}}finally{t.__root=e,delete t.currentTarget,E(m),b(f)}}}function dt(t,e){var a=e==null?"":typeof e=="object"?e+"":e;a!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=a,t.nodeValue=a+"")}function ut(t,e){return M(t,e)}function ht(t,e){L(),e.intro=e.intro??!1;const a=e.target,i=N,n=p;try{for(var r=B(a);r&&(r.nodeType!==8||r.data!==C);)r=$(r);if(!r)throw T;w(!0),k(r),F();const u=M(t,{...e,anchor:r});if(p===null||p.nodeType!==8||p.data!==J)throw z(),T;return w(!1),u}catch(u){if(u===T)return e.recover===!1&&G(),L(),K(a),w(!1),ut(t,e);throw u}finally{w(i),k(n)}}const v=new Map;function M(t,{target:e,anchor:a,props:i={},events:n,context:r,intro:u=!0}){L();var d=new Set,_=f=>{for(var s=0;s<f.length;s++){var o=f[s];if(!d.has(o)){d.add(o);var c=nt(o);e.addEventListener(o,y,{passive:c});var l=v.get(o);l===void 0?(document.addEventListener(o,y,{passive:c}),v.set(o,1)):v.set(o,l+1)}}};_(Q(it)),D.add(_);var h=void 0,m=U(()=>{var f=a??e.appendChild(X());return Z(()=>{if(r){x({});var s=tt;s.c=r}n&&(i.$$events=n),N&&rt(f,null),h=t(f,i)||{},N&&(R.nodes_end=p),r&&et()}),()=>{var c;for(var s of d){e.removeEventListener(s,y);var o=v.get(s);--o===0?(document.removeEventListener(s,y),v.delete(s)):v.set(s,o)}D.delete(_),f!==a&&((c=f.parentNode)==null||c.removeChild(f))}});return S.set(h,m),h}let S=new WeakMap;function vt(t,e){const a=S.get(t);return a?(S.delete(t),a(e)):Promise.resolve()}export{st as a,lt as e,ht as h,_t as l,ut as m,dt as s,vt as u};

View File

@ -1 +1 @@
import{g as o,e as t,p as c,i as u}from"./Brvyzw3T.js";function l(n){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function r(n){t===null&&l(),c&&t.l!==null?a(t).m.push(n):o(()=>{const e=u(n);if(typeof e=="function")return e})}function a(n){var e=n.l;return e.u??(e.u={a:[],b:[],m:[]})}export{r as o}; import{g as o,e as t,p as c,i as u}from"./DlLMAEhl.js";function l(n){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function r(n){t===null&&l(),c&&t.l!==null?a(t).m.push(n):o(()=>{const e=u(n);if(typeof e=="function")return e})}function a(n){var e=n.l;return e.u??(e.u={a:[],b:[],m:[]})}export{r as o};

View File

@ -1 +1 @@
import{a1 as i,a2 as f,a3 as v,F as u,a4 as p,a5 as h,h as d,c as o,J as E,M as T}from"./Brvyzw3T.js";function g(n){var t=document.createElement("template");return t.innerHTML=n,t.content}function r(n,t){var e=u;e.nodes_start===null&&(e.nodes_start=n,e.nodes_end=t)}function w(n,t){var e=(t&p)!==0,_=(t&h)!==0,a,c=!n.startsWith("<!>");return()=>{if(d)return r(o,null),o;a===void 0&&(a=g(c?n:"<!>"+n),e||(a=f(a)));var s=_||v?document.importNode(a,!0):a.cloneNode(!0);if(e){var m=f(s),l=s.lastChild;r(m,l)}else r(s,s);return s}}function x(n=""){if(!d){var t=i(n+"");return r(t,t),t}var e=o;return e.nodeType!==3&&(e.before(e=i()),T(e)),r(e,e),e}function N(){if(d)return r(o,null),o;var n=document.createDocumentFragment(),t=document.createComment(""),e=i();return n.append(t,e),r(t,e),n}function L(n,t){if(d){u.nodes_end=o,E();return}n!==null&&n.before(t)}const y="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(y);export{L as a,r as b,N as c,x as d,w as t}; import{a1 as i,a2 as f,a3 as v,F as u,a4 as p,a5 as h,h as d,c as o,J as E,M as T}from"./DlLMAEhl.js";function g(n){var t=document.createElement("template");return t.innerHTML=n,t.content}function r(n,t){var e=u;e.nodes_start===null&&(e.nodes_start=n,e.nodes_end=t)}function w(n,t){var e=(t&p)!==0,_=(t&h)!==0,a,c=!n.startsWith("<!>");return()=>{if(d)return r(o,null),o;a===void 0&&(a=g(c?n:"<!>"+n),e||(a=f(a)));var s=_||v?document.importNode(a,!0):a.cloneNode(!0);if(e){var m=f(s),l=s.lastChild;r(m,l)}else r(s,s);return s}}function x(n=""){if(!d){var t=i(n+"");return r(t,t),t}var e=o;return e.nodeType!==3&&(e.before(e=i()),T(e)),r(e,e),e}function N(){if(d)return r(o,null),o;var n=document.createDocumentFragment(),t=document.createComment(""),e=i();return n.append(t,e),r(t,e),n}function L(n,t){if(d){u.nodes_end=o,E();return}n!==null&&n.before(t)}const y="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(y);export{L as a,r as b,N as c,x as d,w as t};

View File

@ -1 +1 @@
import{e as g,u as d,g as c,r as i,i as m,j as b,k as p,l as k,m as v,o as h}from"./Brvyzw3T.js";function x(n=!1){const s=g,e=s.l.u;if(!e)return;let f=()=>k(s.s);if(n){let o=0,t={};const _=v(()=>{let l=!1;const r=s.s;for(const a in r)r[a]!==t[a]&&(t[a]=r[a],l=!0);return l&&o++,o});f=()=>p(_)}e.b.length&&d(()=>{u(s,f),i(e.b)}),c(()=>{const o=m(()=>e.m.map(b));return()=>{for(const t of o)typeof t=="function"&&t()}}),e.a.length&&c(()=>{u(s,f),i(e.a)})}function u(n,s){if(n.l.s)for(const e of n.l.s)p(e);s()}h();export{x as i}; import{e as g,u as d,g as c,r as i,i as m,j as b,k as p,l as k,m as v,o as h}from"./DlLMAEhl.js";function x(n=!1){const s=g,e=s.l.u;if(!e)return;let f=()=>k(s.s);if(n){let o=0,t={};const _=v(()=>{let l=!1;const r=s.s;for(const a in r)r[a]!==t[a]&&(t[a]=r[a],l=!0);return l&&o++,o});f=()=>p(_)}e.b.length&&d(()=>{u(s,f),i(e.b)}),c(()=>{const o=m(()=>e.m.map(b));return()=>{for(const t of o)typeof t=="function"&&t()}}),e.a.length&&c(()=>{u(s,f),i(e.a)})}function u(n,s){if(n.l.s)for(const e of n.l.s)p(e);s()}h();export{x as i};

View File

@ -1 +1 @@
import{S as T,y as Z,z as $,A as m,B as j,k as h,U as c,C as y,D,F as z,G as H,H as V,I as J,b as Q,h as Y,J as W,E as X,K as k,L as p,M as ee,N as B,O as M,a as U,P as C,c as re,Q as ae,R as ne,T as te,V as ie,p as fe,W as se,i as F,m as G,X as ue,Y as le,Z as _e,_ as ve,$ as de,a0 as ce}from"./Brvyzw3T.js";function E(i,_=null,P){if(typeof i!="object"||i===null||T in i)return i;const v=V(i);if(v!==Z&&v!==$)return i;var t=new Map,l=J(i),o=m(0);l&&t.set("length",m(i.length));var g;return new Proxy(i,{defineProperty(f,e,r){(!("value"in r)||r.configurable===!1||r.enumerable===!1||r.writable===!1)&&H();var n=t.get(e);return n===void 0?(n=m(r.value),t.set(e,n)):y(n,E(r.value,g)),!0},deleteProperty(f,e){var r=t.get(e);if(r===void 0)e in f&&t.set(e,m(c));else{if(l&&typeof e=="string"){var n=t.get("length"),a=Number(e);Number.isInteger(a)&&a<n.v&&y(n,a)}y(r,c),K(o)}return!0},get(f,e,r){var d;if(e===T)return i;var n=t.get(e),a=e in f;if(n===void 0&&(!a||(d=D(f,e))!=null&&d.writable)&&(n=m(E(a?f[e]:c,g)),t.set(e,n)),n!==void 0){var s=h(n);return s===c?void 0:s}return Reflect.get(f,e,r)},getOwnPropertyDescriptor(f,e){var r=Reflect.getOwnPropertyDescriptor(f,e);if(r&&"value"in r){var n=t.get(e);n&&(r.value=h(n))}else if(r===void 0){var a=t.get(e),s=a==null?void 0:a.v;if(a!==void 0&&s!==c)return{enumerable:!0,configurable:!0,value:s,writable:!0}}return r},has(f,e){var s;if(e===T)return!0;var r=t.get(e),n=r!==void 0&&r.v!==c||Reflect.has(f,e);if(r!==void 0||z!==null&&(!n||(s=D(f,e))!=null&&s.writable)){r===void 0&&(r=m(n?E(f[e],g):c),t.set(e,r));var a=h(r);if(a===c)return!1}return n},set(f,e,r,n){var R;var a=t.get(e),s=e in f;if(l&&e==="length")for(var d=r;d<a.v;d+=1){var I=t.get(d+"");I!==void 0?y(I,c):d in f&&(I=m(c),t.set(d+"",I))}a===void 0?(!s||(R=D(f,e))!=null&&R.writable)&&(a=m(void 0),y(a,E(r,g)),t.set(e,a)):(s=a.v!==c,y(a,E(r,g)));var b=Reflect.getOwnPropertyDescriptor(f,e);if(b!=null&&b.set&&b.set.call(n,r),!s){if(l&&typeof e=="string"){var w=t.get("length"),A=Number(e);Number.isInteger(A)&&A>=w.v&&y(w,A+1)}K(o)}return!0},ownKeys(f){h(o);var e=Reflect.ownKeys(f).filter(a=>{var s=t.get(a);return s===void 0||s.v!==c});for(var[r,n]of t)n.v!==c&&!(r in f)&&e.push(r);return e},setPrototypeOf(){j()}})}function K(i,_=1){y(i,i.v+_)}function ge(i,_,P=!1){Y&&W();var v=i,t=null,l=null,o=c,g=P?X:0,f=!1;const e=(n,a=!0)=>{f=!0,r(a,n)},r=(n,a)=>{if(o===(o=n))return;let s=!1;if(Y){const d=v.data===k;!!o===d&&(v=p(),ee(v),B(!1),s=!0)}o?(t?M(t):a&&(t=U(()=>a(v))),l&&C(l,()=>{l=null})):(l?M(l):a&&(l=U(()=>a(v))),t&&C(t,()=>{t=null})),s&&B(!0)};Q(()=>{f=!1,_(e),f||r(null,null)},g),Y&&(v=re)}let N=!1;function oe(i){var _=N;try{return N=!1,[i(),N]}finally{N=_}}function ye(i,_,P,v){var q;var t=(P&ce)!==0,l=!fe||(P&se)!==0,o=(P&ue)!==0,g=(P&de)!==0,f=!1,e;o?[e,f]=oe(()=>i[_]):e=i[_];var r=T in i||ie in i,n=o&&(((q=D(i,_))==null?void 0:q.set)??(r&&_ in i&&(u=>i[_]=u)))||void 0,a=v,s=!0,d=!1,I=()=>(d=!0,s&&(s=!1,g?a=F(v):a=v),a);e===void 0&&v!==void 0&&(n&&l&&ae(),e=I(),n&&n(e));var b;if(l)b=()=>{var u=i[_];return u===void 0?I():(s=!0,d=!1,u)};else{var w=(t?G:te)(()=>i[_]);w.f|=ne,b=()=>{var u=h(w);return u!==void 0&&(a=void 0),u===void 0?a:u}}if(!(P&le))return b;if(n){var A=i.$$legacy;return function(u,S){return arguments.length>0?((!l||!S||A||f)&&n(S?b():u),u):b()}}var R=!1,L=ve(e),O=G(()=>{var u=b(),S=h(L);return R?(R=!1,S):L.v=u});return t||(O.equals=_e),function(u,S){if(arguments.length>0){const x=S?h(O):l&&o?E(u):u;return O.equals(x)||(R=!0,y(L,x),d&&a!==void 0&&(a=x),F(()=>h(O))),u}return h(O)}}export{E as a,ge as i,ye as p}; import{S as T,y as Z,z as $,A as m,B as j,k as h,U as c,C as y,D,F as z,G as H,H as V,I as J,b as Q,h as Y,J as W,E as X,K as k,L as p,M as ee,N as B,O as M,a as U,P as C,c as re,Q as ae,R as ne,T as te,V as ie,p as fe,W as se,i as F,m as G,X as ue,Y as le,Z as _e,_ as ve,$ as de,a0 as ce}from"./DlLMAEhl.js";function E(i,_=null,P){if(typeof i!="object"||i===null||T in i)return i;const v=V(i);if(v!==Z&&v!==$)return i;var t=new Map,l=J(i),o=m(0);l&&t.set("length",m(i.length));var g;return new Proxy(i,{defineProperty(f,e,r){(!("value"in r)||r.configurable===!1||r.enumerable===!1||r.writable===!1)&&H();var n=t.get(e);return n===void 0?(n=m(r.value),t.set(e,n)):y(n,E(r.value,g)),!0},deleteProperty(f,e){var r=t.get(e);if(r===void 0)e in f&&t.set(e,m(c));else{if(l&&typeof e=="string"){var n=t.get("length"),a=Number(e);Number.isInteger(a)&&a<n.v&&y(n,a)}y(r,c),K(o)}return!0},get(f,e,r){var d;if(e===T)return i;var n=t.get(e),a=e in f;if(n===void 0&&(!a||(d=D(f,e))!=null&&d.writable)&&(n=m(E(a?f[e]:c,g)),t.set(e,n)),n!==void 0){var s=h(n);return s===c?void 0:s}return Reflect.get(f,e,r)},getOwnPropertyDescriptor(f,e){var r=Reflect.getOwnPropertyDescriptor(f,e);if(r&&"value"in r){var n=t.get(e);n&&(r.value=h(n))}else if(r===void 0){var a=t.get(e),s=a==null?void 0:a.v;if(a!==void 0&&s!==c)return{enumerable:!0,configurable:!0,value:s,writable:!0}}return r},has(f,e){var s;if(e===T)return!0;var r=t.get(e),n=r!==void 0&&r.v!==c||Reflect.has(f,e);if(r!==void 0||z!==null&&(!n||(s=D(f,e))!=null&&s.writable)){r===void 0&&(r=m(n?E(f[e],g):c),t.set(e,r));var a=h(r);if(a===c)return!1}return n},set(f,e,r,n){var R;var a=t.get(e),s=e in f;if(l&&e==="length")for(var d=r;d<a.v;d+=1){var I=t.get(d+"");I!==void 0?y(I,c):d in f&&(I=m(c),t.set(d+"",I))}a===void 0?(!s||(R=D(f,e))!=null&&R.writable)&&(a=m(void 0),y(a,E(r,g)),t.set(e,a)):(s=a.v!==c,y(a,E(r,g)));var b=Reflect.getOwnPropertyDescriptor(f,e);if(b!=null&&b.set&&b.set.call(n,r),!s){if(l&&typeof e=="string"){var w=t.get("length"),A=Number(e);Number.isInteger(A)&&A>=w.v&&y(w,A+1)}K(o)}return!0},ownKeys(f){h(o);var e=Reflect.ownKeys(f).filter(a=>{var s=t.get(a);return s===void 0||s.v!==c});for(var[r,n]of t)n.v!==c&&!(r in f)&&e.push(r);return e},setPrototypeOf(){j()}})}function K(i,_=1){y(i,i.v+_)}function ge(i,_,P=!1){Y&&W();var v=i,t=null,l=null,o=c,g=P?X:0,f=!1;const e=(n,a=!0)=>{f=!0,r(a,n)},r=(n,a)=>{if(o===(o=n))return;let s=!1;if(Y){const d=v.data===k;!!o===d&&(v=p(),ee(v),B(!1),s=!0)}o?(t?M(t):a&&(t=U(()=>a(v))),l&&C(l,()=>{l=null})):(l?M(l):a&&(l=U(()=>a(v))),t&&C(t,()=>{t=null})),s&&B(!0)};Q(()=>{f=!1,_(e),f||r(null,null)},g),Y&&(v=re)}let N=!1;function oe(i){var _=N;try{return N=!1,[i(),N]}finally{N=_}}function ye(i,_,P,v){var q;var t=(P&ce)!==0,l=!fe||(P&se)!==0,o=(P&ue)!==0,g=(P&de)!==0,f=!1,e;o?[e,f]=oe(()=>i[_]):e=i[_];var r=T in i||ie in i,n=o&&(((q=D(i,_))==null?void 0:q.set)??(r&&_ in i&&(u=>i[_]=u)))||void 0,a=v,s=!0,d=!1,I=()=>(d=!0,s&&(s=!1,g?a=F(v):a=v),a);e===void 0&&v!==void 0&&(n&&l&&ae(),e=I(),n&&n(e));var b;if(l)b=()=>{var u=i[_];return u===void 0?I():(s=!0,d=!1,u)};else{var w=(t?G:te)(()=>i[_]);w.f|=ne,b=()=>{var u=h(w);return u!==void 0&&(a=void 0),u===void 0?a:u}}if(!(P&le))return b;if(n){var A=i.$$legacy;return function(u,S){return arguments.length>0?((!l||!S||A||f)&&n(S?b():u),u):b()}}var R=!1,L=ve(e),O=G(()=>{var u=b(),S=h(L);return R?(R=!1,S):L.v=u});return t||(O.equals=_e),function(u,S){if(arguments.length>0){const x=S?h(O):l&&o?E(u):u;return O.equals(x)||(R=!0,y(L,x),d&&a!==void 0&&(a=x),F(()=>h(O))),u}return h(O)}}export{E as a,ge as i,ye as p};

View File

@ -0,0 +1 @@
import{a as t}from"../chunks/COxrpJlS.js";export{t as start};

View File

@ -1 +0,0 @@
import{a as t}from"../chunks/D4sDuujI.js";export{t as start};

View File

@ -0,0 +1 @@
import{c as s,a as f}from"../chunks/CrehCDwn.js";import{b as i,E as c,a as p,n as d,d as m,h,c as l,f as u}from"../chunks/DlLMAEhl.js";function v(t,e,...a){var n=t,o=d,r;i(()=>{o!==(o=e())&&(r&&(m(r),r=null),r=p(()=>o(n,...a)))},c),h&&(n=l)}function E(t,e){var a=s(),n=u(a);v(n,()=>e.children),f(t,a)}export{E as component};

View File

@ -1 +0,0 @@
import{c as s,a as f}from"../chunks/DalkA_xl.js";import{b as i,E as c,a as p,n as d,d as m,h,c as l,f as u}from"../chunks/Brvyzw3T.js";function v(t,e,...a){var n=t,o=d,r;i(()=>{o!==(o=e())&&(r&&(m(r),r=null),r=p(()=>o(n,...a)))},c),h&&(n=l)}function E(t,e){var a=s(),n=u(a);v(n,()=>e.children),f(t,a)}export{E as component};

View File

@ -0,0 +1 @@
import{t as g,a as h}from"../chunks/CrehCDwn.js";import{i as v}from"../chunks/DELIUhZv.js";import{q as l,f as d,t as x,s as _,v as a,w as o,x as $}from"../chunks/DlLMAEhl.js";import{s as p}from"../chunks/9GO8__J9.js";import{s as k,p as m}from"../chunks/COxrpJlS.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var q=g("<h1> </h1> <p> </p>",1);function A(f,n){l(n,!1),v();var r=q(),t=d(r),c=a(t,!0);o(t);var e=$(t,2),u=a(e,!0);o(e),x(()=>{var s;p(c,i.status),p(u,(s=i.error)==null?void 0:s.message)}),h(f,r),_()}export{A as component};

View File

@ -1 +0,0 @@
import{t as g,a as h}from"../chunks/DalkA_xl.js";import{i as v}from"../chunks/DYclDwEz.js";import{q as l,f as d,t as x,s as _,v as a,w as o,x as $}from"../chunks/Brvyzw3T.js";import{s as p}from"../chunks/BHcdrSTx.js";import{s as k,p as m}from"../chunks/D4sDuujI.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var q=g("<h1> </h1> <p> </p>",1);function A(f,n){l(n,!1),v();var r=q(),t=d(r),c=a(t,!0);o(t);var e=$(t,2),u=a(e,!0);o(e),x(()=>{var s;p(c,i.status),p(u,(s=i.error)==null?void 0:s.message)}),h(f,r),_()}export{A as component};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"version":"1743306921539"} {"version":"1744080355273"}

View File

@ -8,28 +8,28 @@
<title>Queueb!</title> <title>Queueb!</title>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="modulepreload" href="/_app/immutable/entry/start.CUXBt2xv.js"> <link rel="modulepreload" href="/_app/immutable/entry/start.BEPysHMD.js">
<link rel="modulepreload" href="/_app/immutable/chunks/D4sDuujI.js"> <link rel="modulepreload" href="/_app/immutable/chunks/COxrpJlS.js">
<link rel="modulepreload" href="/_app/immutable/chunks/Brvyzw3T.js"> <link rel="modulepreload" href="/_app/immutable/chunks/DlLMAEhl.js">
<link rel="modulepreload" href="/_app/immutable/chunks/BkLDdJVQ.js"> <link rel="modulepreload" href="/_app/immutable/chunks/BY1vZ1mH.js">
<link rel="modulepreload" href="/_app/immutable/entry/app.wVzvw02e.js"> <link rel="modulepreload" href="/_app/immutable/entry/app.BI5ZM_8j.js">
<link rel="modulepreload" href="/_app/immutable/chunks/BHcdrSTx.js"> <link rel="modulepreload" href="/_app/immutable/chunks/9GO8__J9.js">
<link rel="modulepreload" href="/_app/immutable/chunks/DalkA_xl.js"> <link rel="modulepreload" href="/_app/immutable/chunks/CrehCDwn.js">
<link rel="modulepreload" href="/_app/immutable/chunks/eD75gwHV.js"> <link rel="modulepreload" href="/_app/immutable/chunks/DJC-Lmna.js">
</head> </head>
<body data-sveltekit-preload-data="hover"> <body data-sveltekit-preload-data="hover">
<div style="display: contents"> <div style="display: contents">
<script> <script>
{ {
__sveltekit_1v6adh0 = { __sveltekit_169jeqm = {
base: "" base: ""
}; };
const element = document.currentScript.parentElement; const element = document.currentScript.parentElement;
Promise.all([ Promise.all([
import("/_app/immutable/entry/start.CUXBt2xv.js"), import("/_app/immutable/entry/start.BEPysHMD.js"),
import("/_app/immutable/entry/app.wVzvw02e.js") import("/_app/immutable/entry/app.BI5ZM_8j.js")
]).then(([kit, app]) => { ]).then(([kit, app]) => {
kit.start(app, element); kit.start(app, element);
}); });

View File

@ -5,9 +5,10 @@ const { v4: uuidv4 } = require("uuid");
const { sydb } = require("./db"); const { sydb } = require("./db");
const app = express(); const app = express();
const port = 3014; const port = process.env.PORT || 3014;
//let pScore = []; let pScore = [];
let hof = [];
let blockList = [ let blockList = [
[0, 1, 1, 0, 1, 1, 1, 3, 1, 1, 1, 1, 0, 1, 1, 0], [0, 1, 1, 0, 1, 1, 1, 3, 1, 1, 1, 1, 0, 1, 1, 0],
@ -102,33 +103,39 @@ async function initBlocks() {
//console.log(dailyBlocks); //console.log(dailyBlocks);
} }
// async function prevScore(){ async function prevScore(){
// let day = getDay(-1); let day = getDay(-1);
// let query = "SELECT * FROM fooble.beta_sbx WHERE day = ? ORDER BY score DESC LIMIT 10;"; let query = "SELECT * FROM qb.scores WHERE day = ? ORDER BY score DESC LIMIT 10;";
// let params = [day]; let params = [day];
// let options = {hints: ['int']}; let options = {hints: ['int']};
// try { try {
// let {rows} = await client.execute(query, params, options); let {rows} = await client.execute(query, params, options);
// pScore = rows; pScore = rows;
// } catch (err) { } catch (err) {
// console.error('Prev Score Error:', err); console.error('Prev Score Error:', err);
// } }
// } // let hoQuery = "SELECT * FROM qb.scores ORDER BY score DESC LIMIT 10;";
// try {
// let {rows} = await client.execute(hoQuery);
// hof = rows;
// } catch (err) {
// console.error('HoF Score Error:', err);
// }
}
async function initServer() { async function initServer() {
await connectToScylla(); await connectToScylla();
initBlocks(); initBlocks();
//prevScore(); prevScore();
} }
initServer(); initServer();
//DetermineDailyWord
setInterval( setInterval(
() => { () => {
initBlocks(); initBlocks();
//prevScore(); prevScore();
}, },
60 * 60 * 1000, 60 * 60 * 1000,
); );
@ -137,52 +144,49 @@ app.get("/", (req, res) => {
res.sendFile(path.resolve(__dirname, "dist", "index.html")); res.sendFile(path.resolve(__dirname, "dist", "index.html"));
}); });
// app.get("/function", async (req, res) => {
// res.send(filterStringsByLength());
// });
app.get("/api/blocks", (req, res) => { app.get("/api/blocks", (req, res) => {
console.log(dailyBlocks[0]); console.log(dailyBlocks[0]);
res.send(dailyBlocks); res.send(dailyBlocks);
}); });
// app.get("/api/scoreboard", async (req, res) => { app.get("/api/scoreboard", async (req, res) => {
// let day = getDay(0); let day = getDay(0);
// let query = "SELECT * FROM fooble.beta_sbx WHERE day = ? ORDER BY score DESC LIMIT 10;"; let query = "SELECT * FROM qb.scores WHERE day = ? ORDER BY score DESC LIMIT 10;";
// let params = [day]; let params = [day];
// let options = {hints: ['int']}; let options = {hints: ['int']};
// try { try {
// let {rows} = await client.execute(query, params, options); let {rows} = await client.execute(query, params, options);
// //console.log(rows); //console.log(rows);
// let data = { let data = {
// 'today': rows, 'now': rows,
// 'prev': pScore, 'prev': pScore,
// } 'hof': hof,
// res.json(data); }
// } catch (err) { res.json(data);
// console.error('Write error:', err); } catch (err) {
// console.log('Failed to write data'); console.error('Write error:', err);
// res.status(500).send("Failed to retrieve data: " + err.message); console.log('Failed to write data');
// } res.status(500).send("Failed to retrieve data: " + err.message);
// }); }
});
// app.post("/api/score", async (req, res) => { app.post("/api/score", async (req, res) => {
// const { username, line, score } = req.body; const { username, count, score, cube } = req.body;
// const id = uuidv4(); const id = uuidv4();
// console.log(username, line, score); console.log(username, count, score);
// let day = getDay(0); let day = getDay(0);
// let query = "INSERT INTO fooble.beta_sbx(id, username, email, day, line, score) VALUES(?,?,?,?,?,?)"; let query = "INSERT INTO qb.scores(id, username, email, day, count, score, cube) VALUES(?,?,?,?,?,?,?)";
// let params = [id, username, "NA", day, line, score]; let params = [id, username, "NA", day, count, score, cube];
// let options = { hints: ['uuid', 'text', 'text', 'int', 'int', 'int'] }; let options = { hints: ['uuid', 'text', 'text', 'int', 'int', 'int', 'text'] };
// try { try {
// await client.execute(query, params, options); await client.execute(query, params, options);
// console.log('Score written successfully'); console.log('Score written successfully');
// } catch (err) { } catch (err) {
// console.error('Write error:', err); console.error('Write error:', err);
// console.log('Failed to write data'); console.log('Failed to write data');
// } }
// res.send("Score Recorded"); res.send("Score Recorded");
// }); });
app.get("/api/test", async (req, res) => { app.get("/api/test", async (req, res) => {
try { try {

View File

@ -80,8 +80,8 @@
"128,255,255", "128,255,255",
]; ];
let scoreboard: any[] = []; let sbs: any[] = [];
let pscoreboard: any[] = []; let scoreboard = {now: sbs, prev: sbs, hof: sbs };
export let daily: any[] = Array.from({ length: 25 }, (_, index) => index); export let daily: any[] = Array.from({ length: 25 }, (_, index) => index);
@ -232,6 +232,18 @@
score: score, score: score,
}; };
localStorage.setItem("gameState", JSON.stringify(gameState)); localStorage.setItem("gameState", JSON.stringify(gameState));
let data = {
"username": username,
"count": current,
"score": score,
"cube": JSON.stringify(cube),
}
axios.post('/api/score', data).then((res) => {
console.log(res.data);
})
.catch((error) => {
console.error('Error fetching data:', error);
});
}; };
let reset = () => { let reset = () => {
@ -240,6 +252,7 @@
gameOver = false; gameOver = false;
score = 0; score = 0;
let gameState = { let gameState = {
cube: cube, cube: cube,
current: current, current: current,
@ -248,8 +261,16 @@
score: score, score: score,
}; };
localStorage.setItem("gameState", JSON.stringify(gameState)); localStorage.setItem("gameState", JSON.stringify(gameState));
gameSetup();
}; };
axios.get('/api/scoreboard').then((res) => {
scoreboard = res.data;
})
.catch((error) => {
if(error.code != 'ERR_INVALID_URL') console.error('Error fetching scoreboard:', error);
});
onMount(() => { onMount(() => {
username = localStorage.getItem("username") || ""; username = localStorage.getItem("username") || "";
if (username.length > 2) promptInput = username; if (username.length > 2) promptInput = username;
@ -328,7 +349,7 @@
{#each cube as c, index} {#each cube as c, index}
{#each c as x, i} {#each c as x, i}
<div class="cube" style={makeCube(x)}> <div class="cube" style={makeCube(x)}>
{#if root[0] == index && root[1] == i && !gameEnding && start} {#if root[0] == index && root[1] == i && !gameEnding && !gameOver && start}
<div class="activeBlock"> <div class="activeBlock">
{#each block[rotation] as b} {#each block[rotation] as b}
<div <div
@ -415,6 +436,63 @@
</div> </div>
</div> </div>
<div class='scores'>
<div class="fifty">
<h2>Todays Top 10</h2>
<div>
<div class='scoreTile underline'>
<div class="username">Player</div>
<div class="score">Count</div>
<div class="score">Score</div>
</div>
{#each scoreboard.now as sc}
<div class='scoreTile'>
<div class="username">{sc.username}</div>
<div class="score">{sc.count}</div>
<div class="score">{sc.score}</div>
</div>
{/each}
</div>
</div>
<div class="fifty">
<h2>Last Top 10</h2>
<div>
<div class='scoreTile underline'>
<div class="username">Player</div>
<div class="score">Count</div>
<div class="score">Score</div>
</div>
{#each scoreboard.prev as sc}
<div class='scoreTile'>
<div class="username">{sc.username}</div>
<div class="score">{sc.count}</div>
<div class="score">{sc.score}</div>
</div>
{/each}
</div>
</div>
</div>
<div class="scores hof">
<h2>Hall Of Fame</h2>
<div class='scoreTile underline hof2'>
<div class="username">Player</div>
<div class="score">Date</div>
<div class="score">Count</div>
<div class="score">Score</div>
</div>
{#each scoreboard.hof as sc}
<div class='scoreTile hof2'>
<div class="username">{sc.username}</div>
<div class="score">{sc.day}</div>
<div class="score">{sc.count}</div>
<div class="score">{sc.score}</div>
</div>
{/each}
<p>**WIP - Hall of Fame Updates Daily**</p>
</div>
<div class="footer"> <div class="footer">
<img <img
style="height: 1rem; margin: 1rem 2px 2px 2px" style="height: 1rem; margin: 1rem 2px 2px 2px"
@ -429,7 +507,7 @@
<style> <style>
h1, h1,
p { p, .scores{
font-family: "Roboto", sans-serif; font-family: "Roboto", sans-serif;
text-align: center; text-align: center;
color: white; color: white;
@ -566,4 +644,49 @@
background-color: rgba(0, 0, 0, 0.1); background-color: rgba(0, 0, 0, 0.1);
color: white; color: white;
} }
.scores {
display: flex;
flex-direction: row;
flex-basis: auto;
width: 100%;
padding-bottom: 5em;
margin-bottom: 5em;
justify-content: space-around;
}
.fifty {
display: flex;
flex-direction: column;
text-align: center;
}
.scoreTile {
display: flex;
flex-direction: row;
width: 80vw;
max-width: 12em;
}
.score {
text-align: right;
width: 30%;
}
.username {
flex-grow: 3;
text-align: left;
}
.underline {
border-bottom: 2px solid #ccc;
}
.hof{
flex-direction: column;
}
.hof2{
width: 90%;
max-width: 90%;
align-self: center;
}
</style> </style>