private static DeckClassifier.DeckDefinition ClassifyDeck(Deck deck) { var attrs = new DeckClassifier.DeckAttributes { GameType = deck.GameType.ToString(), Colors = deck.Colors?.GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count()), Cards = deck.Cards.GroupBy(c => c).ToDictionary(g => ArchetypeManager.IdToName.ContainsKey(g.Key) ? ArchetypeManager.IdToName[g.Key] : g.Key, g => g.Count()), Words = deck.Cards.SelectMany(c => ArchetypeManager.IdToWords.ContainsKey(c) ? ArchetypeManager.IdToWords[c] : Enumerable.Empty <string>()).GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count()) }; return(DeckClassifier.ClassifyDeck(attrs)); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); if (e.Args.Contains("--debug")) { Logger.DebugMode = true; } AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler; mutex = new Mutex(true, "Local\\DeckTracker", out bool isNew); if (!isNew) { MessageBox.Show("Universal Deck Tracker is already running..."); Shutdown(); } JsonConvert.DefaultSettings = () => { var settings = new JsonSerializerSettings(); settings.Converters.Add(new StringEnumConverter()); return(settings); }; Logger.Initialize(); ConfigManager.Initialize(); ReplayUploader.Initialize(); ArchetypeManager.Initialize(); try { DeckClassifier.Initialize(); } catch (Exception exception) { MessageBox.Show(exception.Message); Shutdown(); } GameMessageDispatcher.Start(); ProcessMonitor.Start(); #if !DEBUG UpdateManager.StartUpdateCheck(); #endif }