/// <summary> /// Sort a sub-deck into its parent /// </summary> /// <param name="parent"></param> /// <param name="child"></param> private void SortIntoSubdeck(DeckInformation parent, DeckInformation child) { int currentIndex = decks.IndexOf(child); int parentIndex = decks.IndexOf(parent); //No need to do anything if it's already next to its parent if (currentIndex == parentIndex + 1) { return; } Decks.Remove(child); int childLevel = child.ChildLevel; parentIndex = decks.IndexOf(parent); for (int i = parentIndex + 1; i < decks.Count; i++) { int level = decks[i].ChildLevel; if (level > childLevel) { continue; } if ((level < childLevel) || (Compare(child, decks[i]) < 0)) { Decks.Insert(i, child); return; } } Decks.Add(child); }
/// <summary> /// Re-Sort a non-subdeck /// </summary> /// <param name="deck"></param> public void ResortNonSubdeck(DeckInformation deck) { Decks.Remove(deck); for (int i = 0; i < decks.Count; i++) { if (decks[i].Name.Contains(Constant.SUBDECK_SEPERATE)) { continue; } if (Compare(deck, decks[i]) < 0) { Decks.Insert(i, deck); return; } } Decks.Add(deck); }
private void LoadGameResult(GameResultModel game) { EnsureInitialized(); SelectedGame = game; Hero = game.Hero; OpponentHero = game.OpponentHero; StartTime = game.Started; EndTime = game.Stopped; Victory = game.Victory; GoFirst = game.GoFirst; GameMode = game.GameMode; // force notify even if not changed NotifyOfPropertyChange(() => GameMode); Notes = game.Notes; Turns = game.Turns; ArenaSession = game.ArenaSession; LastGameId = game.Id; Conceded = game.Conceded; SelectedServer = servers.FirstOrDefault(x => x.Name == game.Server); if (game.Deck != null) { if (game.Deck.Deleted && Decks.All(x => x.Id != game.Deck.Id)) { var model = game.Deck.ToModel(); model.Name += " (deleted)"; Decks.Insert(0, model); } SelectedDeck = Decks.FirstOrDefault(x => x.Id == game.Deck.Id); } NotifyOfPropertyChange(() => CanSaveAsNew); //Execute.OnUIThread( // () => // { // var v = (UIElement)this.GetView(); // Panel.SetZIndex(v, 10); // }); }
public async Task FilterDecks(GameMode mode, GameFormat format) { Decks.Clear(); var allDecks = await GetAllDecks(); allDecks.Where(d => { var include = true; switch (mode) { case GameMode.ALL: include = include && true; break; case GameMode.ARENA: include = include && d.IsArena; break; default: include = include && !d.IsArena; break; } switch (format) { case GameFormat.ANY: include = include && true; break; case GameFormat.STANDARD: include = include && d.IsStandard; break; case GameFormat.WILD: include = include && !d.IsStandard; break; } return(include); }) .OrderBy(d => d.Name) .ToList() .ForEach(d => Decks.Add(d)); Decks.Insert(0, ALL_DECK); Decks.Insert(1, Deck.None); SelectedDeck = ALL_DECK; }
private void UpdateChildrenPositionAndName(DeckInformation parent, SubDecks children) { if (children.Desks.Count == 0) { return; } var newStartIndex = decks.IndexOf(parent) + 1; for (int i = 0; i < children.Desks.Count; i++) { //No need to update children of a child //as they will be aslo updated in this for loop UpdateDeckName(children.Desks[i], false); if (parent.IsShowChildren) { children.Desks[i].IsShowChildren = true; children.Desks[i].Visibility = Visibility.Visible; } Decks.Insert(newStartIndex + i, children.Desks[i]); } }
public void Insert(int index, Deck deck) { Decks.Insert(index, deck); save(); }