Added the end game
Some checks failed
/ publish (push) Failing after 34s

This commit is contained in:
Leon Mika 2025-12-20 22:32:30 +11:00
parent e020f2a4b6
commit 1f8394f23b
4 changed files with 44 additions and 8 deletions

View file

@ -43,10 +43,12 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div> <div class="btns">
<button data-action="click->scorecard#endRound">End Round</button>
<button>End Game</button>
<div data-scorecard-target="prevailing">Prevailing: E</div> <div data-scorecard-target="prevailing">Prevailing: E</div>
<div>
<button data-action="click->scorecard#endGame">End Game</button>
<button data-action="click->scorecard#endRound">End Round</button>
</div>
</div> </div>
</div> </div>
<div id="player-entry" class="hidden" data-controller="newgame" <div id="player-entry" class="hidden" data-controller="newgame"
@ -63,8 +65,13 @@
<label for="player-5">Player 5</label> <label for="player-5">Player 5</label>
<input type="text" data-newgame-target="playerName"> <input type="text" data-newgame-target="playerName">
<div class="btns">
<div></div>
<div>
<button data-action="click->newgame#startGame">Start Game</button> <button data-action="click->newgame#startGame">Start Game</button>
</div> </div>
</div>
</div>
<div id="end-round" class="hidden" data-controller="endround" <div id="end-round" class="hidden" data-controller="endround"
data-action="gamestatechanged@window->endround#handleGameState"> data-action="gamestatechanged@window->endround#handleGameState">
<h3>End Round</h3> <h3>End Round</h3>
@ -73,8 +80,13 @@
<p data-endround-target="wind"></p> <p data-endround-target="wind"></p>
<div class="btns">
<div></div>
<div>
<button data-action="click->endround#goBack">Cancel</button>
<button data-action="click->endround#nextRound">Next Round</button> <button data-action="click->endround#nextRound">Next Round</button>
</div> </div>
</div>
<script src="./main.js" type="module"></script> <script src="./main.js" type="module"></script>
</body> </body>

View file

@ -24,6 +24,7 @@ Stimulus.register("scorecard", class extends Controller {
handleGameState(ev) { handleGameState(ev) {
switch (ev.detail.mode) { switch (ev.detail.mode) {
case "newgame":
case "endround": case "endround":
this.element.classList.add("hidden"); this.element.classList.add("hidden");
break; break;
@ -37,10 +38,19 @@ Stimulus.register("scorecard", class extends Controller {
endRound(ev) { endRound(ev) {
ev.preventDefault(); ev.preventDefault();
console.log("end round");
emitGameStateEvent({mode: "endround"}); emitGameStateEvent({mode: "endround"});
} }
endGame(ev) {
ev.preventDefault();
if (!confirm("Are you sure you want to end the game?")) {
return;
}
emitGameStateEvent({mode: "newgame"});
}
_rebuildTable() { _rebuildTable() {
let gameState = getGameState(); let gameState = getGameState();
@ -102,6 +112,9 @@ Stimulus.register("newgame", class extends Controller {
case "nextround": case "nextround":
this.element.classList.add("hidden"); this.element.classList.add("hidden");
break; break;
case "newgame":
this.element.classList.remove("hidden");
break;
} }
} }
@ -130,6 +143,7 @@ Stimulus.register("endround", class extends Controller {
switch (ev.detail.mode) { switch (ev.detail.mode) {
case "startgame": case "startgame":
case "nextround": case "nextround":
case "newgame":
this.element.classList.add("hidden"); this.element.classList.add("hidden");
break; break;
case "endround": case "endround":
@ -160,6 +174,10 @@ Stimulus.register("endround", class extends Controller {
} }
} }
goBack(ev) {
emitGameStateEvent({mode: "startgame"});
}
nextRound(ev) { nextRound(ev) {
ev.preventDefault(); ev.preventDefault();

View file

@ -108,7 +108,6 @@ export class GameState {
playerTotals() { playerTotals() {
let scores = this.players.map(p => 0); let scores = this.players.map(p => 0);
for (let i = 0; i < this.rounds.length; i++) { for (let i = 0; i < this.rounds.length; i++) {
for (let j = 0; j < this.rounds[i].length; j++) { for (let j = 0; j < this.rounds[i].length; j++) {
scores[j] += this.rounds[i][j].s; scores[j] += this.rounds[i][j].s;

View file

@ -12,3 +12,10 @@
grid-template-columns: 2fr 1fr; grid-template-columns: 2fr 1fr;
align-items: baseline; align-items: baseline;
} }
.btns {
display: flex;
gap: 10px;
justify-content: space-between;
align-items: center;
}