Exemplo n.º 1
0
        public MainWindowViewModel()
        {
            hotkeyUtil = new HotkeyUtil(App.Current.MainWindow); //MainWindow should be MainWindow.xaml, per ms documentation
            OnAnonymizePlayersChanged += MainWindowViewModel_OnAnonymizePlayersChanged;
            App.Current.Exit          += Current_Exit;
            SettingsVM = new SettingsViewModel();
            SettingsVM.OnAutoEndSessionChanged += SettingsVM_OnAutoEndSessionChanged;
            OpacityVM      = new WindowOpacityVM(SettingsVM);
            RequestInputVM = new RequestUserInputViewModel("Seconds before session auto-ends");
            RequestInputVM.UserInputAccepted += RequestInputVM_UserInputAccepted;
            RequestInputVM.ValidateUserInput += RequestInputVM_ValidateUserInput;
            RequestInputVM.OnCancelled       += RequestInputVM_OnCancelled;

            UpdateDamageLogsCommand   = new RelayCommand <object>((_) => selectDamageLogsPath(true));
            ResetTrackerCommand       = new RelayCommand <object>((_) => resetParser());
            SaveSessionCommand        = new RelayCommand <object>((_) => saveSession());
            ReselectDamageLogsCommand = new RelayCommand <object>((_) => reselectDamageLogs());
            SetAccentColorCommand     = new RelayCommand <object>((_) => setAccentColor());
            SetBackgroundImageCommand = new RelayCommand <object>((_) => setBackgroundImage());
            OpenSessionLogsCommand    = new RelayCommand <object>((_) => openSessionLogsFolder());
            ExitCommand = new RelayCommand <object>((_) => App.Current.Shutdown());
            ChangeAutoEndTimeoutCommand = new RelayCommand <object>((_) => changeAutoEndTimeout());

            if (string.IsNullOrWhiteSpace(Settings.Default.DamageLogsPath))
            {
                selectDamageLogsPath(false);
            }
            loadSettings();

            if (CurrentDamageParser == null)
            {
                initializeDamageParser(Settings.Default.DamageLogsPath);
            }
            try
            {
                CurrentDamageParser.Start(TimeSpan.FromSeconds(Settings.Default.ParserTickRate));
            }
            catch (Exception)
            {
                MessageBox.Show("Error starting parser! Ensure the damagelogs folder is correctly set.");
                Settings.Default.DamageLogsPath = "";
                Settings.Default.Save();
            }

            allPlayersTab = new AllPlayersTabViewModel(this);
            allPlayersTab.UserDoubleClickedEvent += AllPlayersTab_UserDoubleClickedEvent;
            AllTabs.Add(allPlayersTab);
            SelectedTab = allPlayersTab;

            initializeHotkeys();
            StatusBarText = $"Welcome to ApexParse v{App.VersionString}";

            ClockFormat = new ClockFormatViewModel();
            UpdateClockTask();
        }
Exemplo n.º 2
0
        private void synchronizeTabState()
        {
            lock (tabManipulationLock)
            {
                if (selfPlayerTab == null && CurrentDamageParser.SelfPlayer != null)
                {
                    selfPlayerTab = new GraphPlayerTabVM(this, DetailedDamageVisibleSettings, CurrentDamageParser.SelfPlayer);
                    AllTabs.Insert(1, selfPlayerTab);
                    playerTabDict.Add(CurrentDamageParser.SelfPlayer, selfPlayerTab);
                    selfPlayerTab.SetEnabledLineSeries(LineSeriesSettings.GetEnumValue());

                    if (OpenGraphForSelfAutomatically)
                    {
                        SelectedTab = selfPlayerTab;
                    }
                }

                foreach (var player in CurrentDamageParser.Players) //add
                {
                    if (DamageParser.IsBlacklistedUsername(player.Name))
                    {
                        continue;                                                  //skip blacklisted
                    }
                    if (!playerTabDict.ContainsKey(player))
                    {
                        var newTab = new GraphPlayerTabVM(this, DetailedDamageVisibleSettings, player);
                        AllTabs.Add(newTab);
                        playerTabDict.Add(player, newTab);
                        newTab.SetEnabledLineSeries(LineSeriesSettings.GetEnumValue());
                    }
                }

                List <GraphPlayerTabVM> toRemove = new List <GraphPlayerTabVM>(); //remove
                foreach (var tab in AllTabs.Where(t => t is GraphPlayerTabVM).Cast <GraphPlayerTabVM>())
                {
                    if (!CurrentDamageParser.DoesPlayerIdExist(tab.Player.ID))
                    {
                        toRemove.Add(tab);
                    }
                }
                foreach (var rem in toRemove)
                {
                    AllTabs.Remove(rem);
                    playerTabDict.Remove(rem.Player);
                }
            }
        }
Exemplo n.º 3
0
        private void saveSession()
        {
            string   report  = CurrentDamageParser.GenerateSummary(true);
            DateTime logTime = CurrentDamageParser.LogStartTime;

            string dateString        = UtilityMethods.ReplaceInvalidCharactersInPath($"{logTime:yyyy\\-MM\\-dd}");
            string timeString        = UtilityMethods.ReplaceInvalidCharactersInPath($"{logTime:HH\\-mm\\-ss tt}");
            string destinationFolder = Path.Combine("Saved Sessions", dateString);
            string reportPath        = Path.Combine(destinationFolder, $"ApexParse-{dateString}_{timeString}.txt");

            UtilityMethods.EnsureFolderExists(destinationFolder);
            File.WriteAllText(reportPath, report);
            if (SettingsVM.RenderWindow)
            {
                SaveToImagePath = Path.ChangeExtension(reportPath, "jpg");
                RenderNowRelay.Execute(); //lmao
            }

            StatusBarText += $" | Session Saved!";
            SavedSessions.Add(new SessionItemVM($"{dateString} - {timeString}", reportPath));
        }
Exemplo n.º 4
0
 private void resetParser()
 {
     CurrentDamageParser.Reset();
     StatusBarText = "Waiting...";
     resetAllTabs();
 }
Exemplo n.º 5
0
        private void DamageTypesSettings_HideSettingsChanged(object sender, EventArgs e)
        {
            var newSetting = DamageTypesSettings.GetHiddenTrackersEnum();

            CurrentDamageParser.SetTrackersToHide(newSetting);
        }
Exemplo n.º 6
0
        private void DamageTypesSettings_SplitSettingsChanged(object sender, EventArgs e)
        {
            var newSetting = DamageTypesSettings.GetSeparatedTrackersEnum(true);

            CurrentDamageParser.SetTrackersToSumInTotalDamage(newSetting);
        }
Exemplo n.º 7
0
 private void MainWindowViewModel_OnAnonymizePlayersChanged(object sender, EventArgs e)
 {
     CurrentDamageParser?.SetNameAnonimization(AnonymizePlayers);
 }