diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index 67a903f4e..542b424c5 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -196,7 +196,7 @@ True - ..\packages\NLog.4.3.3\lib\net45\NLog.dll + ..\packages\NLog.4.3.4\lib\net45\NLog.dll True @@ -283,7 +283,7 @@ - + diff --git a/Artemis/Artemis/DAL/ProfileProvider.cs b/Artemis/Artemis/DAL/ProfileProvider.cs index df35270f5..da672dd5f 100644 --- a/Artemis/Artemis/DAL/ProfileProvider.cs +++ b/Artemis/Artemis/DAL/ProfileProvider.cs @@ -96,5 +96,24 @@ namespace Artemis.DAL Directory.CreateDirectory(ProfileFolder); Debug.WriteLine("Place presets"); } + + public static ProfileModel LoadProfileIfValid(string path) + { + try + { + var deserializer = new XmlSerializer(typeof(ProfileModel)); + using (var file = new StreamReader(path)) + { + var prof = (ProfileModel) deserializer.Deserialize(file); + if (!(prof.GameName?.Length > 1) || !(prof.KeyboardName?.Length > 1) || !(prof.Name?.Length > 1)) + return null; + return prof; + } + } + catch (InvalidOperationException) + { + return null; + } + } } } \ No newline at end of file diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsiarHeadsets.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairHeadsets.cs similarity index 95% rename from Artemis/Artemis/DeviceProviders/Corsair/CorsiarHeadsets.cs rename to Artemis/Artemis/DeviceProviders/Corsair/CorsairHeadsets.cs index 120d8945d..e52bfc626 100644 --- a/Artemis/Artemis/DeviceProviders/Corsair/CorsiarHeadsets.cs +++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairHeadsets.cs @@ -33,7 +33,7 @@ namespace Artemis.DeviceProviders.Corsair public override void Disable() { if (CueSDK.ProtocolDetails != null) - CueSDK.Reinitialize(); + CueSDK.Reinitialize(true); } public override void UpdateDevice(Brush brush) @@ -72,7 +72,7 @@ namespace Artemis.DeviceProviders.Corsair try { if (CueSDK.ProtocolDetails == null) - CueSDK.Initialize(); + CueSDK.Initialize(true); else return true; } @@ -87,7 +87,7 @@ namespace Artemis.DeviceProviders.Corsair } catch (WrapperException) { - CueSDK.Reinitialize(); + CueSDK.Reinitialize(true); return true; } diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairMice.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairMice.cs index 55fc2be6d..3f272988e 100644 --- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairMice.cs +++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairMice.cs @@ -33,7 +33,7 @@ namespace Artemis.DeviceProviders.Corsair public override void Disable() { if (CueSDK.ProtocolDetails != null) - CueSDK.Reinitialize(); + CueSDK.Reinitialize(true); } public override void UpdateDevice(Brush brush) @@ -73,7 +73,7 @@ namespace Artemis.DeviceProviders.Corsair try { if (CueSDK.ProtocolDetails == null) - CueSDK.Initialize(); + CueSDK.Initialize(true); else return true; } @@ -88,7 +88,7 @@ namespace Artemis.DeviceProviders.Corsair } catch (WrapperException) { - CueSDK.Reinitialize(); + CueSDK.Reinitialize(true); return true; } diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairRGB.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairRGB.cs index 025c4f7c8..8c27d6a6e 100644 --- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairRGB.cs +++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairRGB.cs @@ -33,7 +33,7 @@ namespace Artemis.DeviceProviders.Corsair try { if (CueSDK.ProtocolDetails == null) - CueSDK.Initialize(); + CueSDK.Initialize(true); } catch (CUEException e) { @@ -46,7 +46,7 @@ namespace Artemis.DeviceProviders.Corsair } catch (WrapperException) { - CueSDK.Reinitialize(); + CueSDK.Reinitialize(true); return true; } @@ -93,7 +93,7 @@ namespace Artemis.DeviceProviders.Corsair public override void Disable() { if (CueSDK.ProtocolDetails != null) - CueSDK.Reinitialize(); + CueSDK.Reinitialize(true); } /// diff --git a/Artemis/Artemis/Models/Profiles/LayerConditionModel.cs b/Artemis/Artemis/Models/Profiles/LayerConditionModel.cs index 35ed776cc..f1480d999 100644 --- a/Artemis/Artemis/Models/Profiles/LayerConditionModel.cs +++ b/Artemis/Artemis/Models/Profiles/LayerConditionModel.cs @@ -23,9 +23,13 @@ namespace Artemis.Models.Profiles // Put the subject in a list, allowing Dynamic Linq to be used. var subjectList = new List {(T) subject}; - var res = Type == "String" - ? subjectList.Where($"{Field}.ToLower() {Operator} @0", Value.ToLower()).Any() - : subjectList.Where($"{Field} {Operator} {Value}").Any(); + bool res; + if (Type == "String") + res = subjectList.Where($"{Field}.ToLower() {Operator} @0", Value.ToLower()).Any(); + else if (Type == "Enum") + res = subjectList.Where($"{Field} {Operator} \"{Value}\"").Any(); + else + res = subjectList.Where($"{Field} {Operator} {Value}").Any(); return res; } } diff --git a/Artemis/Artemis/Models/Profiles/LayerModel.cs b/Artemis/Artemis/Models/Profiles/LayerModel.cs index 149dd7819..f6e6b1ad6 100644 --- a/Artemis/Artemis/Models/Profiles/LayerModel.cs +++ b/Artemis/Artemis/Models/Profiles/LayerModel.cs @@ -166,12 +166,12 @@ namespace Artemis.Models.Profiles return Enabled && (LayerType == LayerType.Keyboard || LayerType == LayerType.KeyboardGif); } - public IEnumerable GetAllLayers() + public IEnumerable GetAllLayers(bool ignoreEnabled) { var layers = new List(); foreach (var layerModel in Children) { - if (!layerModel.Enabled) + if (ignoreEnabled && !layerModel.Enabled) continue; layers.Add(layerModel); layers.AddRange(layerModel.Children); diff --git a/Artemis/Artemis/Models/Profiles/ProfileModel.cs b/Artemis/Artemis/Models/Profiles/ProfileModel.cs index 578aa6e10..43de4b4e9 100644 --- a/Artemis/Artemis/Models/Profiles/ProfileModel.cs +++ b/Artemis/Artemis/Models/Profiles/ProfileModel.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Diagnostics; using System.Drawing; using System.Linq; using System.Windows; @@ -11,6 +10,8 @@ using Artemis.Utilities; using Artemis.Utilities.ParentChild; using Brush = System.Windows.Media.Brush; using Color = System.Windows.Media.Color; +using Point = System.Windows.Point; +using Size = System.Windows.Size; namespace Artemis.Models.Profiles { @@ -137,18 +138,38 @@ namespace Artemis.Models.Profiles /// /// Gives all the layers and their children in a flat list /// - public List GetEnabledLayers() + public List GetLayers(bool ignoreEnabled = true) { var layers = new List(); foreach (var layerModel in Layers) { - if (!layerModel.Enabled) + if (ignoreEnabled && !layerModel.Enabled) + { continue; + } layers.Add(layerModel); - layers.AddRange(layerModel.GetAllLayers()); + layers.AddRange(layerModel.GetAllLayers(ignoreEnabled)); } - + return layers; } + + public void FixBoundaries(Rect keyboardRectangle) + { + foreach (var layer in GetLayers(false)) + { + if (layer.LayerType != LayerType.Keyboard && layer.LayerType != LayerType.KeyboardGif) + continue; + + var props = (KeyboardPropertiesModel) layer.Properties; + var layerRect = new Rect(new Point(props.X, props.Y), new Size(props.Width, props.Height)); + if (keyboardRectangle.Contains(layerRect)) + continue; + + props.X = 0; + props.Y = 0; + layer.Properties = props; + } + } } } \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionView.xaml b/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionView.xaml index dcef1f75d..4e60f4d04 100644 --- a/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionView.xaml +++ b/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionView.xaml @@ -15,16 +15,17 @@ - + - + + @@ -36,10 +37,11 @@ - - Note: For this game to work with Artemis, please open up your Division settings, navigate to 3rd Party and set LED keyboard support to Yes. (This only works if you have Artemis running before starting the game) + Note: For this game to work with Artemis, please open up your Division settings, navigate to 3rd Party + and set LED keyboard support to Yes. (This only works if you have Artemis running before starting the game) diff --git a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml index 55ece4f20..6e4b10bba 100644 --- a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml +++ b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml @@ -16,8 +16,8 @@ - + + TextWrapping="Wrap" HorizontalAlignment="Left" FontFamily="Segoe UI Semibold" TextAlignment="Justify" MaxWidth="820"> Artemis requires the latest Witcher 3 version and mod to be installed in order to work. If you don't use any (conflicting) Witcher 3 mods, the mod can automatically be installed. - - - Note: If you do use conflicting mods, we'll let you know what to do. - - - + + + + +