public bool RevealButton(Button btn) { //find plate MinePlate plate = MinePlates. FirstOrDefault(predicate: x => Equals(objA: x.BtnButton as Button, objB: btn)); if (plate == null) { throw new NullReferenceException(message: "Plate not found"); } if (plate != null && !plate.IsRevealed && !plate.IsFlagged) { if (plate.IsMined) { SetButtonVisuals(stat: MineStatEnum.IsBombed, btn: btn, plate: plate); RevealAll(); } else if (plate.IntDisplay > 0) { SetButtonVisuals(stat: MineStatEnum.IsNumbered, btn: btn, plate: plate); } else { SetButtonVisuals(stat: MineStatEnum.IsPlane, btn: btn, plate: plate); List <MinePlate> neighbours = GetNeighboursList(plate: plate); foreach (MinePlate neighbour in neighbours) { Button button = neighbour.BtnButton as Button; RevealButton(btn: button); } } } return(CheckGameEndingConditions()); }
public bool MarkButton(Button btn) { //find plate MinePlate plate = MinePlates. FirstOrDefault(predicate: x => Equals(objA: x.BtnButton as Button, objB: btn)); if (plate == null) { throw new NullReferenceException(); } if (plate.IsFlagged) { btn.Background = Brushes.DodgerBlue; plate.IsFlagged = false; MinesLeft++; } else if (MinesLeft > 0) { btn.Background = Brushes.BlueViolet; plate.IsFlagged = true; MinesLeft--; } return(CheckGameEndingConditions()); }