function revealCell()

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
                        }
                    }
                }
            }
        }
    }