diff options
| author | Maksymilian Jopek <maks@jopek.eu> | 2022-03-16 22:34:43 +0100 |
|---|---|---|
| committer | Maksymilian Jopek <maks@jopek.eu> | 2022-03-16 22:34:43 +0100 |
| commit | f8c006414aec99c90558587dbe08cf1705ed44f7 (patch) | |
| tree | 2f52ea7f071f91e5e53e4dfdde9cdd2b8d7cd4dc /src/ui.ts | |
| download | boules-f8c006414aec99c90558587dbe08cf1705ed44f7.tar.gz boules-f8c006414aec99c90558587dbe08cf1705ed44f7.tar.zst boules-f8c006414aec99c90558587dbe08cf1705ed44f7.zip | |
Initial commit w/ v0.0.1
Diffstat (limited to 'src/ui.ts')
| -rw-r--r-- | src/ui.ts | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/ui.ts b/src/ui.ts new file mode 100644 index 0000000..f0a0e73 --- /dev/null +++ b/src/ui.ts @@ -0,0 +1,62 @@ +import Ball from "./Ball"; +import { MAP_WIDTH, MAP_HEIGHT, TD_SIZE, CIRCLE_SIZE } from "./consts"; + +let selectedBall: Ball | null = null; +let smallerCircle = () => { }; + +export function tdOnclick(el: PointerEvent) { + if (!selectedBall) return; + // Calc which x, y is clicked + // pass to shortest path + // ui +} +export function render(balls: Ball[]) { + for (const ball of balls) { + const { x, y, color } = ball; + const td = getTd(x, y); + (td.firstChild as HTMLDivElement).style.backgroundColor = color; + + td.onclick = () => { + const circle = td.firstChild as HTMLDivElement; + + if (circle.style.width === TD_SIZE) { + smallerCircle(); + selectedBall = null; + return; + } + smallerCircle(); + + + circle.style.width = TD_SIZE; + circle.style.height = TD_SIZE; + selectedBall = ball; + + smallerCircle = () => { + circle.style.width = CIRCLE_SIZE; + circle.style.height = CIRCLE_SIZE; + } + }; + } +} +// setInterval(() => console.log(selectedBall), 1000); +export function genGameTable() { + const table = getGameMapEl(); + for (let i = 0; i < MAP_HEIGHT; i++) { + const tr = document.createElement("tr") + for (let j = 0; j < MAP_WIDTH; j++) { + const td = document.createElement("td") + //@ts-expect-error + td.onclick = tdOnclick; + td.appendChild(document.createElement("div")); + tr.appendChild(td) + } + table.appendChild(tr) + } + +} +export function getGameMapEl(): HTMLTableElement { + return document.querySelector('table')! +} +export function getTd(x: number, y: number): HTMLTableDataCellElement { + return getGameMapEl().children[x].children[y] as HTMLTableDataCellElement; +} |
