private void UnbanHero(Hero hero)
        {
            if (hero == null)
            {
                return;
            }
            bool removed = false;

            for (int i = 0; i < Bans.Count; i++)
            {
                if (Bans[i] == hero)
                {
                    Bans.RemoveAt(i);
                    removed = true;
                    break;
                }
            }
            if (!removed)
            {
                return;
            }
            AvailableAllies.Add(new HeroSelectionViewModel(hero));
            AvailableEnemies.Add(new HeroSelectionViewModel(hero));
            Refresh();
        }
        public void UnselectEnemyHero(Hero hero)
        {
            if (hero == null)
            {
                return;
            }
            bool removed = false;

            for (int i = 0; i < PickedEnemies.Count; i++)
            {
                if (PickedEnemies[i].Hero == hero)
                {
                    PickedEnemies.RemoveAt(i);
                    removed = true;
                    break;
                }
            }
            if (!removed)
            {
                return;
            }
            AvailableAllies.Add(new HeroSelectionViewModel(hero));
            AvailableEnemies.Add(new HeroSelectionViewModel(hero));
            Refresh();
        }
 private void BanHero(Hero hero)
 {
     if (hero == null)
     {
         return;
     }
     if (PickedAllies.Any(h => h.Hero == hero) ||
         PickedEnemies.Any(h => h.Hero == hero) ||
         Bans.Any(h => h == hero))
     {
         return;
     }
     for (int i = 0; i < AvailableAllies.Count; i++)
     {
         if (AvailableAllies[i].Hero == hero)
         {
             AvailableAllies.RemoveAt(i);
             break;
         }
     }
     for (int i = 0; i < AvailableEnemies.Count; i++)
     {
         if (AvailableEnemies[i].Hero == hero)
         {
             AvailableEnemies.RemoveAt(i);
             break;
         }
     }
     Bans.Add(hero);
 }
 private void ReInit()
 {
     AvailableAllies.Clear();
     AvailableEnemies.Clear();
     PickedAllies.Clear();
     PickedEnemies.Clear();
     Bans.Clear();
     if (_stats == null)
     {
         AvailableMaps = Array.Empty <Map>();
         SelectedMap   = null;
         TheoWinRate   = null;
         return;
     }
     AvailableMaps = new [] { new Map(-1, "") }.Concat(_stats.Maps.Values).ToList();
     foreach (var hero in _stats.Heroes.Values)
     {
         AvailableAllies.Add(new HeroSelectionViewModel(hero));
         AvailableEnemies.Add(new HeroSelectionViewModel(hero));
     }
     Refresh();
 }