fix:websocket errors & polict change

This commit is contained in:
2026-01-02 14:26:54 +00:00
parent ef277a3cfd
commit 3a7b1b9794
6 changed files with 64 additions and 42 deletions
+17 -15
View File
@@ -17,7 +17,7 @@ class BiscaGame {
};
this.currentTurn = null;
this.status = "pending";
this.status = 'pending';
this.startTime = null;
this.players = {
@@ -50,7 +50,7 @@ class BiscaGame {
this.currentTurn = playerIds.find((id) => id != 1) || playerIds[0];
this.startTime = Date.now();
this.status = "playing";
this.status = 'playing';
}
startTurnTimer(callback) {
@@ -74,10 +74,12 @@ class BiscaGame {
}
handleTimeout() {
console.log(`[Game ${this.id}] Timeout! Auto-playing for ${this.currentTurn}`);
console.log(
`[Game ${this.id}] Timeout! Auto-playing for ${this.currentTurn}`,
);
const lowestCard = this.getLowestCard(this.currentTurn);
if (lowestCard && this.timeoutCallback) {
this.timeoutCallback(this.currentTurn, lowestCard.id);
}
@@ -92,7 +94,7 @@ class BiscaGame {
}
createDeck() {
const suits = ["c", "e", "o", "p"];
const suits = ['c', 'e', 'o', 'p'];
const ranks = [1, 2, 3, 4, 5, 6, 7, 11, 12, 13];
let deck = [];
@@ -128,7 +130,7 @@ class BiscaGame {
}
playCard(userId, cardId) {
if (this.currentTurn != userId) return { error: "Not your turn!" };
if (this.currentTurn != userId) return { error: 'Not your turn!' };
const player = this.players[userId];
const cardIndex = player.hand.findIndex((c) => c.id === cardId);
@@ -142,7 +144,7 @@ class BiscaGame {
const suitToFollow = this.table.playerCard.suit;
const hasSuit = player.hand.some((c) => c.suit === suitToFollow);
if (hasSuit && card.suit !== suitToFollow) {
return { error: "You must follow the suit!" };
return { error: 'You must follow the suit!' };
}
}
@@ -154,7 +156,7 @@ class BiscaGame {
this.table.playerCard = card;
this.table.firstPlayerId = userId;
this.currentTurn = this.getOpponentId(userId);
return { action: "next_turn" };
return { action: 'next_turn' };
} else {
this.table.opponentCard = card;
return this.resolveTrick();
@@ -194,7 +196,7 @@ class BiscaGame {
this.table = { playerCard: null, opponentCard: null, firstPlayerId: null };
if (this.players[winnerId].hand.length === 0) {
this.status = "finished";
this.status = 'finished';
this.stopTimer();
const pIds = Object.keys(this.players);
@@ -214,11 +216,11 @@ class BiscaGame {
const finalLoser = isDraw
? null
: gameWinnerId == p1Obj.id
? p2Obj.id
: p1Obj.id;
? p2Obj.id
: p1Obj.id;
return {
action: "game_ended",
action: 'game_ended',
trickResult,
winnerId: finalWinner,
loserId: finalLoser,
@@ -231,7 +233,7 @@ class BiscaGame {
};
}
return { action: "trick_resolved", trickResult };
return { action: 'trick_resolved', trickResult };
}
getStateForPlayer(userId) {
@@ -277,4 +279,4 @@ class BiscaGame {
}
}
module.exports = BiscaGame;
export default BiscaGame;