internal void AddCard(CardInstance value, int qty)
        {
            if (value == null)
            {
                return;
            }
            foreach (var ci in CardsCollection.Where(ci => ci.BorderBrush != null))
            {
                ci.BorderBrush = null;
            }
            var card = CardsCollection.Where(ci => ci.CardId == value.CardId).FirstOrDefault();

            if (card != null)
            {
                card.Quantity   += qty; //if already in deck, inc qty
                card.BorderBrush = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 100, 15));
            }
            else
            {
                card             = value;
                card.BorderBrush = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 100, 15));
                card.Quantity    = qty;
                CardsCollection.Add(card);
            }
            if (LimitCardCount)
            {
                trackerFactory.GetService <IDeckService>().EnforceCardLimit(card);
            }
            HashSet <CardInstance> cards_silent = new HashSet <CardInstance>();

            new TriggerChanceUpdater(CardsCollection, cards_silent);
            DeckFileReader.UpdateGui(cards_silent, false);
        }
Exemplo n.º 2
0
        private void CheckModifiedDlls()
        {
            DeckFileReader dfr = TrackerFactory.DefaultTrackerFactory.GetTracker().dfr;

            if (dfr.NeedToModifyDlls() == false)
            {
                return;
            }

            if (MessageBox.Show("This program needs to modify your game DLLs. " +
                                "It's violates TES:L Terms of service. There are a bit risk of your account will be banned. " +
                                "If you are afraid so - use original tracker from @MarioZG.", "Modify your DLLs?", MessageBoxButton.YesNo) == MessageBoxResult.Yes)

            {
                try { if (dfr.game_src_lib != "")
                      {
                          File.Copy(".\\Resources\\TES-L-Modifided-dll\\game-src.dll", dfr.game_src_lib, true);
                      }
                      if (dfr.game_src_lib_steam != "")
                      {
                          File.Copy(".\\Resources\\TES-L-Modifided-dll-steam\\game-src.dll", dfr.game_src_lib_steam, true);
                      }
                }
                catch (IOException e) {
                    MessageBox.Show(e.Message);
                    return;
                }

                MessageBox.Show("Restart your game now.");
            }
            else
            {
                System.Diagnostics.Process.Start("https://github.com/MarioZG/elder-scrolls-legends-tracker/releases");
                ((App)Application.Current).CloseApplication();
            }
        }
Exemplo n.º 3
0
        private static async Task ProcessExternalFilesUpdate(MainWindow mainWindow)
        {
            DeckFileReader dfr = TrackerFactory.DefaultTrackerFactory.GetTracker().dfr;

            if (TrackerFactory.DefaultTrackerFactory.GetTracker().ActiveDeck != null)
            {
                HashSet <CardInstance> cards = new HashSet <CardInstance>();
                new TriggerChanceUpdater(TrackerFactory.DefaultTrackerFactory.GetTracker().
                                         ActiveDeck.SelectedVersion.Cards, cards);
                mainWindow.Dispatcher.Invoke(() => DeckFileReader.UpdateGui(cards, false));
            }
            for (;;)
            {
                HashSet <CardInstance> cards        = new HashSet <CardInstance>();
                HashSet <CardInstance> cards_silent = new HashSet <CardInstance>();
                bool reset = dfr.ReadSentFile(cards, cards_silent);
                if (cards.Count() == 0 && dfr.isGameStarted() == false)
                {
                    if (dfr.ReadDecks())
                    {
                        mainWindow.Dispatcher.Invoke(() =>
                        {
                            TrackerFactory.DefaultTrackerFactory.GetMessanger()
                            .Send(new DeckListResetFilters(), ControlMessangerContext.DeckList_DeckFilterControl);
                        });
                        TrackerFactory.DefaultTrackerFactory.GetFileManager().SaveDatabase();
                    }
                    Deck active_deck = dfr.UpdateActiveDeck();
                    if (active_deck != null)
                    {
                        mainWindow.Dispatcher.Invoke(() =>
                        {
                            TrackerFactory.DefaultTrackerFactory.GetTracker().ActiveDeck = active_deck;
                        });
                    }
                }
                bool update = dfr.UpdateHandCount();
                if (cards.Count() > 0)
                {
                    await mainWindow.Dispatcher.Invoke(async() =>
                    {
                        // Play red
                        if (reset == false)
                        {
                            DeckFileReader.UpdateGui(cards, true);
                            await Task.Delay(300);
                        }
                        else
                        {
                            dfr.CleanupActiveDeck();
                        }

                        // Stop red and update fields
                        DeckFileReader.UpdateGui(cards, false);
                        // Play silent (trigger chances)
                        DeckFileReader.UpdateGui(cards_silent, false);
                        TrackerFactory.DefaultTrackerFactory.GetTracker().UpdateActiveDeck();
                    });
                }
                else if (update)
                {
                    TrackerFactory.DefaultTrackerFactory.GetTracker().UpdateActiveDeck();
                }

                await Task.Delay(dfr.isGameStarted()? 100 : 1000);
            }
        }