private void levelsGrid_SelectionChanged(object sender, EventArgs e) { SelectedLevel = levelsGrid.CurrentRow.Index; LevelCollection selectedLevelCollection = (LevelCollection)levelCollectionGrid.CurrentRow.DataBoundItem; _sokoban.LoadLevel(selectedLevelCollection[SelectedLevel]); _cellSize = levelPreview.Width / Math.Max(_sokoban.Width, _sokoban.Height); _paddingX = (levelPreview.Width - (_sokoban.Width * _cellSize)) / 2; _paddingY = (levelPreview.Height - (_sokoban.Height * _cellSize)) / 2; levelPreview.Invalidate(); }
private void GoToLevel(int levelNumber) { _sokoban.LoadLevel(_levelCollection[levelNumber]); _currentLevel = levelNumber; drawingArea.Width = _levelCollection[levelNumber].Width * _cellSize; drawingArea.Height = _levelCollection[levelNumber].Height * _cellSize; // some code to resize the form to fit the level size, and also to center the level in the form int formNewWidth = drawingArea.Width > _defaultBackgroundPanelWidth ? _defaultFormWidth + drawingArea.Width - _defaultBackgroundPanelWidth + 10 : _defaultFormWidth; int formNewHeight = drawingArea.Height > _defaultBackgroundPanelHeight ? _defaultFormHeight + drawingArea.Height - _defaultBackgroundPanelHeight + 10 : _defaultFormHeight; Size = new Size(formNewWidth, formNewHeight); //CenterToScreen(); int x = backgroundPanel.Size.Width / 2 - drawingArea.Size.Width / 2; int y = backgroundPanel.Size.Height / 2 - drawingArea.Size.Height / 2; drawingArea.Location = new Point(x, y); _isLevelComplete = false; statusLabel.Text = "Playing"; levelCollectionLabel.Text = _levelCollection.Title; levelLabel.Text = string.Format("{0} of {1}", _currentLevel + 1, _levelCollection.NumberOfLevels); restartMenuItem.Enabled = true; restartButton.Enabled = true; undoMenuItem.Enabled = false; undoButton.Enabled = false; drawingArea.Invalidate(); drawingArea.Visible = true; }