in src/gemini_95/index.ts [1346:1380]
function revealCell(cell: MinesweeperCell) {
if (cell.isRevealed || cell.isFlagged || cell.isMine) {
return; // Should not happen if called correctly, but safe check
}
cell.isRevealed = true;
cell.element.classList.add('revealed');
cell.element.textContent = ''; // Clear flag if it was mistakenly revealed
if (cell.adjacentMines > 0) {
cell.element.textContent = cell.adjacentMines.toString();
cell.element.dataset.number = cell.adjacentMines.toString(); // For CSS coloring
} else {
// Flood fill for empty cells
for (let dr = -1; dr <= 1; dr++) {
for (let dc = -1; dc <= 1; dc++) {
if (dr === 0 && dc === 0) continue;
const nr = cell.row + dr;
const nc = cell.col + dc;
if (
nr >= 0 && nr < minesweeperGridSize.rows &&
nc >= 0 && nc < minesweeperGridSize.cols
) {
const neighbor = grid[nr][nc];
if (!neighbor.isRevealed && !neighbor.isFlagged) {
// Delay slightly to show cascade effect (optional)
// setTimeout(() => revealCell(neighbor), 10);
revealCell(neighbor); // Recursive call
}
}
}
}
}
}