diff --git a/src/Artemis.ConsoleUI/packages.lock.json b/src/Artemis.ConsoleUI/packages.lock.json index 54fea5121..f88410446 100644 --- a/src/Artemis.ConsoleUI/packages.lock.json +++ b/src/Artemis.ConsoleUI/packages.lock.json @@ -206,23 +206,23 @@ }, "RGB.NET.Core": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "RGB.NET.Layout": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "RGB.NET.Presets": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { @@ -1244,9 +1244,9 @@ "Ninject": "3.3.4", "Ninject.Extensions.ChildKernel": "3.3.0", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", - "RGB.NET.Layout": "1.0.0-prerelease1", - "RGB.NET.Presets": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", + "RGB.NET.Layout": "1.0.0-prerelease7", + "RGB.NET.Presets": "1.0.0-prerelease7", "Serilog": "2.10.0", "Serilog.Sinks.Console": "4.0.0", "Serilog.Sinks.Debug": "2.0.0", diff --git a/src/Artemis.Core/Artemis.Core.csproj b/src/Artemis.Core/Artemis.Core.csproj index e80f308ce..4a860799e 100644 --- a/src/Artemis.Core/Artemis.Core.csproj +++ b/src/Artemis.Core/Artemis.Core.csproj @@ -47,9 +47,9 @@ - - - + + + diff --git a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs index 1fa950b3c..8c6dc49db 100644 --- a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs +++ b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs @@ -349,24 +349,7 @@ namespace Artemis.Core return mappedLed; return artemisLed; } - - /// - /// Generates the default layout file name of the device - /// - /// If true, the .xml extension is added to the file name - /// The resulting file name e.g. CORSAIR GLAIVE.xml or K95 RGB-ISO.xml - public string GetLayoutFileName(bool includeExtension = true) - { - // Take out invalid file name chars, may not be perfect but neither are you - string fileName = System.IO.Path.GetInvalidFileNameChars().Aggregate(RgbDevice.DeviceInfo.Model, (current, c) => current.Replace(c, '-')); - if (RgbDevice.DeviceInfo.DeviceType == RGBDeviceType.Keyboard) - fileName = $"{fileName}-{PhysicalLayout.ToString().ToUpper()}"; - if (includeExtension) - fileName = $"{fileName}.xml"; - - return fileName; - } - + /// /// Occurs when the underlying RGB.NET device was updated /// diff --git a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs index fc540ff96..abb2e1ea3 100644 --- a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs +++ b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Linq; using Ninject; using RGB.NET.Core; using Serilog; @@ -75,7 +76,7 @@ namespace Artemis.Core.DeviceProviders layoutDir, device.RgbDevice.DeviceInfo.Manufacturer, device.DeviceType.ToString(), - device.GetLayoutFileName() + GetDeviceLayoutName(device) ); return new ArtemisLayout(filePath, LayoutSource.Plugin); } @@ -92,7 +93,7 @@ namespace Artemis.Core.DeviceProviders layoutDir, device.RgbDevice.DeviceInfo.Manufacturer, device.DeviceType.ToString(), - device.GetLayoutFileName() + GetDeviceLayoutName(device) ); return new ArtemisLayout(filePath, LayoutSource.User); } @@ -108,5 +109,20 @@ namespace Artemis.Core.DeviceProviders { throw new NotImplementedException("Device provider does not support detecting logical layouts (don't call base.GetLogicalLayout())"); } + + /// + /// Called when determining which file name to use when loading the layout of the specified . + /// + /// The device to determine the layout file name for. + /// A file name, including an extension + public virtual string GetDeviceLayoutName(ArtemisDevice device) + { + // Take out invalid file name chars, may not be perfect but neither are you + string fileName = Path.GetInvalidFileNameChars().Aggregate(device.RgbDevice.DeviceInfo.Model, (current, c) => current.Replace(c, '-')); + if (device.RgbDevice.DeviceInfo.DeviceType == RGBDeviceType.Keyboard) + fileName = $"{fileName}-{device.PhysicalLayout.ToString().ToUpper()}"; + + return fileName + ".xml"; + } } } \ No newline at end of file diff --git a/src/Artemis.Core/Utilities/Easings.cs b/src/Artemis.Core/Utilities/Easings.cs index 3bffa45ed..5bcc4cb90 100644 --- a/src/Artemis.Core/Utilities/Easings.cs +++ b/src/Artemis.Core/Utilities/Easings.cs @@ -54,6 +54,7 @@ namespace Artemis.Core case Functions.BounceEaseIn: return BounceEaseIn(p); case Functions.BounceEaseOut: return BounceEaseOut(p); case Functions.BounceEaseInOut: return BounceEaseInOut(p); + case Functions.Step: return Step (p); } } @@ -358,6 +359,13 @@ namespace Artemis.Core return 0.5 * BounceEaseOut(p * 2 - 1) + 0.5; } + /// + /// An snappy animation that moves instantly to the next destination on the next keyframe + /// + public static double Step (double p) { + return Math.Floor (p); + } + /// /// Easing Functions enumeration /// @@ -393,7 +401,8 @@ namespace Artemis.Core BackEaseInOut, BounceEaseIn, BounceEaseOut, - BounceEaseInOut + BounceEaseInOut, + Step } } } \ No newline at end of file diff --git a/src/Artemis.Core/packages.lock.json b/src/Artemis.Core/packages.lock.json index d6d49560e..6461c9b8c 100644 --- a/src/Artemis.Core/packages.lock.json +++ b/src/Artemis.Core/packages.lock.json @@ -75,26 +75,26 @@ }, "RGB.NET.Core": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "RGB.NET.Layout": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "RGB.NET.Presets": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "Serilog": { diff --git a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj index 253095749..c6849d64f 100644 --- a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj +++ b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj @@ -39,7 +39,7 @@ - + diff --git a/src/Artemis.UI.Shared/packages.lock.json b/src/Artemis.UI.Shared/packages.lock.json index ae3665203..d31dcf1f7 100644 --- a/src/Artemis.UI.Shared/packages.lock.json +++ b/src/Artemis.UI.Shared/packages.lock.json @@ -54,9 +54,9 @@ }, "RGB.NET.Core": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "SharpVectors.Reloaded": { "type": "Direct", @@ -272,18 +272,18 @@ }, "RGB.NET.Layout": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "RGB.NET.Presets": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { @@ -1325,9 +1325,9 @@ "Ninject": "3.3.4", "Ninject.Extensions.ChildKernel": "3.3.0", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", - "RGB.NET.Layout": "1.0.0-prerelease1", - "RGB.NET.Presets": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", + "RGB.NET.Layout": "1.0.0-prerelease7", + "RGB.NET.Presets": "1.0.0-prerelease7", "Serilog": "2.10.0", "Serilog.Sinks.Console": "4.0.0", "Serilog.Sinks.Debug": "2.0.0", diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj index da33f5fcb..1bb9d0780 100644 --- a/src/Artemis.UI/Artemis.UI.csproj +++ b/src/Artemis.UI/Artemis.UI.csproj @@ -145,8 +145,8 @@ - - + + diff --git a/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs b/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs index 97f47d8c7..19ee3a135 100644 --- a/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs +++ b/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs @@ -213,7 +213,8 @@ namespace Artemis.UI.Screens.Settings.Device Device.RgbDevice.DeviceInfo.Manufacturer, Device.DeviceType.ToString() ); - string filePath = Path.Combine(directory, Device.GetLayoutFileName()); + + string filePath = Path.Combine(directory, Device.DeviceProvider.GetDeviceLayoutName(Device)); Core.Utilities.CreateAccessibleDirectory(directory); // XML diff --git a/src/Artemis.UI/packages.lock.json b/src/Artemis.UI/packages.lock.json index c28d978da..34aad11eb 100644 --- a/src/Artemis.UI/packages.lock.json +++ b/src/Artemis.UI/packages.lock.json @@ -124,17 +124,17 @@ }, "RGB.NET.Core": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "RGB.NET.Layout": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "Serilog": { @@ -394,10 +394,10 @@ }, "RGB.NET.Presets": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { @@ -1454,9 +1454,9 @@ "Ninject": "3.3.4", "Ninject.Extensions.ChildKernel": "3.3.0", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", - "RGB.NET.Layout": "1.0.0-prerelease1", - "RGB.NET.Presets": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", + "RGB.NET.Layout": "1.0.0-prerelease7", + "RGB.NET.Presets": "1.0.0-prerelease7", "Serilog": "2.10.0", "Serilog.Sinks.Console": "4.0.0", "Serilog.Sinks.Debug": "2.0.0", @@ -1486,7 +1486,7 @@ "Microsoft.Xaml.Behaviors.Wpf": "1.1.31", "Ninject": "3.3.4", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", "SharpVectors.Reloaded": "1.7.5", "SkiaSharp": "2.80.3", "SkiaSharp.Views.WPF": "2.80.3",