public PlayersSelectViewModel(string label, IEnumerable <int> humans, RangeViewModel minMax)
        {
            Label  = label;
            Humans = new OptionInputViewModel <int>(humans.ToArray());
            MinMax = minMax;

            RefreshForHumanPlayers = ReactiveCommand.Create((OptionInputItem <int> item) =>
            {
                OptionInputViewModel <int> minInput = MinMax.MinInput;
                foreach (var minItem in minInput.Items)
                {
                    minItem.IsEnabled = minItem.Item >= item.Item;
                }
                if (!minInput.SelectedItem.IsEnabled)
                {
                    minInput.SelectedItem = minInput.Items.Where(x => x.IsEnabled).First();
                }
            });

            RefreshForRaces = ReactiveCommand.Create((IEnumerable <DowRace> races) =>
            {
                Races = new ProportionalOptionsViewModel <DowRace>("Races", race => race.Name, races.ToArray());
            });

            this.WhenAnyValue(x => x.Humans.SelectedItem)
            .DistinctUntilChanged()
            .InvokeCommand(RefreshForHumanPlayers);
        }
 public GameTabViewModel()
 {
     DiffOption = new ProportionalOptionsViewModel <GameDifficulty>("Difficulty", GameDifficultyEx.ToString,
                                                                    Enum.GetValues(typeof(GameDifficulty)).Cast <GameDifficulty>().ToArray());
     SpeedOption = new ProportionalOptionsViewModel <GameSpeed>("Game Speed", GameSpeedEx.ToString,
                                                                Enum.GetValues(typeof(GameSpeed)).Cast <GameSpeed>().ToArray());
     RateOption = new ProportionalOptionsViewModel <GameResourceRate>("Resource Rate", GameResourceRateEx.ToString,
                                                                      Enum.GetValues(typeof(GameResourceRate)).Cast <GameResourceRate>().ToArray());
     StartingOption = new ProportionalOptionsViewModel <GameStartResource>("Starting Resources", GameStartResourceEx.ToString,
                                                                           Enum.GetValues(typeof(GameStartResource)).Cast <GameStartResource>().ToArray());
 }