public static void initPowerupDuration(gamePowerup powerup)
        {
            gameController gamecontroller = new gameController();
            gamePowerup    _powerup       = powerup;

            switch (_powerup)
            {
            case gamePowerup.X2:
                PowerupDurationX2 = gamecontroller.ConvTime(gameConstants.standardPowerupDurationX2, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.PointOnTick:
                PowerupDurationPointTick = gamecontroller.ConvTime(gameConstants.standardPowerupDurationPointTick, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.Slowmotion:
                PowerupDurationSlowmo = gamecontroller.ConvTime(gameConstants.standardPowerupDurationSlowmotion, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.Noclip:
                PowerupDurationNoclip = gamecontroller.ConvTime(gameConstants.standardPowerupDurationNoclip, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.X2PointOnTick:
                PowerupDurationX2PointTick = gamecontroller.ConvTime(gameConstants.standardPowerupDurationX2PointTick, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.X2Slowmotion:
                PowerupDurationX2Slowmo = gamecontroller.ConvTime(gameConstants.standardPowerupDurationX2Slowmotion, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.X2Noclip:
                PowerupDurationX2Noclip = gamecontroller.ConvTime(gameConstants.standardPowerupDurationX2Noclip, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.PointOnTickSlowmotion:
                PowerupDurationPointTickSlowmo = gamecontroller.ConvTime(gameConstants.standardPowerupDurationPointTickSlowmotion, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.PointOnTickNoclip:
                PowerupDurationPointTickNoclip = gamecontroller.ConvTime(gameConstants.standardPowerupDurationPointTickNoclip, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.SlowmotionNoclip:
                PowerupDurationSlowmoNoclip = gamecontroller.ConvTime(gameConstants.standardPowerupDurationSlowmotionNoclip, gameConstants.seconds, gameConstants.milliseconds);
                break;

            case gamePowerup.None:
                break;

            default:
                MessageBox.Show(
                    "Invalid gamePowerup duration tried to be initialized in \ngameSettings.initPowerupDuration procedure!\npowerup=" + _powerup,
                    "Error!",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error
                    );
                break;
            }
        }
        // Procedure to apply new settings values
        public static void ApplySettings(int newWidth, int newHeight, int newSpeed, int newGrowMultiplicator, int newPoints,
                                         int newPUpSpawnGap, int newPUpX2Duration, int newPUpPointTickDuration, int newPUpSlowmotionDuration, int newPUpNoclipDuration,
                                         int newPUpX2PointTickDuration, int newPUpX2SlowmoDuration, int newPUpX2NoclipDuration, int newPUpPointTickSlowmoDuration,
                                         int newPUpPointTickNoclipDuration, int newPUpSlowmoNoclipDuration)
        {
            gameController gamecontroller = new gameController();

            int _newPUpX2Duration              = gamecontroller.ConvTime(newPUpX2Duration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpPointTickDuration       = gamecontroller.ConvTime(newPUpPointTickDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpSlowmotionDuration      = gamecontroller.ConvTime(newPUpSlowmotionDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpNoclipDuration          = gamecontroller.ConvTime(newPUpNoclipDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpX2PointTickDuration     = gamecontroller.ConvTime(newPUpX2PointTickDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpX2SlowmoDuration        = gamecontroller.ConvTime(newPUpX2SlowmoDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpX2NoclipDuration        = gamecontroller.ConvTime(newPUpX2NoclipDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpPointTickSlowmoDuration = gamecontroller.ConvTime(newPUpPointTickSlowmoDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpPointTickNoclipDuration = gamecontroller.ConvTime(newPUpPointTickNoclipDuration, gameConstants.seconds, gameConstants.milliseconds);
            int _newPUpSlowmoNoclipDuration    = gamecontroller.ConvTime(newPUpSlowmoNoclipDuration, gameConstants.seconds, gameConstants.milliseconds);

            // Alter settings if needed
            Width = newWidth != Width
                                        ? newWidth              :  Width;
            Height = newHeight != Height
                                        ? newHeight             :  Height;
            Speed = newSpeed != Speed
                                        ? newSpeed              :  Speed;
            GrowMultiplicator = newGrowMultiplicator != GrowMultiplicator
                                        ? newGrowMultiplicator  :  GrowMultiplicator;
            Points = newPoints != Points
                                        ? newPoints             :  Points;

            // Alter powerup settings if needed
            PowerupSpawnGapConfigured = newPUpSpawnGap != PowerupSpawnGap
                                        ? newPUpSpawnGap            :  PowerupSpawnGap;
            PowerupSpawnGap = PowerupSpawnGapConfigured;

            PowerupDurationX2 = _newPUpX2Duration != PowerupDurationX2
                                            ? _newPUpX2Duration              :  PowerupDurationX2;
            PowerupDurationPointTick = _newPUpPointTickDuration != PowerupDurationPointTick
                                            ? _newPUpPointTickDuration       :  PowerupDurationPointTick;
            PowerupDurationSlowmo = _newPUpSlowmotionDuration != PowerupDurationSlowmo
                                            ? _newPUpSlowmotionDuration      :  PowerupDurationSlowmo;
            PowerupDurationNoclip = _newPUpNoclipDuration != PowerupDurationNoclip
                                            ? _newPUpNoclipDuration          :  PowerupDurationNoclip;
            PowerupDurationX2PointTick = _newPUpX2PointTickDuration != PowerupDurationNoclip
                                            ? _newPUpX2PointTickDuration     :  PowerupDurationNoclip;
            PowerupDurationX2Slowmo = _newPUpX2SlowmoDuration != PowerupDurationX2Slowmo
                                            ? _newPUpX2SlowmoDuration        :  PowerupDurationX2Slowmo;
            PowerupDurationX2Noclip = _newPUpX2NoclipDuration != PowerupDurationX2Noclip
                                            ? _newPUpX2NoclipDuration        :  PowerupDurationX2Noclip;
            PowerupDurationPointTickSlowmo = _newPUpPointTickSlowmoDuration != PowerupDurationPointTickSlowmo
                                            ? _newPUpPointTickSlowmoDuration :  PowerupDurationPointTickSlowmo;
            PowerupDurationPointTickNoclip = _newPUpPointTickNoclipDuration != PowerupDurationPointTickNoclip
                                            ? _newPUpPointTickNoclipDuration :  PowerupDurationPointTickNoclip;
            PowerupDurationSlowmoNoclip = _newPUpSlowmoNoclipDuration != PowerupDurationSlowmoNoclip
                                            ? _newPUpSlowmoNoclipDuration    :  PowerupDurationSlowmoNoclip;

            gamecontroller.writeSettingsXML();
        }
        // Set values of the 'Settings' textboxes
        private void setMenuValues()
        {
            gameController gamecontroller = new gameController();

            // Settings tab
            textBoxWidth.Text             = Convert.ToString(gameSettings.Width);
            textBoxHeight.Text            = Convert.ToString(gameSettings.Height);
            textBoxSpeed.Text             = Convert.ToString(gameSettings.Speed);
            textBoxGrowMultiplicator.Text = Convert.ToString(gameSettings.GrowMultiplicator);
            textBoxPoints.Text            = Convert.ToString(gameSettings.Points);
            // Controls tab
            textBoxUpKey.Text      = Convert.ToString(gameControls.dirUpKey);
            textBoxDownKey.Text    = Convert.ToString(gameControls.dirDownKey);
            textBoxLeftKey.Text    = Convert.ToString(gameControls.dirLeftKey);
            textBoxRightKey.Text   = Convert.ToString(gameControls.dirRightKey);
            textBoxRestartKey.Text = Convert.ToString(gameControls.modRestartKey);
            textBoxBotKey.Text     = Convert.ToString(gameControls.modBotKey);
            textBoxSpeedKey.Text   = Convert.ToString(gameControls.modSpeedKey);
            textBoxPauseKey.Text   = Convert.ToString(gameControls.modPauseKey);
            textBoxPowerupKey.Text = Convert.ToString(gameControls.modPowerupKey);
            textBoxNoClipKey.Text  = Convert.ToString(gameControls.modNoClipKey);
            // Colors tab
            labelSnakeHeadPrev.BackColor = (gameSettings.snakeHeadNormalColor as SolidBrush).Color;
            labelSnakeBodyPrev.BackColor = (gameSettings.snakeBodyNormalColor as SolidBrush).Color;
            labelFoodPrev.BackColor      = (gameSettings.foodNormalColor as SolidBrush).Color;
            switch (gameSettings.DrawingMode)
            {
            case gameConstants.gameDrawingMode.drawingModeNormal:
                radioButtongameDrawingModeNormal.Checked = true;
                break;

            case gameConstants.gameDrawingMode.drawingModeRainbow:
                radioButtongameDrawingModeRainbow.Checked = true;
                break;

            case gameConstants.gameDrawingMode.drawingModeSprite:
                radioButtongameDrawingModeSprite.Checked = true;
                break;

            default:
                break;
            }
            if (gameSettings.RainbowMode == gameConstants.rainbowMode.rainbowModeTiles)
            {
                buttonSwitchRainbowMode.Text = "Switch rainbow mode to 'Stretched'";
            }
            else if (gameSettings.RainbowMode == gameConstants.rainbowMode.rainbowModeStretched)
            {
                buttonSwitchRainbowMode.Text = "Switch rainbow mode to 'Tiles'";
            }
            // Powerups tab
            textBoxPUpSpawnGap.Text                = Convert.ToString(gameSettings.PowerupSpawnGapConfigured);
            textBoxPUpX2Duration.Text              = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationX2, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpPointTickDuration.Text       = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationPointTick, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpSlowmoDuration.Text          = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationSlowmo, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpNoclipDuration.Text          = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationNoclip, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpX2PointTickDuration.Text     = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationX2PointTick, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpX2SlowmoDuration.Text        = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationX2Slowmo, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpX2NoclipDuration.Text        = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationX2Noclip, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpPointTickSlowmoDuration.Text = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationPointTickSlowmo, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpPointTickNoclipDuration.Text = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationPointTickNoclip, gameConstants.milliseconds, gameConstants.seconds));
            textBoxPUpSlowmoNoclipDuration.Text    = Convert.ToString(gamecontroller.ConvTime(gameSettings.PowerupDurationSlowmoNoclip, gameConstants.milliseconds, gameConstants.seconds));
            labelSnakeHeadX2Prev.BackColor         = (gameSettings.snakeHeadPUpX2Color as SolidBrush).Color;
            labelSnakeBodyX2Prev.BackColor         = (gameSettings.snakeBodyPUpX2Color as SolidBrush).Color;
            labelFoodX2Prev.BackColor              = (gameSettings.foodPUpX2Color as SolidBrush).Color;
            labelSnakeHeadPointTickPrev.BackColor  = (gameSettings.snakeHeadPUpPointTickColor as SolidBrush).Color;
            labelSnakeBodyPointTickPrev.BackColor  = (gameSettings.snakeBodyPUpPointTickColor as SolidBrush).Color;
            labelFoodPointTickPrev.BackColor       = (gameSettings.foodPUpPointTickColor as SolidBrush).Color;
            labelSnakeHeadSlowmoPrev.BackColor     = (gameSettings.snakeHeadPUpSlowmoColor as SolidBrush).Color;
            labelSnakeBodySlowmoPrev.BackColor     = (gameSettings.snakeBodyPUpSlowmoColor as SolidBrush).Color;
            labelFoodSlowmoPrev.BackColor          = (gameSettings.foodPUpSlowmoColor as SolidBrush).Color;
            labelSnakeHeadNoclipPrev.BackColor     = (gameSettings.snakeHeadPUpNoclipColor as SolidBrush).Color;
            labelSnakeBodyNoclipPrev.BackColor     = (gameSettings.snakeBodyPUpNoclipColor as SolidBrush).Color;
            labelFoodNoclipPrev.BackColor          = (gameSettings.foodPUpNoclipColor as SolidBrush).Color;
            // Savefiles tab
            labelControlsXmlPath.Text = Properties.Settings.Default.controlsXmlPath;
            labelSettingsXmlPath.Text = Properties.Settings.Default.settingsXmlPath;
            labelScoreXmlPath.Text    = Properties.Settings.Default.scoreXmlPath;
            graphicstooltipSpritesPath.ReloadToolTip(labelSavefilesSpritesPath, Image.FromFile(Properties.Settings.Default.gameSpritePath));
            graphicstooltipSpritesX2Path.ReloadToolTip(labelSavefilesSpritesX2Path, Image.FromFile(Properties.Settings.Default.gameSpritePUpX2Path));
            graphicstooltipSpritesPointTickPath.ReloadToolTip(labelSavefilesSpritesPointTickPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpPointTickPath));
            graphicstooltipSpritesSlowmoPath.ReloadToolTip(labelSavefilesSpritesSlowmotionPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpSlowmotionPath));
            graphicstooltipSpritesNoclipPath.ReloadToolTip(labelSavefilesSpritesNoclipPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpNoclipPath));
            graphicstooltipSpritesX2PointTickPath.ReloadToolTip(labelSavefilesSpritesX2PointTickPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpX2PointTickPath));
            graphicstooltipSpritesX2SlowmoPath.ReloadToolTip(labelSavefilesSpritesX2SlowmotionPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpX2SlowmotionPath));
            graphicstooltipSpritesX2NoclipPath.ReloadToolTip(labelSavefilesSpritesX2NoclipPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpX2NoclipPath));
            graphicstooltipSpritesPointTickSlowmoPath.ReloadToolTip(labelSavefilesSpritesPointTickSlowmotionPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpPointTickSlowmotionPath));
            graphicstooltipSpritesPointTickNoclipPath.ReloadToolTip(labelSavefilesSpritesPointTickNoclipPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpPointTickNoclipPath));
            graphicstooltipSpritesSlowmoNoclipPath.ReloadToolTip(labelSavefilesSpritesSlowmotionNoclipPath, Image.FromFile(Properties.Settings.Default.gameSpritePUpSlowmotionNoclipPath));
            labelSavefilesSpritesPath.Text                    = Properties.Settings.Default.gameSpritePath;
            labelSavefilesSpritesPath.Tag                     = Image.FromFile(Properties.Settings.Default.gameSpritePath);
            labelSavefilesSpritesX2Path.Text                  = Properties.Settings.Default.gameSpritePUpX2Path;
            labelSavefilesSpritesX2Path.Tag                   = Image.FromFile(Properties.Settings.Default.gameSpritePUpX2Path);
            labelSavefilesSpritesPointTickPath.Text           = Properties.Settings.Default.gameSpritePUpPointTickPath;
            labelSavefilesSpritesPointTickPath.Tag            = Image.FromFile(Properties.Settings.Default.gameSpritePUpPointTickPath);
            labelSavefilesSpritesSlowmotionPath.Text          = Properties.Settings.Default.gameSpritePUpSlowmotionPath;
            labelSavefilesSpritesSlowmotionPath.Tag           = Image.FromFile(Properties.Settings.Default.gameSpritePUpSlowmotionPath);
            labelSavefilesSpritesNoclipPath.Text              = Properties.Settings.Default.gameSpritePUpNoclipPath;
            labelSavefilesSpritesNoclipPath.Tag               = Image.FromFile(Properties.Settings.Default.gameSpritePUpNoclipPath);
            labelSavefilesSpritesX2PointTickPath.Text         = Properties.Settings.Default.gameSpritePUpX2PointTickPath;
            labelSavefilesSpritesX2PointTickPath.Tag          = Image.FromFile(Properties.Settings.Default.gameSpritePUpX2PointTickPath);
            labelSavefilesSpritesX2SlowmotionPath.Text        = Properties.Settings.Default.gameSpritePUpX2SlowmotionPath;
            labelSavefilesSpritesX2SlowmotionPath.Tag         = Image.FromFile(Properties.Settings.Default.gameSpritePUpX2SlowmotionPath);
            labelSavefilesSpritesX2NoclipPath.Text            = Properties.Settings.Default.gameSpritePUpX2NoclipPath;
            labelSavefilesSpritesX2NoclipPath.Tag             = Image.FromFile(Properties.Settings.Default.gameSpritePUpX2NoclipPath);
            labelSavefilesSpritesPointTickSlowmotionPath.Text = Properties.Settings.Default.gameSpritePUpPointTickSlowmotionPath;
            labelSavefilesSpritesPointTickSlowmotionPath.Tag  = Image.FromFile(Properties.Settings.Default.gameSpritePUpPointTickSlowmotionPath);
            labelSavefilesSpritesPointTickNoclipPath.Text     = Properties.Settings.Default.gameSpritePUpPointTickNoclipPath;
            labelSavefilesSpritesPointTickNoclipPath.Tag      = Image.FromFile(Properties.Settings.Default.gameSpritePUpPointTickNoclipPath);
            labelSavefilesSpritesSlowmotionNoclipPath.Text    = Properties.Settings.Default.gameSpritePUpSlowmotionNoclipPath;
            labelSavefilesSpritesSlowmotionNoclipPath.Tag     = Image.FromFile(Properties.Settings.Default.gameSpritePUpSlowmotionNoclipPath);
        }