Skip to content

Commit

Permalink
SelectedProfile is now saved and loaded
Browse files Browse the repository at this point in the history
  • Loading branch information
TrinityDevelopers committed Apr 22, 2020
1 parent 8a35e57 commit d760335
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 22 deletions.
2 changes: 1 addition & 1 deletion ZenovaLauncher/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ public void AppStart(object sender, StartupEventArgs e)
Task loadTask = Task.Run(async () =>
{
await AccountManager.instance.AddAccounts();
Preferences.LoadPreferences(DataDirectory);
await VersionManager.instance.LoadMinecraftVersions();
ProfileManager.instance.AddProfiles();
Preferences.LoadPreferences(DataDirectory);
});
loadTask.Wait();
Trace.WriteLine("AppStart Finished");
Expand Down
2 changes: 1 addition & 1 deletion ZenovaLauncher/Pages/PlayPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@
HorizontalContentAlignment="Left"
Background="Transparent"
BorderThickness="0"
SelectedIndex="0">
SelectedItem="{Binding SelectedProfile}">
<ComboBox.ItemTemplate>
<DataTemplate>
<ui:SimpleStackPanel Spacing="4">
Expand Down
4 changes: 3 additions & 1 deletion ZenovaLauncher/Pages/PlayPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ public partial class PlayPage : Page
public PlayPage()
{
InitializeComponent();
ProfileBox.ItemsSource = ProfileManager.instance;

DataContext = ProfileLauncher.instance;
ProfileBox.ItemsSource = ProfileManager.instance;
ProfileBox.DataContext = ProfileManager.instance;
}

private void PlayButtonClick(object sender, RoutedEventArgs e)
Expand Down
44 changes: 27 additions & 17 deletions ZenovaLauncher/Profiles/ProfileManager.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Windows;

namespace ZenovaLauncher
{
Expand Down Expand Up @@ -72,28 +74,36 @@ public void LoadProfiles()
camelCaseSerialization = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
if (File.Exists(Path.Combine(_profilesDir, _profilesFile)))
{
Dictionary<string, Profile> profileList = JsonConvert.DeserializeObject<Dictionary<string, Profile>>(File.ReadAllText(Path.Combine(_profilesDir, _profilesFile)), camelCaseSerialization);
foreach (var p in profileList)
try
{
if (p.Key == p.Value.Hash)
Dictionary<string, Profile> profileList = JsonConvert.DeserializeObject<Dictionary<string, Profile>>(File.ReadAllText(Path.Combine(_profilesDir, _profilesFile)), camelCaseSerialization);
foreach (var p in profileList)
{
switch (p.Value.Type)
if (p.Key == p.Value.Hash)
{
case Profile.ProfileType.Custom:
Add(p.Value);
break;
case Profile.ProfileType.LatestBeta:
LatestBeta = p.Value;
break;
case Profile.ProfileType.LatestRelease:
LatestRelease = p.Value;
break;
switch (p.Value.Type)
{
case Profile.ProfileType.Custom:
Add(p.Value);
break;
case Profile.ProfileType.LatestBeta:
LatestBeta = p.Value;
break;
case Profile.ProfileType.LatestRelease:
LatestRelease = p.Value;
break;
}
}
else
{
Trace.WriteLine("Failed to load profile due to incorrect hash: " + p.Key);
}
}
else
{
Trace.WriteLine("Failed to load profile due to incorrect hash: " + p.Key);
}
}
catch(Exception e)
{
Trace.WriteLine("Profile JSON Deserialize Failed: " + e.ToString());
MessageBox.Show("Profile JSON Deserialize Failed: " + e.ToString());
}
}
//}
Expand Down
22 changes: 21 additions & 1 deletion ZenovaLauncher/Utils/Preferences.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Windows;

namespace ZenovaLauncher
{
Expand All @@ -30,6 +32,11 @@ public string SelectedAccount
get { return AccountManager.instance.SelectedAccount.AccountName; }
set { AccountManager.instance.SelectedAccount = AccountManager.instance.FirstOrDefault(a => a.AccountName == value); }
}
public string SelectedProfile
{
get { return ProfileManager.instance.SelectedProfile.Hash; }
set { ProfileManager.instance.SelectedProfile = ProfileManager.instance.FirstOrDefault(p => p.Hash == value); }
}


public static void LoadPreferences(string dataDir)
Expand All @@ -38,9 +45,22 @@ public static void LoadPreferences(string dataDir)
_preferencesFile = Path.Combine(dataDir, _preferencesFile);
camelCaseSerialization = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
if (File.Exists(_preferencesFile))
instance = JsonConvert.DeserializeObject<Preferences>(File.ReadAllText(_preferencesFile), camelCaseSerialization);
{
try
{
instance = JsonConvert.DeserializeObject<Preferences>(File.ReadAllText(_preferencesFile), camelCaseSerialization);
}
catch (Exception e)
{
Trace.WriteLine("Preferences JSON Deserialize Failed: " + e.ToString());
MessageBox.Show("Preferences JSON Deserialize Failed: " + e.ToString());
}
}
else
{
instance = new Preferences();
}

Trace.WriteLine("Loaded Preferences");
}

Expand Down
2 changes: 1 addition & 1 deletion ZenovaLauncher/Utils/Utils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public static string ComputeHash(object objectToHash)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.Length; i++)
{
sb.Append(result[i].ToString("X2"));
sb.Append(result[i].ToString("x2"));
}

return sb.ToString();
Expand Down

0 comments on commit d760335

Please sign in to comment.