Profile loading works good now. Will need to add GUI options for exporting and importing, but still works decent.

This commit is contained in:
jrhodnik 2019-05-27 20:09:37 -04:00
parent 44d99724b1
commit 43fed6839d
9 changed files with 73 additions and 20 deletions

View File

@ -1,8 +1,10 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
@ -33,6 +35,7 @@ namespace VRDash
{
Logger.Setup();
this.GetLogger().Info("VDash is starting up...");
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
InitializeComponent();
//Connect to VR runtime...
@ -63,6 +66,34 @@ namespace VRDash
}
};
try
{
if (File.Exists(ProfileManager.ConfigLocation))
{
var profile = ProfileManager.LoadProfile();
LoadProfile(profile);
this.GetLogger().Info($"Default profile loaded. {profile.OverlayConfigs.Count()} overlays loaded from disk.");
}
}
catch(Exception ex)
{
this.GetLogger().Error($"Unable to load profile from disk. Profile location: {ProfileManager.ConfigLocation}", ex);
MessageBox.Show($"There was an error while trying to load the default profile: {ex.Message}.", "Error Loading Default Profile", MessageBoxButton.OK, MessageBoxImage.Error);
}
Task saveTask = Task.Factory.StartNew(() =>
{
//Update profile on disk every ten seconds. Shitty way of doing things, but it is what it is.
while (true)
{
if (!ProfileManager.IsProfileSaveUpToDate())
{
ProfileManager.SaveProfile();
this.GetLogger().Info("Updated profile saved to disk.");
}
Thread.Sleep(10000);
}
});
#region Debug
@ -92,6 +123,11 @@ namespace VRDash
#endregion
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
this.GetLogger().Fatal("Unhandled AppDomain exception.", (Exception)e.ExceptionObject);
}
private void LoadProfile(Profile profile)
{
//Dispose of all overlays and clear list.

View File

@ -35,7 +35,7 @@ namespace VRDash.Overlay.Actions
if (!Enabled) { return; }
if (!intOverlay.GetType().IsAssignableFrom(typeof(WindowOverlay)))
{
Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
//Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
return;
}

View File

@ -18,7 +18,7 @@ namespace VRDash.Overlay.Actions
if (!Enabled) { return; }
if (!intOverlay.GetType().IsAssignableFrom(typeof(WindowOverlay)))
{
Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
//Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
return;
}

View File

@ -17,7 +17,7 @@ namespace VRDash.Overlay.Actions
if (!Enabled) { return; }
if (!intOverlay.GetType().IsAssignableFrom(typeof(WindowOverlay)))
{
Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
//Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
return;
}

View File

@ -28,7 +28,7 @@ namespace VRDash.Overlay.Actions
if (!Enabled) { return; }
if (!intOverlay.GetType().IsAssignableFrom(typeof(WindowOverlay)))
{
Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
//Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
return;
}

View File

@ -17,7 +17,7 @@ namespace VRDash.Overlay.Actions
if (!Enabled) { return; }
if (!intOverlay.GetType().IsAssignableFrom(typeof(WindowOverlay)))
{
Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
//Console.WriteLine("This action cannot be performed on a non-WindowOverlay overlay.");
return;
}

View File

@ -206,7 +206,7 @@ namespace VRDash.Overlay
if (!succ)
{
Console.WriteLine("SetCursorPos failed.");
this.GetLogger().Warn($"[{Config.Name}] SetCursorPos failed.");
}
break;
@ -381,13 +381,13 @@ namespace VRDash.Overlay
}
else
{
Console.WriteLine("Error getting coords to draw cursor.");
this.GetLogger().Warn($"[{Config.Name}] Error getting coords to draw cursor.");
}
}
else
{
string errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message;
Console.WriteLine($"Error getting cursor info: {errorMessage}");
this.GetLogger().Warn($"[{Config.Name}] Error getting cursor info: {errorMessage}");
}
#endregion
@ -428,7 +428,7 @@ namespace VRDash.Overlay
HmdVector2_t vecWindowSize = new HmdVector2_t() { v0 = data.Width, v1 = data.Height };
OpenVR.Overlay.SetOverlayMouseScale(m_OverlayHandle, ref vecWindowSize);
Console.WriteLine("Updated!");
this.GetLogger().Info($"[{Config.Name}] Monitor resized, texture updated.");
}
@ -488,7 +488,7 @@ namespace VRDash.Overlay
if (result != EVROverlayError.None)
{
Console.WriteLine($"Error rendering: {result}");
this.GetLogger().Warn($"Error rendering: {result}");
}
device.ImmediateContext.UnmapSubresource(screenTexture, 0);

View File

@ -168,7 +168,7 @@ namespace VRDash.Overlay
if (IsCreated())
{
destroyInternal();
Console.WriteLine($"Destroyed {Config.Key} because it's window does not exist.");
this.GetLogger().Info($"Destroyed {Config.Key} because it's window does not exist.");
}
Thread.Sleep(100);
@ -265,7 +265,7 @@ namespace VRDash.Overlay
if (!succ)
{
Console.WriteLine("ClientToScreen failed.");
this.GetLogger().Warn($"[{Config.Name}] ClientToScreen failed.");
}
@ -273,7 +273,7 @@ namespace VRDash.Overlay
if (!succ)
{
Console.WriteLine("SetCursorPos failed.");
this.GetLogger().Warn($"[{Config.Name}] SetCursorPos failed.");
}
}
break;
@ -460,13 +460,13 @@ namespace VRDash.Overlay
}
else
{
Console.WriteLine("Error getting coords to draw cursor.");
this.GetLogger().Warn($"[{Config.Name}] Error getting coords to draw cursor.");
}
}
else
{
string errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message;
Console.WriteLine($"Error getting cursor info: {errorMessage}");
this.GetLogger().Warn($"[{Config.Name}] Error getting cursor info: {errorMessage}");
}
#endregion
@ -507,7 +507,7 @@ namespace VRDash.Overlay
HmdVector2_t vecWindowSize = new HmdVector2_t() { v0 = data.Width, v1 = data.Height };
OpenVR.Overlay.SetOverlayMouseScale(m_OverlayHandle, ref vecWindowSize);
Console.WriteLine("Updated!");
this.GetLogger().Info($"[{Config.Name}] Window resized, texture updated.");
}
@ -567,7 +567,7 @@ namespace VRDash.Overlay
if (result != EVROverlayError.None)
{
Console.WriteLine($"Error rendering: {result}");
this.GetLogger().Warn($"[{Config.Name}] Error rendering: {result}");
}
device.ImmediateContext.UnmapSubresource(screenTexture, 0);

View File

@ -36,14 +36,31 @@ namespace VRDash
SaveProfile(ConfigLocation);
}
public string GetLoadedProfileJson()
{
IOverlayConfig[] selection = MainWindow.OverlayManager.Overlays.Select(x => x.Overlay.OverlayConfig).ToArray();
var profile = new Profile(selection);
var json = JsonConvert.SerializeObject(profile, m_Settings);
return json;
}
public string GetDefaultProfileJson()
{
var json = File.ReadAllText(ConfigLocation);
return json;
}
public bool IsProfileSaveUpToDate()
{
return GetLoadedProfileJson() == GetDefaultProfileJson();
}
/// <summary>
/// Saves config to ConfigLocation
/// </summary>
public void SaveProfile(string location)
{
IOverlayConfig[] selection = MainWindow.OverlayManager.Overlays.Select(x => x.Overlay.OverlayConfig).ToArray();
var profile = new Profile(selection);
var json = JsonConvert.SerializeObject(profile, m_Settings);
var json = GetLoadedProfileJson();
File.WriteAllText(location, json);
}