private void optionStateChanging(RandomizationOption obj)
 {
     if (obj.MutualExclusiveSet != null && obj.OptionIsSelected)
     {
         var allOptions = RandomizationGroups.SelectMany(x => x.Options).Where(x => x.MutualExclusiveSet == obj.MutualExclusiveSet);
         foreach (var option in allOptions)
         {
             if (option != obj)
             {
                 option.OptionIsSelected = false; // turn off other options
             }
         }
     }
 }
        private async void InternalStartRandomization()
        {
            if (!MERUtilities.IsGameRunning(MERFileSystem.Game))
            {
                ShowProgressPanel = true;
                var randomizer = new Randomizer(this);

                AllowOptionsChanging = false;

                var op = new OptionsPackage()
                {
                    Seed            = int.Parse(SeedTextBox.Text),
                    SelectedOptions = RandomizationGroups.SelectMany(x => x.Options.Where(x => x.OptionIsSelected)).ToList(),
                    UseMultiThread  = UseMultiThreadRNG,
                    Reroll          = PerformReroll
                };
                randomizer.Randomize(op);
            }
            else
            {
                await this.ShowMessageAsync("Mass Effect 2 is running", "Cannot randomize the game while Mass Effect 2 is running. Please close the game and try again.");
            }
        }