diff options
Diffstat (limited to 'web/play/src/roulette.ts')
| -rw-r--r-- | web/play/src/roulette.ts | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/web/play/src/roulette.ts b/web/play/src/roulette.ts index cbb7c6e..a42686a 100644 --- a/web/play/src/roulette.ts +++ b/web/play/src/roulette.ts | |||
| @@ -20,6 +20,9 @@ type Hotspot = { | |||
| 20 | rank: number; | 20 | rank: number; |
| 21 | }; | 21 | }; |
| 22 | 22 | ||
| 23 | let observer: ResizeObserver | null = null; | ||
| 24 | let lastSpin = 0; | ||
| 25 | |||
| 23 | type Layout = { | 26 | type Layout = { |
| 24 | width: number; | 27 | width: number; |
| 25 | height: number; | 28 | height: number; |
| @@ -413,9 +416,11 @@ export function renderRoulette( | |||
| 413 | const zone = hit(event.clientX, event.clientY); | 416 | const zone = hit(event.clientX, event.clientY); |
| 414 | canvas.style.cursor = zone && !spinning ? "pointer" : "default"; | 417 | canvas.style.cursor = zone && !spinning ? "pointer" : "default"; |
| 415 | }); | 418 | }); |
| 416 | new ResizeObserver(() => { | 419 | observer?.disconnect(); |
| 420 | observer = new ResizeObserver(() => { | ||
| 417 | current = draw(canvas, view); | 421 | current = draw(canvas, view); |
| 418 | }).observe(canvas); | 422 | }); |
| 423 | observer.observe(canvas); | ||
| 419 | 424 | ||
| 420 | // Sidebar | 425 | // Sidebar |
| 421 | side.append(node("div", "label", "Roulette")); | 426 | side.append(node("div", "label", "Roulette")); |
| @@ -459,7 +464,11 @@ export function renderRoulette( | |||
| 459 | const actions = node("div", "actions"); | 464 | const actions = node("div", "actions"); |
| 460 | const spin = node("button", "btn primary wide big", spinning ? "SPINNING…" : "SPIN WHEEL"); | 465 | const spin = node("button", "btn primary wide big", spinning ? "SPINNING…" : "SPIN WHEEL"); |
| 461 | spin.disabled = spinning || total === 0; | 466 | spin.disabled = spinning || total === 0; |
| 462 | spin.addEventListener("click", () => send("Spin")); | 467 | spin.addEventListener("click", () => { |
| 468 | if (Date.now() - lastSpin < 600) return; | ||
| 469 | lastSpin = Date.now(); | ||
| 470 | send("Spin"); | ||
| 471 | }); | ||
| 463 | const clearBets = node("button", "btn wide", "Clear bets"); | 472 | const clearBets = node("button", "btn wide", "Clear bets"); |
| 464 | clearBets.disabled = spinning || total === 0; | 473 | clearBets.disabled = spinning || total === 0; |
| 465 | clearBets.addEventListener("click", () => send("ClearBets")); | 474 | clearBets.addEventListener("click", () => send("ClearBets")); |
