Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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;
        }