From 781921efd7419caaa29dbb8722bfa784b23ad413 Mon Sep 17 00:00:00 2001 From: Dominic Zimmer Date: Sat, 30 Mar 2024 12:33:49 +0100 Subject: [PATCH] Update prompts, id mapping, icon --- public/bingo.ico | Bin 0 -> 67646 bytes public/bingo.png | Bin 0 -> 26451 bytes public/index.html | 2 +- src/App.css | 13 ++++++-- src/App.tsx | 78 ++++++++++++++++++++++++++++++---------------- src/prompts.ts | 30 ++++++++++++------ 6 files changed, 84 insertions(+), 39 deletions(-) create mode 100644 public/bingo.ico create mode 100644 public/bingo.png diff --git a/public/bingo.ico b/public/bingo.ico new file mode 100644 index 0000000000000000000000000000000000000000..68eb43a74f17e1b41c5734ff58fbf33fe772fa16 GIT binary patch literal 67646 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 M_lXJGbA5aNe<%r&>;M1& literal 0 HcmV?d00001 diff --git a/public/bingo.png b/public/bingo.png new file mode 100644 index 0000000000000000000000000000000000000000..327ec9e35e37cc60657070d3a11304a843c25a09 GIT binary patch literal 26451 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index 1c01e35..2cd2c81 100644 --- a/public/index.html +++ b/public/index.html @@ -2,7 +2,7 @@ - + div > div { - background: #E48720; + background: var(--cs-orange); display: grid; border-radius: .5rem; aspect-ratio: 1; @@ -40,7 +49,7 @@ h1, span { } .legend { display: grid; - grid-template-columns: auto 1fr; + grid-template-columns: auto auto 1fr; column-gap: 2rem; } .legend .header span { diff --git a/src/App.tsx b/src/App.tsx index b551ed0..d3fd9a6 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,11 +1,12 @@ -import React, { Fragment, useEffect, useState } from 'react'; +import { reverse } from 'dns'; +import React, { Fragment, useEffect, useMemo, useState } from 'react'; import './App.css'; -import {prompts} from './prompts'; +import {prompts, Categories} from './prompts'; const alphabet = "ABCDEFGHIKLMNOPQRSTUVWXYZ"; -const lskey_prompts = "cs_bingo_prompts-day2"; -const lskey_ticked = "cs_bingo_ticked-day2"; +const lskey_prompts = "cs_bingo_prompts-day3"; +const lskey_ticked = "cs_bingo_ticked-day3"; const shuffle = (array: T[]): T[] => { return array @@ -16,36 +17,53 @@ const shuffle = (array: T[]): T[] => { const App: React.FC<{}> = () => { const [resetCounter, setResetCounter] = useState(0); - const [lines, setLines] = useState<[string,string][]>([]); - const saveLines = (lines: [string,string][]) => { - localStorage.setItem(lskey_prompts, JSON.stringify(lines)); + //const [lines, setLines] = useState<[Categories,string][]>([]); + const [linesP, setLinesP] = useState([]); + const saveLines = (theLines: T[]) => { + localStorage.setItem(lskey_prompts, JSON.stringify(theLines)); }; - const saveTicks = (lines: boolean[]) => { - localStorage.setItem(lskey_ticked, JSON.stringify(lines)); + const saveTicks = (theLines: boolean[]) => { + localStorage.setItem(lskey_ticked, JSON.stringify(theLines)); }; const [highlighted, setHighlighted] = useState(null); const highlight = (index: number) => { setHighlighted(index); - setTimeout(() => setHighlighted(null), 3000); - document.getElementById("letter-" + alphabet[index])?.scrollIntoView(); + setTimeout(() => setHighlighted(null), 1500); + document.getElementById(`letter-${alphabet[index]}`)?.scrollIntoView(); }; useEffect(() => { console.log("no lines"); - if (lines.length !== 0) return; + if (linesP.length !== 0) return; const loadLines = localStorage.getItem(lskey_prompts); const loadTicks = localStorage.getItem(lskey_ticked); if (loadLines === null || loadTicks === null) { - const newPrompts = shuffle(prompts).slice(0, 25) + const newPromptsP = shuffle([...(new Array(prompts.length)).fill(0).map((_, i ) => i)]); + console.log(newPromptsP); const newTicks = new Array(25).fill(false); - setLines(newPrompts); + setLinesP(newPromptsP); setTicked(newTicks); - saveLines(newPrompts); + saveLines(newPromptsP); saveTicks(newTicks); } else { - setLines(JSON.parse(loadLines)); + setLinesP(JSON.parse(loadLines)); setTicked(JSON.parse(loadTicks)); } - }, [lines]) + }, [linesP]) + + const reverseLookup: {[x: number]: number} = useMemo(() => { + const x= Object.fromEntries(linesP.map((val, ind) => [val, ind])); + console.log("x", x); + return x; + }, [linesP]); + const reverseAlphabetLookup: {[x: string]: number} = useMemo(() => { + const x= Object.fromEntries(linesP.flatMap((_, ind) => { + const e = alphabet[reverseLookup[ind]]; + if (!e) return []; + return [[e, ind]] + } )); + console.log("x", x); + return x; + }, [linesP]); const [ticked, setTicked] = useState(new Array(25).fill(false) ); const toggleField = (index: number) => { @@ -59,11 +77,11 @@ const App: React.FC<{}> = () => { const incCounter = () => { setResetCounter((old) => { if (old === 15) { - const newPrompts = shuffle(prompts).slice(0, 25) + const newPromptsP = shuffle([...(new Array(prompts.length)).fill(0).map((_, i ) => i)]); const newTicked = new Array(25).fill(false) ; - setLines(newPrompts); + setLinesP(newPromptsP); setTicked(newTicked); - saveLines(newPrompts); + saveLines(newPromptsP); saveTicks(newTicked) } return old + 1; @@ -92,18 +110,24 @@ const App: React.FC<{}> = () => {
- Letter +

Id

- Goal +

Letter

- {lines.map(([category, line], index)=> +
+

Goal

+
+ {linesP.map((permutation, index)=> -
- {alphabet[index]} +
+ {index}
-
- {line} +
+ {alphabet[reverseLookup[index]]} +
+
+ {prompts[index][1]}
)} diff --git a/src/prompts.ts b/src/prompts.ts index 8599ddd..99c3614 100644 --- a/src/prompts.ts +++ b/src/prompts.ts @@ -1,33 +1,44 @@ -type Categories = "kills" | "rounds" | "fails" | "epic" | "meta" | "unexpected"; +export type Categories = "kills" | "rounds" | "fails" | "epic" | "meta" | "unexpected"; export const prompts: [Categories, string][] = [ ["kills", "Zeus Kill"], ["kills", "Knife Kill"], ["kills", "Team Kill"], ["kills", "HE Kill"], ["kills", "Molotov Kill"], - ["rounds", "9 rounds in a row"], - ["rounds", "10 rounds in one half"], - ["fails", "Ninja Defuse"], + ["kills", "Kill in Molotov"], + ["kills", "Peek-a-Boo"], + ["kills", "Non-Meta Gun Kill"], + + ["rounds", "8 rounds in a row"], + ["rounds", "9 rounds in one half"], + + ["fails", "Oops, my Shadow"], ["fails", "Eco win vs Full Buy"], + ["fails", "Cannot convert Pistol Round"], ["fails", "Trigger discipline moment"], ["fails", "Underestimated bomb radius"], ["fails", "T dies after time"], - ["fails", "4:3 Moment"], ["fails", "CT forgot defuser"], + ["fails", "Where'd the time go?"], ["fails", "CS2 is bug free"], ["fails", "Death while throwing util"], - //["fails", "#Chicken Moment"], + ["fails", "Bad Timing!"], + ["epic", "Ace"], - ["epic", "IGL > 15 kills"], + ["epic", "Kill Feed: Gun+3"], + ["epic", "IGL ≥ 15 kills"], ["epic", "30 bomb"], ["epic", "AWP Collat"], ["epic", "Clutch 1v3"], ["epic", "Clutch 2v5"], ["epic", "Get down Mr. President!"], - ["meta", "Inferno picked"], + ["epic", "Sick Defuse"], + + ["meta", "Player plays fans"], ["meta", "Double OT"], ["meta", "Rush B Blyat"], - ["meta", "5 CTs save"], + ["meta", "4 CTs save"], + ["unexpected", "Ladder kill"], ["unexpected", "Kill while flashed"], ["unexpected", "AWP noscope"], @@ -35,6 +46,7 @@ export const prompts: [Categories, string][] = [ ["unexpected", "Player hiding in smoke"], ["unexpected", "150 damage with 1 HE"], ["unexpected", "2:0 and bye!"], + ["unexpected", "Hug in Smoke"], ] export default {};