private void OnSolveMaze()

in Games/Maze/GamePage.xaml.cs [336:364]


        private void OnSolveMaze(object sender, RoutedEventArgs e)
        {
            if (_cellCreationTimer.IsEnabled || _openCellTimer.IsEnabled || _interactionPaused)
            {
                return;
            }

            if (_isMazeSolved)
            {
                //Reset to resolve
                ClearSolution();
                AnimateMazeRunnerVisualToCell(0, 0, TravelSpeed.Jump, 0);
                _mazeRunnerVisual.IsVisible = true;
                _mazeRunnerVisual.Opacity = 1;
                Border endBorder = MazeGrid.Children.Cast<FrameworkElement>().First(b => Grid.GetRow(b) == _numRows - 1 && Grid.GetColumn(b) == _numCols - 1) as Border;
                Button endButton = endBorder.Child as Button;
                endButton.Content = _mazeEnd;
                _curRow = 0;
                _curCol = 0;
                Border curBorder = MazeGrid.Children.Cast<FrameworkElement>().First(b => Grid.GetRow(b) == _curRow && Grid.GetColumn(b) == _curCol) as Border;
                _curButton = curBorder.Child as Button;
                _isMazeSolved = false;
            }
            var solver = MazeCreator.Solver.Create();
            _solution = solver.Solve(_maze, new Position(_curRow, _curCol), new Position(_numRows - 1, _numCols - 1));
            _usedSolver = true;
            _solutionCurIndex = 0;
            _solutionTimer.Start();
        }