Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        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;
        }
Beispiel #5
0
        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]);
            }
        }
Beispiel #6
0
 public void Insert(int index, Deck deck)
 {
     Decks.Insert(index, deck);
     save();
 }