diff --git a/public/fonts/kyrou 7 wide bold xtnd.ttf b/public/fonts/kyrou 7 wide bold xtnd.ttf new file mode 100644 index 0000000..165c3e7 Binary files /dev/null and b/public/fonts/kyrou 7 wide bold xtnd.ttf differ diff --git a/src/App.tsx b/src/App.tsx index 46ec3a3..f07aa80 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,6 @@ import type { Component } from "solid-js"; import Main from "./pages/Main"; +import "./styles/fonts-grixel.css"; const App: Component = () => { return ; diff --git a/src/index.css b/src/index.css index d4b5078..d431901 100644 --- a/src/index.css +++ b/src/index.css @@ -1 +1,14 @@ -@import 'tailwindcss'; +@import "tailwindcss"; + +@theme { + --animate-fadein: fadein 0.1s ease-in-out 1; + @keyframes fadein { + 0%, + 100% { + transform: rotate(-1deg); + } + 50% { + transform: rotate(1deg); + } + } +} diff --git a/src/pages/Main.tsx b/src/pages/Main.tsx index e56deec..2a1bdda 100644 --- a/src/pages/Main.tsx +++ b/src/pages/Main.tsx @@ -1,4 +1,4 @@ -import { createSignal, type Component } from "solid-js"; +import { createMemo, createSignal, type Component } from "solid-js"; import { allTypes, girlTypes } from "../typing/girlTypes"; const Main: Component = () => { @@ -10,13 +10,82 @@ const Main: Component = () => { ? prev.filter((value) => value !== girl) : [...prev, girl], ); - console.log(selectedTypes()); }; + const chosenTypes = createMemo(() => { + const ret = [ + ...selectedTypes().map((girl) => + allTypes.find((girlT) => girlT.type === girl), + ), + ]; + return ret; + }); + + const rows = createMemo(() => { + console.log("Calculating weaknesses..."); + let strengths: girlTypes[] = []; + let weaknesses: girlTypes[] = []; + let immunities: girlTypes[] = []; + selectedTypes().forEach((t) => { + const currentGirl = allTypes.find((girl) => girl.type === t); + if (currentGirl) { + strengths = [...strengths, ...currentGirl.strengths]; + weaknesses = [...weaknesses, ...currentGirl.weaknesses]; + immunities = [...immunities, ...currentGirl.immunities]; + } + }); + const girlT = { + ...girlTypes, + }; + const keys = Object.keys(girlT); + let counts = new Map(); + keys.forEach((key) => counts.set(girlT[parseInt(key)], 0)); + + strengths.forEach((str) => + counts.set(girlTypes[str], counts.get(girlTypes[str]) + 1), + ); + weaknesses.forEach((wea) => + counts.set(girlTypes[wea], counts.get(girlTypes[wea]) - 1), + ); + + const multipliers = new Set([...counts.values()].sort((a, b) => b - a)); + + const rows: { mul: number; girls: string[] }[] = []; + multipliers.forEach((mul) => rows.push({ mul: mul, girls: [] })); + + counts.forEach((value, key) => + rows + .find((val) => val.mul === value && key != "None" && key != undefined) + ?.girls.push(key), + ); + + const finalRows = rows.map((value) => { + return { mul: 1 * Math.pow(2, value.mul), girls: value.girls }; + }); + + if (immunities.length > 0) { + finalRows.push({ + mul: 0, + girls: [...immunities.map((value) => girlTypes[value])], + }); + } + + const ret = finalRows.map((value) => { + return { + mul: value.mul, + girls: value.girls.map((girl) => + allTypes.find((girlT) => girlTypes[girlT.type] === girl), + ), + }; + }); + + return ret; + }); + return ( -