From 1f8394f23bbe19691526dab4bc7778b3727c33bf Mon Sep 17 00:00:00 2001 From: Leon Mika Date: Sat, 20 Dec 2025 22:32:30 +1100 Subject: [PATCH] Added the end game --- site/mahjong/index.html | 24 ++++++++++++++++++------ site/mahjong/main.js | 20 +++++++++++++++++++- site/mahjong/models.js | 1 - site/mahjong/style.css | 7 +++++++ 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/site/mahjong/index.html b/site/mahjong/index.html index 1c070f4..e1dce3f 100644 --- a/site/mahjong/index.html +++ b/site/mahjong/index.html @@ -43,10 +43,12 @@ -
- - +
Prevailing: E
+
+ + +
+
+
+
+ + +
+
diff --git a/site/mahjong/main.js b/site/mahjong/main.js index 49609ff..f9ba03c 100644 --- a/site/mahjong/main.js +++ b/site/mahjong/main.js @@ -24,6 +24,7 @@ Stimulus.register("scorecard", class extends Controller { handleGameState(ev) { switch (ev.detail.mode) { + case "newgame": case "endround": this.element.classList.add("hidden"); break; @@ -37,10 +38,19 @@ Stimulus.register("scorecard", class extends Controller { endRound(ev) { ev.preventDefault(); - console.log("end round"); emitGameStateEvent({mode: "endround"}); } + endGame(ev) { + ev.preventDefault(); + + if (!confirm("Are you sure you want to end the game?")) { + return; + } + + emitGameStateEvent({mode: "newgame"}); + } + _rebuildTable() { let gameState = getGameState(); @@ -102,6 +112,9 @@ Stimulus.register("newgame", class extends Controller { case "nextround": this.element.classList.add("hidden"); break; + case "newgame": + this.element.classList.remove("hidden"); + break; } } @@ -130,6 +143,7 @@ Stimulus.register("endround", class extends Controller { switch (ev.detail.mode) { case "startgame": case "nextround": + case "newgame": this.element.classList.add("hidden"); break; case "endround": @@ -160,6 +174,10 @@ Stimulus.register("endround", class extends Controller { } } + goBack(ev) { + emitGameStateEvent({mode: "startgame"}); + } + nextRound(ev) { ev.preventDefault(); diff --git a/site/mahjong/models.js b/site/mahjong/models.js index 9180afe..48d1762 100644 --- a/site/mahjong/models.js +++ b/site/mahjong/models.js @@ -108,7 +108,6 @@ export class GameState { playerTotals() { let scores = this.players.map(p => 0); - for (let i = 0; i < this.rounds.length; i++) { for (let j = 0; j < this.rounds[i].length; j++) { scores[j] += this.rounds[i][j].s; diff --git a/site/mahjong/style.css b/site/mahjong/style.css index 7a26656..1940ccb 100644 --- a/site/mahjong/style.css +++ b/site/mahjong/style.css @@ -11,4 +11,11 @@ gap: 15px; grid-template-columns: 2fr 1fr; align-items: baseline; +} + +.btns { + display: flex; + gap: 10px; + justify-content: space-between; + align-items: center; } \ No newline at end of file