private float GetScoreMod()
        {
            float scoreMod  = 1f;
            int   wDelayIdx = Choices.Find(c => c.Name == "waveDelay").SelectedValueIdx;

            switch (wDelayIdx)
            {
            case 0:
                scoreMod += 0.4f;
                break;

            case 1:
                scoreMod += 0.2f;
                break;

            case 2:
                // Do nothing
                break;

            case 3:
                scoreMod -= 0.2f;
                break;

            case 4:
                scoreMod -= 0.4f;
                break;

            default:
                throw new CaseStatementMissingException();
            }

            ePlaneType planeType = (ePlaneType)GetChoiceByName("playerShip").SelectedValueIdx;

            switch (planeType)
            {
            case ePlaneType.Normal:
                // Do nothing
                scoreMod += 0.05f;
                break;

            case ePlaneType.Dmg:
                scoreMod -= 0.1f;
                break;

            case ePlaneType.Regen:
                scoreMod -= 0.1f;
                break;

            case ePlaneType.Speed:
                scoreMod -= 0.05f;
                break;

            case ePlaneType.Tough:
                scoreMod -= 0.1f;
                break;

            default:
                throw new CaseStatementMissingException();
            }

            eDropRateMod dropRateMod = (eDropRateMod)Enum.Parse(typeof(eDropRateMod), GetChoiceValue("dropRate"));

            switch (dropRateMod)
            {
            case eDropRateMod.None:
                scoreMod += 0.4f;
                break;

            case eDropRateMod.Low:
                scoreMod += 0.2f;
                break;

            case eDropRateMod.Normal:
                // Do nothing
                break;

            case eDropRateMod.High:
                scoreMod -= 0.2f;
                break;

            default:
                throw new CaseStatementMissingException();
            }

            if (scoreMod < 0.1f)
            {
                scoreMod = 0.1f;
            }

            return(scoreMod);
        }
        void GameOptions_SelectChoice(ScrollChoice choice)
        {
            switch (choice.Name)
            {
            case "play":
                // Music
                string levelMusic;
                if (GetChoiceValue("music") == "Random")
                {
                    levelMusic = "level0" + Maths.RandomNr(1, 3).ToString();
                }
                else
                {
                    switch (GetChoiceValue("music"))
                    {
                    case "Techno1":
                        levelMusic = "level01";
                        break;

                    case "Airship":
                        levelMusic = "level02";
                        break;

                    case "Poss":
                        levelMusic = "level03";
                        break;

                    default:
                        throw new CaseStatementMissingException();
                    }
                }

                eDropRateMod dropRateMod = (eDropRateMod)Enum.Parse(typeof(eDropRateMod), GetChoiceValue("dropRate"));

                // Create level
                new Level(int.Parse(GetChoiceValue("startWave")), (int)dropRateMod, int.Parse(GetChoiceValue("waveDelay")) * 1000, GetChoiceByName("area").SelectedValueIdx + 1, ScoreModifier, levelMusic, (ePlaneType)GetChoiceByName("playerShip").SelectedValueIdx, GetChoiceByName("playerShip").SelectedValue);

                // set state
                Engine.Instance.ActiveState = Level.Instance;
                break;

            case "playerShip":
                // Do nothing
                break;

            case "startWave":
                // Do nothing
                break;

            case "area":
                // Do nothing
                break;

            case "waveDelay":
                // Do nothing
                break;

            case "music":
                // Do nothing
                break;

            case "back":
                Engine.Instance.ActiveState = new MainMenu(false);
                break;

            default:
                throw new CaseStatementMissingException();
            }
        }