add dealer chip
authorGeoffrey Allott <geoffrey@allott.email>
Fri, 26 May 2023 21:42:52 +0000 (22:42 +0100)
committerGeoffrey Allott <geoffrey@allott.email>
Fri, 26 May 2023 21:42:52 +0000 (22:42 +0100)
site/modules/poker.js
site/style/poker.css

index b496722e7a4858033b1cbd91fd4d0aa154d7a85a..4002d09fbf8089c50f33cab70a73129c28f55cc5 100644 (file)
@@ -153,6 +153,14 @@ export class TexasHoldEm {
         this.pot_size_text = document.createTextNode("");
         pot_size.append(this.pot_size_text);
 
+        this.dealer_chip = create_svg_element(this.svg, "ellipse", ["dealer-chip"], [["cx", "250"], ["cy", "250"], ["rx", "10"], ["ry", "5"]]);
+        const defs = create_svg_element(this.svg, "defs", [], []);
+        const dealer_chip_gradient = create_svg_element(defs, "radialGradient", [], [["id", "dealer-chip-gradient"]]);
+        const stop1 = create_svg_element(dealer_chip_gradient, "stop", [], [["offset", "0%"], ["stop-color", "red"]]);
+        const stop2 = create_svg_element(dealer_chip_gradient, "stop", [], [["offset", "30%"], ["stop-color", "white"]]);
+        const stop3 = create_svg_element(dealer_chip_gradient, "stop", [], [["offset", "50%"], ["stop-color", "red"]]);
+        const stop4 = create_svg_element(dealer_chip_gradient, "stop", [], [["offset", "95%"], ["stop-color", "white"]]);
+
         this.bet_controls = new BetControls(this)
 
         this.close_control = create_svg_element(this.svg, "rect", ["close-control"], [["x", "460"], ["y", "5"], ["width", "35"], ["height", "35"], ["rx", "2"]])
@@ -226,6 +234,14 @@ export class TexasHoldEm {
     redraw_players() {
         this.bet_controls.redraw()
         this.pot_size_text.textContent = this.pot || "";
+        if (this.seats.has(this.dealer)) {
+            const seat = this.seats.get(this.dealer);
+            const angle = this.player_angle(seat);
+            const x = 250 - 100 * Math.sin(angle);
+            const y = 245 + 52 * Math.cos(angle);
+            this.dealer_chip.setAttribute("cx", x);
+            this.dealer_chip.setAttribute("cy", y);
+        }
         for (const [username, [user, stack, active, bet]] of this.user_icons) {
             if (!this.seats.has(username)) {
                 this.svg.removeChild(user);
index cfa37acb002640692836a4884e33432b301c5f46..defb0b2d264ca1f2428b845543ef8872381e24cc 100644 (file)
     font-size: 14pt;
 }
 
+.dealer-chip {
+    fill: url(#dealer-chip-gradient);
+}
+
 .bet-size {
     pointer-events: none;
     text-anchor: middle;