private void UpdateFilters()
        {
            var tanks = _allTanks.SelectMany(t => t).Select(t => t.Model);

            var anyClient = RepositoryManager.Instance.Repositories.OfType <LocalGameClient>().FirstOrDefault();

            var repositories      = RepositoryManager.Instance.Repositories.OrderBy(r => r.Version).ToArray();
            var repositoryFilters = new ComboBoxItemVM <IRepository> [repositories.Length + 1];

            repositoryFilters[0] = s_allRepositoriesVm;
            for (var i = 0; i < repositories.Length; ++i)
            {
                var repository = repositories[i];
                repositoryFilters[i + 1] = new RepositoryComboBoxItemVM(repository);
            }

            this.RepositoryFilters = repositoryFilters;
            this.RaisePropertyChanged(() => this.SelectedRepositoryFilter);

            var tiers       = tanks.Select(t => t.Tier).Distinct().OrderBy(t => t).ToArray();
            var tierFilters = new ComboBoxItemVM <int> [tiers.Length + 1];

            tierFilters[0] = s_allTiersVm;
            for (var i = 0; i < tiers.Length; ++i)
            {
                var tier = tiers[i];
                tierFilters[i + 1] = new ComboBoxItemVM <int>(tier, RomanNumberService.GetRomanNumber(tier), null);
            }
            this.TierFilters = tierFilters;
            this.RaisePropertyChanged(() => this.SelectedTierFilter);

            var classKeys    = tanks.Select(t => t.ClassKey).Distinct().OrderBy(TankClassComparer.GetClassSortIndex).ToArray();
            var classFilters = new ComboBoxItemVM <string> [classKeys.Length + 1];

            classFilters[0] = s_allClassesVm;
            for (var i = 0; i < classKeys.Length; ++i)
            {
                var classKey = classKeys[i];
                classFilters[i + 1] = new ComboBoxItemVM <string>(classKey,
                                                                  this.GetCompositeLocalization(r => r.GetLocalizedClassName(classKey)),
                                                                  anyClient == null ? null : anyClient.PackageImages.GetClassSmallIcon(classKey));
            }
            this.ClassFilters = classFilters;
            this.RaisePropertyChanged(() => this.SelectedClassFilter);

            var nations       = tanks.Select(t => t.NationKey).Distinct().OrderBy(n => n).ToArray();
            var nationFilters = new ComboBoxItemVM <string> [nations.Length + 1];

            nationFilters[0] = s_allNationsVm;
            for (var i = 0; i < nations.Length; ++i)
            {
                var @nation = nations[i];
                nationFilters[i + 1] = new ComboBoxItemVM <string>(@nation,
                                                                   this.GetCompositeLocalization(r => r.GetLocalizedNationName(@nation)),
                                                                   anyClient == null ? null : anyClient.PackageImages.GetNationSmallIcon(@nation));
            }
            this.NationFilters = nationFilters;
            this.RaisePropertyChanged(() => this.SelectedNationFilter);
        }
 private void ResetFilters()
 {
     _isInitializingFilters        = true;
     this.SelectedClassFilter      = s_allClassesVm;
     this.SelectedNationFilter     = s_allNationsVm;
     this.SelectedRepositoryFilter = s_allRepositoriesVm;
     this.SelectedPremiumFilter    = s_bothPremiumVm;
     this.SelectedTierFilter       = s_allTiersVm;
     _isInitializingFilters        = false;
     this.FilterTanks();
 }