示例#1
0
        public static void LoadDecks()
        {
            Console.Write("Loading decks... ");

            try
            {
                DirectoryInfo directoryInfo = new DirectoryInfo(Json.JsonLocation);
                var           decks         = directoryInfo.GetFiles("*.json", SearchOption.AllDirectories);

                foreach (FileInfo deck in decks)
                {
                    string   deckName = Path.GetFileNameWithoutExtension(deck.Name);
                    CardDeck cardDeck = Json.Load <CardDeck>(deckName);
                    cardDeck.Name = deckName;

                    Decks.Add(cardDeck);
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Empty deck!");
                return;
            }

            Decks.First().Include = true;

            Console.WriteLine("Done!");
        }
示例#2
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);
        }
示例#3
0
        public override async Task Update()
        {
            IsLoadingDecks = true;
            Note           = _repository.GetGameNote()?.ToString();
            var deck = _repository.GetOpponentDeck();

            Cards.Clear();
            deck.Cards.ForEach(c => Cards.Add(c));
            PlayerClass = deck.Class.ToString();

            Decks.Clear();
            await Task.Run(() =>
            {
                var alldecks = _repository
                               .GetAllDecksWithTag(Strings.ArchetypeTag)
                               .Select(d => new ArchetypeDeck(d))
                               .ToList();
                var results = ViewModelHelper.MatchArchetypes(deck, alldecks);
                results.ForEach(r => Decks.Add(r));
                results.ForEach(r => _log.Info($"{r.Deck.Name} [{r.Similarity}, {r.Containment}]"));

                var firstDeck = Decks.FirstOrDefault();
                if (firstDeck != null && firstDeck.Similarity > MatchResult.THRESHOLD)
                {
                    DeckSelected(firstDeck);
                }

                IsLoadingDecks = false;
                IsNoteFocused  = true;
            });
        }
示例#4
0
        public void SetResetDeck()
        {
            Decks.Clear();
            for (int j = 0; j < NumOfDecks; j++)
            {
                //Generate cards for deck that are numbers
                for (int i = 2; i < 11; i++)
                {
                    for (int NumofSuits = 1; NumofSuits < 5; NumofSuits++)
                    {
                        Decks.Add(i.ToString());
                    }
                }

                //Generate Face cards
                string[] FaceCards = { "J", "Q", "K", "A" };
                for (int i = 0; i < (FaceCards.Length); i++)
                {
                    for (int NumofSuits = 1; NumofSuits < 5; NumofSuits++)
                    {
                        Decks.Add(FaceCards[i]);
                    }
                }
            }
        }
示例#5
0
 private void UpdateDecks(List <DeckInformation> listDeck)
 {
     Decks.Clear();
     foreach (var deck in listDeck)
     {
         Decks.Add(deck);
     }
 }
示例#6
0
 public CNetDeckVO AddDeck(CNetDeckVO deck)
 {
     deck.Index = CNetDeckVO.NewIndex();
     lock (Decks)
     {
         Decks.Add(deck);
     }
     return(deck);
 }
示例#7
0
        private void AddNewDeckAndCardCount(DeckDueNode deck)
        {
            Decks.Add(new DeckInformation(deck.NewCount, deck.LearnCount + deck.ReviewCount, deck.DeckId));

            if (!Collection.Deck.HasParent(deck.DeckId))
            {
                AddCardsCountToTotal(deck.NewCount, deck.LearnCount + deck.ReviewCount);
            }
        }
示例#8
0
 public SelectDeckPopupModel()
 {
     DeckDatabase = new DeckDB();
     Decks        = DeckDatabase.GetDecks();
     for (var i = 0; i < 2; i++)
     {
         Decks.Add(Decks[i]);
     }
     for (var i = 0; i < 5; i++)
     {
         Decks.Add(Decks[i]);
     }
     DeckSettings = new Command(NavToDeckSettings);
 }
示例#9
0
        public async Task DeckInitializing()
        {
            var oldDeckList = await DeckDataSource.GetDecksAsync();

            Decks.Clear();
            foreach (var deck in oldDeckList)
            {
                foreach (var item in deck.items)
                {
                    FindCardImage(item.card);
                }
            }
            oldDeckList.ForEach(p => Decks.Add(p));
        }
示例#10
0
        public override async Task Update()
        {
            IsNoteFocused  = true;
            IsLoadingDecks = true;
            Note           = _repository.GetGameNote()?.ToString();

            Deck deck;

            if (EndGame.Settings.Get(Strings.DeveloperMode).Bool)
            {
                deck = _repository.GetOpponentDeckLive();
            }
            else
            {
                deck = _repository.GetOpponentDeck();
            }

            Cards.Clear();
            deck.Cards.ForEach(c => Cards.Add(c));
            PlayerClass = deck.Class.ToString();

            Decks.Clear();
            if (Cards.Count <= 0)
            {
                EndGame.Logger.Debug("NoteVM: Opponent deck is empty, skipping");
                IsLoadingDecks = false;
                return;
            }
            await Task.Run(() =>
            {
                var alldecks = _repository
                               .GetAllDecksWithTag(Strings.ArchetypeTag)
                               .Select(d => new ArchetypeDeck(d))
                               .ToList();
                var format  = EndGame.Data.GetGameFormat();
                var results = ViewModelHelper.MatchArchetypes(format, deck, alldecks);
                results.ForEach(r => Decks.Add(r));
                results.ForEach(r => _log.Debug($"Archetype: ({r.Similarity}, {r.Containment}) " +
                                                $"{r.Deck.DisplayName} ({r.Deck.Class})"));

                var firstDeck = Decks.FirstOrDefault();
                if (firstDeck != null && firstDeck.Similarity > MatchResult.THRESHOLD)
                {
                    DeckSelected(firstDeck);
                }

                IsLoadingDecks = false;
            });
        }
示例#11
0
        internal void UpdateObservableDeckList(List <SharedDeckInfo> deckList)
        {
            lock (this)
            {
                Decks.Clear();

                foreach (var g in deckList.GroupBy(x => x.GameId))
                {
                    var dg = new SharedDeckGroup(g.Key, IsMe);
                    Decks.Add(dg);
                    foreach (var d in g)
                    {
                        dg.Decks.Add(new SharedDeckInfoWithOwner(d, IsMe));
                    }
                }
            }
        }
示例#12
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);
        }
示例#13
0
    /*
     *  @name       CreateDecks()
     *  @purpose    Hard code deck IDs to a list then creates a deck and adds it to deck list with an id associated with it
     */
    public void CreateDecks()
    {
        //  adds individual deck IDs to list
        DeckIds.Add("D001");
        DeckIds.Add("D002");
        DeckIds.Add("D003");
        DeckIds.Add("D004");

        //  for each deckID in list DeckIds
        foreach (string id in DeckIds)
        {
            //  create a new deck
            Deck deck = new Deck();
            //  set new deck ID to id in list
            deck.DeckId = id;
            //  add newly created deck to Deck list
            Decks.Add(deck);
        }
    }
        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;
        }
示例#15
0
        private void Update()
        {
            Note = _repository.GetGameNote()?.ToString();

            var deck = _repository.GetOpponentDeck();

            Cards.Clear();
            deck.Cards.ForEach(c => Cards.Add(c));
            PlayerClass = deck.Klass.ToString();

            Decks.Clear();
            var alldecks = _repository.GetAllArchetypeDecks();
            var results  = ViewModelHelper.MatchArchetypes(deck, alldecks);

            results.ForEach(r => Decks.Add(r));
            results.ForEach(r => _log.Info($"{r.Deck.Name} [{r.Similarity}, {r.Containment}]"));

            var firstDeck = Decks.FirstOrDefault();

            if (firstDeck != null && firstDeck.Similarity > MatchResult.THRESHOLD)
            {
                DeckSelected(firstDeck);
            }
        }
示例#16
0
 public HongYan()
 {
     Decks.Add(DeckType.Hand);
     Decks.Add(DeckType.JudgeResult);
 }
示例#17
0
 public WuShen()
 {
     Decks.Add(DeckType.Hand);
     Triggers.Add(Sha.PlayerShaTargetValidation, new WuShenShaTrigger());
 }
示例#18
0
 public static void AddDeck()
 {
     Decks.Add(new CardDeck());
 }
示例#19
0
 public void AddDeck(Deck deck)
 {
     db.SaveDeck(deck);
     Decks.Add(deck);
 }
示例#20
0
        private void AddNewDeckAndCardCount(long did, string name)
        {
            DeckCardCount count = AddNewDeckCardCount(did);

            Decks.Add(new DeckInformation(name, count.New, count.Due, did, Collection.Deck.IsDyn(did)));
        }
示例#21
0
 public void AddNewDeck(string name, string fraction, List <string> stringCards, List <ICardData> cards) =>
 Decks.Add(new DeckData(name, fraction, stringCards, cards));
示例#22
0
文件: JinJiu.cs 项目: kradchen/sgs
 public JinJiu()
 {
     Decks.Add(DeckType.Hand);
 }