Ejemplo n.º 1
0
		private void ParseCombatLog()
		{
			var filePicker = new OpenFileDialog
			{
				Filter = "Text files (*.txt)|*.txt",
				Multiselect = true
			};

			if (filePicker.ShowDialog() == true)
			{
				var combats = new List<Combat>();

				Mouse.OverrideCursor = Cursors.Wait;
				foreach (var filePath in filePicker.FileNames)
				{
					try
					{
						combats.AddRange(CombatLog.Load(filePath).Combats);
					}
					catch (Exception e)
					{
						MessageBox.Show($"Error parsing combat log: {e.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
					}
				}
				Mouse.OverrideCursor = null;

				if (combats.Count == 0)
				{
					MessageBox.Show("File doesn't contain any combat.", "Parse combat log", MessageBoxButton.OK, MessageBoxImage.Information);
					return;
				}

				try
				{
					var sessions = combats.Where(c => c.Duration > 120 || c.Targets.Max(t => t.DamageDone > 1000000)).Select(c => c.ToSession(_profile.DefaultValues)).ToList();

					if (sessions.Count == 0)
					{
						MessageBox.Show("File doesn't contain any suitable combat session (duration >= 120s and/or damage >= 1 000 000).", "Parse combat log", MessageBoxButton.OK, MessageBoxImage.Information);
						return;
					}

					HasUnsavedChanges = true;

					foreach (var session in sessions)
					{
						_profile.Sessions.Add(session);
						var sessionViewModel = new SessionViewModel(session, _profile.Configuration, _profile.DefaultValues); 
						sessionViewModel.SessionUpdated += () =>
						{
							ConfigurationViewModel.CorrectionViewModel.IsOutdated = true;
							UpdateDps();
						};
						SessionViewModels.Add(sessionViewModel);
					}
					if (ActiveSessionViewModel == null)
						ActiveSessionViewModel = SessionViewModels.FirstOrDefault();
				}
				catch (Exception e)
				{
					MessageBox.Show($"Error parsing combat log: {e.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
				}
			}
		}
Ejemplo n.º 2
0
		private void LoadProfile(Profile profile)
		{
			if (profile == null)
				throw new Exception("Profile is null (most likely file is corrupted).");

			_profile = profile;

			if (ConfigurationViewModel != null)
			{
				ConfigurationViewModel.ConfigurationUpdated -= OnConfigurationChanged;
				foreach (var sessionViewModel in SessionViewModels)
					sessionViewModel.SessionUpdated -= OnConfigurationChanged;
			}

			ConfigurationViewModel = new ConfigurationViewModel(profile.Configuration);
			ConfigurationViewModel.ConfigurationUpdated += OnConfigurationChanged;

			SessionViewModels.Clear();
			foreach (var session in profile.Sessions)
			{
				var sessionViewModel = new SessionViewModel(session, profile.Configuration, profile.DefaultValues);
				sessionViewModel.SessionUpdated += OnConfigurationChanged;
				SessionViewModels.Add(sessionViewModel);
			}

			ActiveSessionViewModel = SessionViewModels.FirstOrDefault(s => s.Active) ?? SessionViewModels.First();

			NewDps = new ValueCorrectionViewModel(ValueType.Double);
			HasUnsavedChanges = false;
		}