diff --git a/BlazorGames/Models/Minesweeper/GameBoard.cs b/BlazorGames/Models/Minesweeper/GameBoard.cs index d16345d..fd30bce 100644 --- a/BlazorGames/Models/Minesweeper/GameBoard.cs +++ b/BlazorGames/Models/Minesweeper/GameBoard.cs @@ -73,6 +73,19 @@ public List GetNeighbors(int x, int y) return nearbyPanels.Except(currentPanel).ToList(); } + public void RevealNumberPanelNeighbors(int x, int y) + { + var neighbors = GetNeighbors(x, y); + + foreach (var panel in neighbors) + { + if (!panel.IsFlagged && !panel.IsRevealed) + { + RevealPanel(panel.X, panel.Y); + } + } + } + public void RevealPanel(int x, int y) { //Step 1: Find and reveal the clicked panel diff --git a/BlazorGames/Pages/Minesweeper.razor b/BlazorGames/Pages/Minesweeper.razor index 2befc68..99c87df 100644 --- a/BlazorGames/Pages/Minesweeper.razor +++ b/BlazorGames/Pages/Minesweeper.razor @@ -30,6 +30,18 @@ await _jsRuntime.InvokeVoidAsync("Prism.highlightAll"); } + + bool leftButtonPressed = false; + bool rightButtonPressed = false; + + private bool BothButtonsPressed => leftButtonPressed && rightButtonPressed; + + private void NumberPanelMouseUpHandler(int x, int y) + { + if (BothButtonsPressed) board.RevealNumberPanelNeighbors(x, y); + leftButtonPressed = false; + rightButtonPressed = false; + } } @@ -114,7 +126,7 @@ } else //Number { -
@currentPanel.AdjacentMines
+
@currentPanel.AdjacentMines
} } else if (currentPanel.IsFlagged)