{/* Header */}
BATTLESHIP
Playing as
{getInitials(myName)}
{myName}
{/* Status bar */}
{statusDisplay.message}
{/* Turn indicator */}
YOUR TURN
{/* Game boards */}
{/* My Board (left) - uses pre-computed headers from module scope */}
Your Fleet
{COLS.map((c, i) => (
{c}
))}
{ROWS.map((rowIdx) => (
{rowIdx + 1}
))}
{myBoardCells.map((cell, idx) => (
{cell.content}
))}
{/* Enemy Board (right) - uses event delegation for clicks */}
Enemy Waters
{COLS.map((c, i) => (
{c}
))}
{ROWS.map((rowIdx) => (
{rowIdx + 1}
))}
{enemyBoardCells.map((cell, idx) => (
fireShot.send({ row: cell.row, col: cell.col })}
>
{cell.content}
))}
{/* Legend */}
Your Ship
Unknown
X
Hit
O
Miss
{/* Players sidebar */}
{/* Player 1 */}
{player1Display.initials}
{player1Display.name}
{myPlayerNumber === 1 ? " (you)" : ""}
{player1Display.status}
vs
{/* Player 2 */}
{player2Display.initials}
{player2Display.name}
{myPlayerNumber === 2 ? " (you)" : ""}
{player2Display.status}
{/* Last message from game state */}
{statusDisplay.lastMessage}
),
myName,
myPlayerNumber,
fireShot,
};
},
);
export default BattleshipRoom;