Changes
2 changed files (+23/-50)
-
-
@@ -19,13 +19,10 @@ this.client = client;} sendGameState() { const i = this.game.players.indexOf(this); const otherPlayers = []; for (let j = 1; j < this.game.players.length; ++j) otherPlayers.push(this.game.players[(i + j) % this.game.players.length]); this.client.socket.emit('gameState', { cards: this.cards, rank: this.rank, players: otherPlayers.map((p: Player) => ({ players: this.game.players.map((p: Player) => ({ username: p.client.username, numCards: p.cards.length, stackSize: p.stack.length,
-
@@ -129,8 +126,7 @@ p.client.once('prepare', stack => {delete p.disconnectListener; (() => { p.stack = stack; p.client.socket.disconnect(); logSocket(p.client.socket, 'Bad cards argument on turn'); return; })(); resolve(); });
-
@@ -180,7 +176,7 @@ (() => {if (this.players[selectedPlayer].stack.length > 0) { if (this.players[selectedPlayer].stack[0].suit === Suit.Diamonds || this.players[selectedPlayer].stack[0].suit === Suit.Hearts) this.phase = 3; // Red card this.players[selectedPlayer].stack.splice(0); this.players[selectedPlayer].stack.splice(0, 1); return; } p.client.socket.disconnect();
-
@@ -202,9 +198,8 @@ await new Promise<void>(resolve => {p.client.once('giveup', card => { delete p.disconnectListener; (() => { p.cards.splice(card); // Remove card, may want to check if it is valid p.client.socket.disconnect(); logSocket(p.client.socket, 'Bad cards argument on turn'); p.cards.splice(card, 1); return; })(); resolve(); });
-
-
-
@@ -38,8 +38,6 @@const [gameState, setGameState] = useState<GameState | null>(null); const [num, setNum] = useState(0); const [stackSelected, setStackSelected] = useState<boolean[]>([]); const [cardSelected, setCardSelected] = useState<boolean[]>([]); useEffect(() => { const socket = io(process.env.NEXT_PUBLIC_BACK_HOST!);
-
@@ -64,8 +62,6 @@ });socket.on('gameState', (data: GameState) => { setGameState(data); if (data.cards.length !== cardSelected.length) setCardSelected(new Array(data.cards.length).fill(false)); }); socket.on('endGame', () => setGameState(null));
-
@@ -116,8 +112,6 @@ }</> ); } const selectedStacks = [...Array(gameState.players.length).keys()].filter((_, i) => stackSelected[i]); const selectedCards = gameState.cards.filter((_, i) => cardSelected[i]); if (gameState.phase === 0) { return ( <>
-
@@ -219,24 +213,15 @@ <div><p>Stacks:</p> {gameState.players.map((player, i) => ( <label key={player.username+': '+player.stackSize}> <input type="checkbox" checked={stackSelected[i] || false} onChange={() => { const stackSelected2 = [...stackSelected]; stackSelected2[i] = !stackSelected[i]; setStackSelected(stackSelected2); }} /> {player.username+': '+player.stackSize+' cards '} <button onClick={() => socket.emit('flip', i)} disabled={username !== gameState.lastPlayedPlayer} > Flip! </button> {' '+player.username+': '+player.stackSize+' cards '} </label> ))} <button onClick={() => socket.emit('flip', selectedStacks[0])} disabled={username !== gameState.lastPlayedPlayer || selectedStacks.length !== 1} > Flip! </button> </div> </> );
-
@@ -256,26 +241,19 @@ <div><p>Your cards:</p> {gameState.cards.map((card, i) => ( <label key={card.rank+' '+card.suit}> <input type="checkbox" checked={cardSelected[i] || false} onChange={() => { const cardSelected2 = [...cardSelected]; cardSelected2[i] = !cardSelected[i]; setCardSelected(cardSelected2); }} /> <span style={{color: (card.suit === Suit.Hearts || card.suit === Suit.Diamonds ? 'red' : 'black')}}> {' '+rankStrs[card.rank]+' '+suitChars[card.suit]} </span> <div> <button onClick={() => socket.emit('giveup', i)} disabled={username !== (gameState.lastPlayed ? gameState.lastPlayedPlayer : gameState.playerTurn)} > Give up this card! </button> <span style={{color: (card.suit === Suit.Hearts || card.suit === Suit.Diamonds ? 'red' : 'black')}}> {' '+rankStrs[card.rank]+' '+suitChars[card.suit]} </span> </div> </label> ))} <button onClick={() => socket.emit('giveup', selectedCards[0])} disabled={username !== (gameState.lastPlayed ? gameState.lastPlayedPlayer : gameState.playerTurn) || selectedCards.length !== 1} > Give up this card! </button> </div> </> );
-