diff --git a/AODamageMeter.UI/AODamageMeter.UI.csproj b/AODamageMeter.UI/AODamageMeter.UI.csproj
index 03fc1ec..341021f 100644
--- a/AODamageMeter.UI/AODamageMeter.UI.csproj
+++ b/AODamageMeter.UI/AODamageMeter.UI.csproj
@@ -90,6 +90,7 @@
+
diff --git a/AODamageMeter.UI/App.config b/AODamageMeter.UI/App.config
index 973fa99..d3ccd76 100644
--- a/AODamageMeter.UI/App.config
+++ b/AODamageMeter.UI/App.config
@@ -118,6 +118,18 @@
True
+
+
+
+
+
+
+ RubiKa
+
+
+ 100
+
diff --git a/AODamageMeter.UI/App.xaml b/AODamageMeter.UI/App.xaml
index d0b8c58..b6f81c7 100644
--- a/AODamageMeter.UI/App.xaml
+++ b/AODamageMeter.UI/App.xaml
@@ -16,6 +16,7 @@
+
#73CBD3
diff --git a/AODamageMeter.UI/Converters/DimensionNameConverter.cs b/AODamageMeter.UI/Converters/DimensionNameConverter.cs
new file mode 100644
index 0000000..49430ee
--- /dev/null
+++ b/AODamageMeter.UI/Converters/DimensionNameConverter.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Globalization;
+using System.Windows.Data;
+
+namespace AODamageMeter.UI.Converters
+{
+ [ValueConversion(typeof(Dimension), typeof(string))]
+ public class DimensionNameConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ => ((Dimension)value).GetName();
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ => DimensionHelpers.GetDimensionOrDefault((string)value);
+ }
+}
diff --git a/AODamageMeter.UI/Properties/AssemblyInfo.cs b/AODamageMeter.UI/Properties/AssemblyInfo.cs
index a4a15a7..5f6e53e 100644
--- a/AODamageMeter.UI/Properties/AssemblyInfo.cs
+++ b/AODamageMeter.UI/Properties/AssemblyInfo.cs
@@ -15,5 +15,5 @@
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
-[assembly: AssemblyVersion("1.4.0.0")]
-[assembly: AssemblyFileVersion("1.4.0.0")]
+[assembly: AssemblyVersion("1.4.1.0")]
+[assembly: AssemblyFileVersion("1.4.1.0")]
diff --git a/AODamageMeter.UI/Properties/Settings.Designer.cs b/AODamageMeter.UI/Properties/Settings.Designer.cs
index 12ba9b6..3b1948b 100644
--- a/AODamageMeter.UI/Properties/Settings.Designer.cs
+++ b/AODamageMeter.UI/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace AODamageMeter.UI.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -421,5 +421,42 @@ public bool UpgradeRequired {
this["UpgradeRequired"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("\r\n")]
+ public global::System.Collections.Specialized.StringCollection Dimensions {
+ get {
+ return ((global::System.Collections.Specialized.StringCollection)(this["Dimensions"]));
+ }
+ set {
+ this["Dimensions"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("RubiKa")]
+ public global::AODamageMeter.Dimension SelectedDimension {
+ get {
+ return ((global::AODamageMeter.Dimension)(this["SelectedDimension"]));
+ }
+ set {
+ this["SelectedDimension"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("100")]
+ public double DimensionColumnWidth {
+ get {
+ return ((double)(this["DimensionColumnWidth"]));
+ }
+ set {
+ this["DimensionColumnWidth"] = value;
+ }
+ }
}
}
diff --git a/AODamageMeter.UI/Properties/Settings.settings b/AODamageMeter.UI/Properties/Settings.settings
index 5d1ae10..852aa89 100644
--- a/AODamageMeter.UI/Properties/Settings.settings
+++ b/AODamageMeter.UI/Properties/Settings.settings
@@ -104,5 +104,15 @@
True
+
+ <?xml version="1.0" encoding="utf-16"?>
+<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
+
+
+ RubiKa
+
+
+ 100
+
\ No newline at end of file
diff --git a/AODamageMeter.UI/ViewModels/CharacterInfoViewModel.cs b/AODamageMeter.UI/ViewModels/CharacterInfoViewModel.cs
index cdbdf89..7f56175 100644
--- a/AODamageMeter.UI/ViewModels/CharacterInfoViewModel.cs
+++ b/AODamageMeter.UI/ViewModels/CharacterInfoViewModel.cs
@@ -15,10 +15,11 @@ public sealed class CharacterInfoViewModel : ViewModelBase
private CharacterSelectionViewModel _characterSelectionViewModel;
public CharacterInfoViewModel(CharacterSelectionViewModel characterSelectionViewModel,
- string characterName = null, string logFilePath = null)
+ string characterName = null, Dimension dimension = Dimension.RubiKa, string logFilePath = null)
{
_characterSelectionViewModel = characterSelectionViewModel;
CharacterName = characterName;
+ Dimension = dimension;
LogFilePath = logFilePath;
AutoConfigureCommand = new RelayCommand(ExecuteAutoConfigureCommand);
}
@@ -37,6 +38,23 @@ public string CharacterName
}
}
+ public static IReadOnlyList Dimensions { get; } = DimensionHelpers.AllDimensions
+ .Select(d => d.GetName())
+ .ToArray();
+
+ private Dimension _dimension;
+ public Dimension Dimension
+ {
+ get => _dimension;
+ set
+ {
+ if (Set(ref _dimension, value))
+ {
+ AutoConfigureResult = null;
+ }
+ }
+ }
+
private string _logFilePath;
public string LogFilePath
{
@@ -120,7 +138,7 @@ private void ExecuteAutoConfigureCommand()
return;
}
- var characterAndBioRetriever = Character.GetOrCreateCharacterAndBioRetriever(CharacterName);
+ var characterAndBioRetriever = Character.GetOrCreateCharacterAndBioRetriever(CharacterName, Dimension);
var character = characterAndBioRetriever.character;
characterAndBioRetriever.bioRetriever.Wait(); // Not worth using await and binding IsEnableds.
if (!character.HasPlayerInfo)
diff --git a/AODamageMeter.UI/ViewModels/CharacterSelectionViewModel.cs b/AODamageMeter.UI/ViewModels/CharacterSelectionViewModel.cs
index 6e8614f..0d9a7ef 100644
--- a/AODamageMeter.UI/ViewModels/CharacterSelectionViewModel.cs
+++ b/AODamageMeter.UI/ViewModels/CharacterSelectionViewModel.cs
@@ -79,25 +79,35 @@ private void TryClearFile()
private void Load()
{
var characterNames = Settings.Default.CharacterNames.Cast().ToArray();
+ var dimensions = Settings.Default.Dimensions.Cast().ToArray();
var logFilePaths = Settings.Default.LogFilePaths.Cast().ToArray();
for (int i = 0; i < characterNames.Length; ++i)
{
- CharacterInfoViewModels.Add(new CharacterInfoViewModel(this, characterNames[i], logFilePaths[i]));
+ CharacterInfoViewModels.Add(new CharacterInfoViewModel(this,
+ characterNames[i],
+ DimensionHelpers.GetDimensionOrDefault(dimensions.ElementAtOrDefault(i)),
+ logFilePaths[i]));
}
string selectedCharacterName = Settings.Default.SelectedCharacterName;
+ Dimension selectedDimension = Settings.Default.SelectedDimension;
string selectedLogFilePath = Settings.Default.SelectedLogFilePath;
SelectedCharacterInfoViewModel = CharacterInfoViewModels
- .FirstOrDefault(c => c.CharacterName == selectedCharacterName && c.LogFilePath == selectedLogFilePath);
+ .FirstOrDefault(c => c.CharacterName == selectedCharacterName
+ && c.Dimension == selectedDimension
+ && c.LogFilePath == selectedLogFilePath);
}
public void Save()
{
Settings.Default.CharacterNames.Clear();
Settings.Default.CharacterNames.AddRange(CharacterInfoViewModels.Select(c => c.CharacterName).ToArray());
+ Settings.Default.Dimensions.Clear();
+ Settings.Default.Dimensions.AddRange(CharacterInfoViewModels.Select(c => DimensionHelpers.GetName(c.Dimension)).ToArray());
Settings.Default.LogFilePaths.Clear();
Settings.Default.LogFilePaths.AddRange(CharacterInfoViewModels.Select(c => c.LogFilePath).ToArray());
Settings.Default.SelectedCharacterName = SelectedCharacterInfoViewModel?.CharacterName;
+ Settings.Default.SelectedDimension = SelectedCharacterInfoViewModel?.Dimension ?? Dimension.RubiKa;
Settings.Default.SelectedLogFilePath = SelectedCharacterInfoViewModel?.LogFilePath;
Settings.Default.Save();
}
diff --git a/AODamageMeter.UI/ViewModels/DamageMeterViewModel.cs b/AODamageMeter.UI/ViewModels/DamageMeterViewModel.cs
index 3d9818d..bf5697b 100644
--- a/AODamageMeter.UI/ViewModels/DamageMeterViewModel.cs
+++ b/AODamageMeter.UI/ViewModels/DamageMeterViewModel.cs
@@ -15,6 +15,7 @@ public sealed class DamageMeterViewModel : ViewModelBase
{
private readonly IProgress