From c45ff4525c0e45e4b8e762b81fd180c53d206d66 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sun, 8 Nov 2026 12:24:25 +0100 Subject: web: match the desktop layout and remove play-money copy The browser now uses the desktop's full-width game split: no extra game header or card frame, a full-height sidebar with a pinned action block, and the same lobby grid, topbar account/balance blocks, and bottom-left notices. Slots uses the desktop symbol colours and gold win border; roulette gets the flat felt, column bets under the dozens, the wheel, circular chips, and a LAST line; blackjack gets a centred dealer/player table and divider; crash gets the chart panel, phase label and empty ready state. Also drops every play-money/real-money disclaimer from the page copy. --- web/play/src/slots.ts | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'web/play/src/slots.ts') diff --git a/web/play/src/slots.ts b/web/play/src/slots.ts index 8b821cf..cfc9070 100644 --- a/web/play/src/slots.ts +++ b/web/play/src/slots.ts @@ -49,10 +49,6 @@ export function renderSlots( clear(board); clear(side); - const title = node("h2", undefined, "Slots"); - const note = node("p", "note", "Match three or more symbols from the left. Five paylines."); - board.append(title, note); - const reels = node("div", "reels"); const tiles: HTMLElement[] = []; const flat = Array.isArray(view.reels) @@ -81,24 +77,28 @@ export function renderSlots( board.append(reels); const lines = node("div", "win-lines"); + let resultText = "Ready"; if (!active && view.phase === "result") { const winnings = Number(view.winnings ?? 0); if (winnings > 0) { const names = (view.win_lines ?? []) .map((line: number) => `${line} (${LINE_NAMES[line - 1] ?? "line"})`) .join(" · "); - lines.textContent = `${view.win_type === "mega" ? "MEGA WIN" : view.win_type === "big" ? "BIG WIN" : "WIN"} ${money(winnings)}${names ? ` · ${names}` : ""}`; + resultText = `${view.win_type === "mega" ? "MEGA WIN" : view.win_type === "big" ? "BIG WIN" : "WIN"} ${money(winnings)}${names ? ` · ${names}` : ""}`; + lines.textContent = names; lines.classList.add("win-text"); } else { - lines.textContent = "No win — spin again."; + resultText = "No win"; } } else if (active) { - lines.textContent = "Spinning…"; - } else { - lines.textContent = "Pick a bet and spin."; + resultText = "Spinning…"; } board.append(lines); + const foot = node("div", "board-foot"); + foot.append(node("span", "label", "Result"), node("span", undefined, resultText)); + board.append(foot); + if (active) { let tick = 0; animation = window.setInterval(() => { @@ -117,13 +117,13 @@ export function renderSlots( } // Sidebar - side.append(node("div", "label", "Slots")); - side.append(node("p", "note", "5 reels × 3 rows, 5 paylines.")); + side.append(node("h2", undefined, "Slots")); + side.append(node("p", "note", "Match three or more symbols from the left.")); const betRow = node("div", "row"); - const minus = node("button", "btn small", "−10"); + const minus = node("button", "btn small", "−"); const bet = node("strong", "mono", money(Number(view.bet ?? 0))); - const plus = node("button", "btn small", "+10"); + const plus = node("button", "btn small", "+"); minus.disabled = active; plus.disabled = active; minus.addEventListener("click", () => send({ AdjustBet: -10 })); @@ -136,12 +136,12 @@ export function renderSlots( } const status = node("p", "note"); - if (active) status.textContent = "Spinning…"; + if (active) status.textContent = "SPINNING…"; else if (view.phase === "result") { const winnings = Number(view.winnings ?? 0); - status.textContent = winnings > 0 ? `Won ${money(winnings)}` : "No win this spin."; + status.textContent = winnings > 0 ? `WON ${money(winnings)}` : "NO WIN"; if (winnings > 0) status.classList.add("win-text"); - } else status.textContent = "Ready when you are."; + } else status.textContent = "Press SPIN to play."; side.append(status); const actions = node("div", "actions"); -- cgit v1.2.3