From c1b8d12b4a4f923b2a9149b05d10b185e1130ac4 Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Wed, 2 Mar 2016 01:29:42 +0100 Subject: [PATCH] TypeWave fix, implemented icon enabled indicator --- Artemis/Artemis/App.config | 53 +--- Artemis/Artemis/App.xaml | 2 +- Artemis/Artemis/Artemis.csproj | 28 +- .../Modules/Effects/TypeWave/TypeWaveModel.cs | 49 ++-- .../Modules/Games/Dota2/Dota2ViewModel.cs | 6 +- .../Modules/Games/Witcher3/Witcher3View.xaml | 2 +- .../VolumeDisplay/VolumeDisplayModel.cs | 10 +- .../Artemis/Properties/Resources.Designer.cs | 250 ++++++++-------- Artemis/Artemis/Properties/Resources.resx | 270 +++++++++--------- .../Artemis/{ => Resources}/logo-disabled.ico | Bin Artemis/Artemis/Resources/logo.ico | Bin 0 -> 370070 bytes Artemis/Artemis/Settings/General.Designer.cs | 2 +- Artemis/Artemis/Settings/General.settings | 2 +- .../Utilities/GameState/GameStateWebServer.cs | 21 +- .../Utilities/Keyboard/KeyboardHook.cs | 32 +-- Artemis/Artemis/Utilities/Updater.cs | 3 +- .../Artemis/ViewModels/SystemTrayViewModel.cs | 14 + Artemis/Artemis/Views/ShellView.xaml | 2 +- Artemis/Artemis/Views/SystemTrayView.xaml | 2 +- Artemis/Artemis/packages.config | 3 +- 20 files changed, 377 insertions(+), 374 deletions(-) rename Artemis/Artemis/{ => Resources}/logo-disabled.ico (100%) create mode 100644 Artemis/Artemis/Resources/logo.ico diff --git a/Artemis/Artemis/App.config b/Artemis/Artemis/App.config index 9c9c880e7..eb58324d3 100644 --- a/Artemis/Artemis/App.config +++ b/Artemis/Artemis/App.config @@ -2,44 +2,19 @@ - -
-
-
-
-
-
-
-
-
-
-
-
+ +
+
+
+
+
+
+
+
+
+
+
+
@@ -233,7 +208,7 @@ 51364 - True + False False diff --git a/Artemis/Artemis/App.xaml b/Artemis/Artemis/App.xaml index 9d7642210..110eccc23 100644 --- a/Artemis/Artemis/App.xaml +++ b/Artemis/Artemis/App.xaml @@ -17,7 +17,7 @@ + Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index 8de9fdf7b..ef47f3c4b 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -35,9 +35,13 @@ false false true + https://github.com/SpoinkyNL/Artemis/wiki/Frequently-Asked-Questions-%28FAQ%29 + Artemis + Artemis 0 1.0.2.0 false + true true true @@ -74,7 +78,7 @@ false - logo.ico + Resources\logo.ico true @@ -139,10 +143,6 @@ ..\packages\CUE.NET.1.0.2.1\lib\net45\CUE.NET.dll True - - ..\packages\MouseKeyHook.5.4.0\lib\net40\Gma.System.MouseKeyHook.dll - True - ..\packages\Hardcodet.NotifyIcon.Wpf.1.0.5\lib\net451\Hardcodet.Wpf.TaskbarNotification.dll True @@ -172,10 +172,7 @@ - - ..\packages\MahApps.Metro.1.2.4.0\lib\net45\System.Windows.Interactivity.dll - True - + @@ -189,6 +186,10 @@ ..\packages\WpfExceptionViewer.1.0.0.0\lib\VioletTape.WpfExceptionViewer.dll True + + ..\packages\VirtualInput.1.0.1\lib\net20\VirtualInput.dll + True + @@ -434,9 +435,13 @@ + + PreserveNewest + + + - SettingsSingleFileGenerator @@ -527,9 +532,6 @@ PreserveNewest - - PreserveNewest - diff --git a/Artemis/Artemis/Modules/Effects/TypeWave/TypeWaveModel.cs b/Artemis/Artemis/Modules/Effects/TypeWave/TypeWaveModel.cs index a8472f5c4..f61bd161a 100644 --- a/Artemis/Artemis/Modules/Effects/TypeWave/TypeWaveModel.cs +++ b/Artemis/Artemis/Modules/Effects/TypeWave/TypeWaveModel.cs @@ -2,7 +2,6 @@ using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; -using System.Threading.Tasks; using System.Windows.Forms; using Artemis.KeyboardProviders.Corsair; using Artemis.KeyboardProviders.Logitech.Utilities; @@ -24,14 +23,33 @@ namespace Artemis.Modules.Effects.TypeWave _randomColor = Color.Red; Settings = settings; Initialized = false; + Scale = 4; } + public int Scale { get; set; } + public TypeWaveSettings Settings { get; set; } public override void Dispose() { Initialized = false; - MainManager.KeyboardHook.Unsubscribe(HandleKeypress); + MainManager.KeyboardHook.KeyDownCallback -= KeyboardHookOnKeyDownCallback; + } + + private void KeyboardHookOnKeyDownCallback(KeyEventArgs e) + { + // More than 25 waves is pointless + if (_waves.Count >= 25) + return; + + var keyMatch = KeyMap.UsEnglishOrionKeys.FirstOrDefault(k => k.KeyCode == e.KeyCode); + if (keyMatch == null) + return; + + _waves.Add(Settings.IsRandomColors + ? new Wave(new Point(keyMatch.PosX * Scale, keyMatch.PosY * Scale), 0, _randomColor) + : new Wave(new Point(keyMatch.PosX * Scale, keyMatch.PosY * Scale), 0, + ColorHelpers.ToDrawingColor(Settings.WaveColor))); } public override void Enable() @@ -39,7 +57,7 @@ namespace Artemis.Modules.Effects.TypeWave Initialized = false; // Listener won't start unless the effect is active - MainManager.KeyboardHook.Subscribe(HandleKeypress); + MainManager.KeyboardHook.KeyDownCallback += KeyboardHookOnKeyDownCallback; Initialized = true; } @@ -54,7 +72,7 @@ namespace Artemis.Modules.Effects.TypeWave // TODO: Get from settings var fps = 25; - _waves[i].Size += Settings.SpreadSpeed; + _waves[i].Size += Settings.SpreadSpeed * Scale; if (Settings.IsShiftColors) _waves[i].Color = ColorHelpers.ShiftColor(_waves[i].Color, Settings.ShiftColorSpeed); @@ -78,7 +96,7 @@ namespace Artemis.Modules.Effects.TypeWave if (_waves.Count == 0) return null; - var bitmap = MainManager.KeyboardManager.ActiveKeyboard.KeyboardBitmap(); + var bitmap = MainManager.KeyboardManager.ActiveKeyboard.KeyboardBitmap(Scale); using (var g = Graphics.FromImage(bitmap)) { g.Clear(Color.Transparent); @@ -116,27 +134,6 @@ namespace Artemis.Modules.Effects.TypeWave } return bitmap; } - - private void HandleKeypress(object sender, KeyEventArgs e) - { - Task.Factory.StartNew(() => KeyPressTask(e)); - } - - private void KeyPressTask(KeyEventArgs e) - { - // More than 25 waves is pointless - if (_waves.Count >= 25) - return; - - var keyMatch = KeyMap.UsEnglishOrionKeys.FirstOrDefault(k => k.KeyCode == e.KeyCode); - if (keyMatch == null) - return; - - _waves.Add(Settings.IsRandomColors - ? new Wave(new Point(keyMatch.PosX, keyMatch.PosY), 0, _randomColor) - : new Wave(new Point(keyMatch.PosX, keyMatch.PosY), 0, - ColorHelpers.ToDrawingColor(Settings.WaveColor))); - } } public class Wave diff --git a/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs b/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs index 918dd13e8..479b30e92 100644 --- a/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs +++ b/Artemis/Artemis/Modules/Games/Dota2/Dota2ViewModel.cs @@ -1,17 +1,15 @@ using Artemis.Managers; -using Caliburn.Micro; +using Artemis.ViewModels.Abstract; namespace Artemis.Modules.Games.Dota2 { - public class Dota2ViewModel : Screen + public class Dota2ViewModel : GameViewModel { public Dota2ViewModel(MainManager mainManager) { MainManager = mainManager; } - public MainManager MainManager { get; set; } - public static string Name => "Dota 2 (NYI)"; public string Content => "Dota 2 Content"; } diff --git a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml index eba43a8b0..55ece4f20 100644 --- a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml +++ b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3View.xaml @@ -29,7 +29,7 @@ diff --git a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs index ff4398e5c..cbe5f5b49 100644 --- a/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs +++ b/Artemis/Artemis/Modules/Overlays/VolumeDisplay/VolumeDisplayModel.cs @@ -1,6 +1,5 @@ using System.Drawing; using System.Runtime.InteropServices; -using System.Threading.Tasks; using System.Windows.Forms; using Artemis.Managers; using Artemis.Models; @@ -25,13 +24,13 @@ namespace Artemis.Modules.Overlays.VolumeDisplay public override void Dispose() { - MainManager.KeyboardHook.Unsubscribe(HandleKeypress); + MainManager.KeyboardHook.KeyDownCallback -= KeyPressTask; } public override void Enable() { // Listener won't start unless the effect is active - MainManager.KeyboardHook.Subscribe(HandleKeypress); + MainManager.KeyboardHook.KeyDownCallback += KeyPressTask; } public override void Update() @@ -80,11 +79,6 @@ namespace Artemis.Modules.Overlays.VolumeDisplay return bitmap; } - private void HandleKeypress(object sender, KeyEventArgs e) - { - Task.Factory.StartNew(() => KeyPressTask(e)); - } - private void KeyPressTask(KeyEventArgs e) { if (e.KeyCode != Keys.VolumeUp && e.KeyCode != Keys.VolumeDown) diff --git a/Artemis/Artemis/Properties/Resources.Designer.cs b/Artemis/Artemis/Properties/Resources.Designer.cs index 39ff59dd0..1d5940ce5 100644 --- a/Artemis/Artemis/Properties/Resources.Designer.cs +++ b/Artemis/Artemis/Properties/Resources.Designer.cs @@ -1,66 +1,66 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Artemis.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager { - get { - if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Artemis.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Artemis.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Artemis.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// /// Looks up a localized string similar to <?xml version="1.0" encoding="UTF-16"?> ///<!-- Used by Artemis to get the active Sign --> ///<UserConfig> @@ -69,25 +69,25 @@ namespace Artemis.Properties { /// <Var id="ActiveSign" displayName="ActiveSign" displayType="SLIDER:0:1:1000000"/> /// </VisibleVars> /// </Group> - ///</UserConfig>. - /// - internal static string artemisXml { - get { - return ResourceManager.GetString("artemisXml", resourceCulture); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap bow { - get { - object obj = ResourceManager.GetObject("bow", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// + ///</UserConfig>. + /// + internal static string artemisXml { + get { + return ResourceManager.GetString("artemisXml", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap bow { + get { + object obj = ResourceManager.GetObject("bow", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// /// Looks up a localized string similar to "Artemis" ///{ /// "uri" "http://localhost:{{port}}/csgo_game_event" @@ -105,36 +105,56 @@ namespace Artemis.Properties { /// "player_weapons" "1" /// "player_match_stats" "1" /// } - ///}. - /// - internal static string gamestateConfiguration { - get { - return ResourceManager.GetString("gamestateConfiguration", resourceCulture); - } - } - - /// - /// Looks up a localized string similar to /***********************************************************************/ - ////** © 2015 CD PROJEKT S.A. All rights reserved. - ////** THE WITCHER® is a trademark of CD PROJEKT S. A. - ////** The Witcher game is based on the prose of Andrzej Sapkowski. - ////***********************************************************************/ - /// - /// - /// - /// - ///statemachine class W3PlayerWitcher extends CR4Player - ///{ - /// - /// private saved var craftingSchematics : array<name>; - /// - /// - /// private saved var alchemyRecipes : array<name>; [rest of string was truncated]";. - /// - internal static string playerWitcherWs { - get { - return ResourceManager.GetString("playerWitcherWs", resourceCulture); - } - } - } -} + ///}. + /// + internal static string gamestateConfiguration { + get { + return ResourceManager.GetString("gamestateConfiguration", resourceCulture); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon logo { + get { + object obj = ResourceManager.GetObject("logo", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon logo_disabled { + get { + object obj = ResourceManager.GetObject("logo_disabled", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + + /// + /// Looks up a localized string similar to /***********************************************************************/ + ////** © 2015 CD PROJEKT S.A. All rights reserved. + ////** THE WITCHER® is a trademark of CD PROJEKT S. A. + ////** The Witcher game is based on the prose of Andrzej Sapkowski. + ////***********************************************************************/ + /// + /// + /// + /// + ///statemachine class W3PlayerWitcher extends CR4Player + ///{ + /// + /// private saved var craftingSchematics : array<name>; + /// + /// + /// private saved var alchemyRecipes : array<name>; [rest of string was truncated]";. + /// + internal static string playerWitcherWs { + get { + return ResourceManager.GetString("playerWitcherWs", resourceCulture); + } + } + } +} diff --git a/Artemis/Artemis/Properties/Resources.resx b/Artemis/Artemis/Properties/Resources.resx index 3dd1d8537..1fa4c4c83 100644 --- a/Artemis/Artemis/Properties/Resources.resx +++ b/Artemis/Artemis/Properties/Resources.resx @@ -1,133 +1,139 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - ..\resources\witcher3\artemis.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\Resources\bow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\resources\counterstrike\gamestateconfiguration.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\resources\witcher3\playerwitcher.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\resources\witcher3\artemis.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\bow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\counterstrike\gamestateconfiguration.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 + + + ..\Resources\logo.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\logo-disabled.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\resources\witcher3\playerwitcher.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + \ No newline at end of file diff --git a/Artemis/Artemis/logo-disabled.ico b/Artemis/Artemis/Resources/logo-disabled.ico similarity index 100% rename from Artemis/Artemis/logo-disabled.ico rename to Artemis/Artemis/Resources/logo-disabled.ico diff --git a/Artemis/Artemis/Resources/logo.ico b/Artemis/Artemis/Resources/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..e3f35618e6e2b5dbf3a9a23a90dd9180e8283034 GIT binary patch literal 370070 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 N63`OR63BQ7{C^p=3t0dF literal 0 HcmV?d00001 diff --git a/Artemis/Artemis/Settings/General.Designer.cs b/Artemis/Artemis/Settings/General.Designer.cs index 93f796c4e..57222230f 100644 --- a/Artemis/Artemis/Settings/General.Designer.cs +++ b/Artemis/Artemis/Settings/General.Designer.cs @@ -73,7 +73,7 @@ namespace Artemis.Settings { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("True")] + [global::System.Configuration.DefaultSettingValueAttribute("False")] public bool Autorun { get { return ((bool)(this["Autorun"])); diff --git a/Artemis/Artemis/Settings/General.settings b/Artemis/Artemis/Settings/General.settings index 975d221fa..3d397307b 100644 --- a/Artemis/Artemis/Settings/General.settings +++ b/Artemis/Artemis/Settings/General.settings @@ -15,7 +15,7 @@ 51364 - True + False False diff --git a/Artemis/Artemis/Utilities/GameState/GameStateWebServer.cs b/Artemis/Artemis/Utilities/GameState/GameStateWebServer.cs index e2f574d0d..1dbcf3855 100644 --- a/Artemis/Artemis/Utilities/GameState/GameStateWebServer.cs +++ b/Artemis/Artemis/Utilities/GameState/GameStateWebServer.cs @@ -1,7 +1,9 @@ -using System.IO; +using System; +using System.IO; using System.Net; using System.Text; using System.Threading; +using System.Windows.Forms; using Artemis.Settings; using Newtonsoft.Json; @@ -29,11 +31,18 @@ namespace Artemis.Utilities.GameState if (Running) return; - _listener.Prefixes.Clear(); - Port = General.Default.GamestatePort; - _listener.Prefixes.Add($"http://localhost:{Port}/"); - - _listener.Start(); + try + { + _listener.Prefixes.Clear(); + Port = General.Default.GamestatePort; + _listener.Prefixes.Add($"http://localhost:{Port}/"); + + _listener.Start(); + } + catch (Exception) + { + MessageBox.Show("Couldn't start the webserver. CS:GO effect won't work :c \n\nTry changing the port in Settings and restart Artemis."); + } ThreadPool.QueueUserWorkItem(o => { diff --git a/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs b/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs index 3a59e7071..ddac34a73 100644 --- a/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs +++ b/Artemis/Artemis/Utilities/Keyboard/KeyboardHook.cs @@ -1,34 +1,24 @@ -using System.Windows.Forms; -using Gma.System.MouseKeyHook; +using System.Threading.Tasks; +using System.Windows.Forms; +using VirtualInput; namespace Artemis.Utilities.Keyboard { public class KeyboardHook { - private IKeyboardMouseEvents _mGlobalHook; - public int Subscriptions { get; set; } + public delegate void KeyDownCallbackHandler(KeyEventArgs e); - public void Subscribe(KeyEventHandler handleKeypress) + public KeyboardHook() { - if (_mGlobalHook == null) - _mGlobalHook = Hook.GlobalEvents(); - - _mGlobalHook.KeyDown += handleKeypress; - Subscriptions++; + VirtualKeyboard.KeyDown += VirtualKeyboardOnKeyDown; + VirtualKeyboard.StartInterceptor(); } - public void Unsubscribe(KeyEventHandler handleKeypress) + private void VirtualKeyboardOnKeyDown(object sender, KeyEventArgs keyEventArgs) { - if (_mGlobalHook == null) - return; - - _mGlobalHook.KeyDown -= handleKeypress; - Subscriptions--; - - if (Subscriptions >= 1) - return; - _mGlobalHook.Dispose(); - _mGlobalHook = null; + Task.Factory.StartNew(() => { KeyDownCallback?.Invoke(keyEventArgs); }); } + + public event KeyDownCallbackHandler KeyDownCallback; } } \ No newline at end of file diff --git a/Artemis/Artemis/Utilities/Updater.cs b/Artemis/Artemis/Utilities/Updater.cs index 6fc81facb..fd3703a58 100644 --- a/Artemis/Artemis/Utilities/Updater.cs +++ b/Artemis/Artemis/Utilities/Updater.cs @@ -4,7 +4,6 @@ using System.Diagnostics; using System.Linq; using System.Net; using System.Threading.Tasks; -using Artemis.Models; using Artemis.Services; using Artemis.Settings; using Artemis.Utilities.Memory; @@ -15,7 +14,7 @@ namespace Artemis.Utilities { public static class Updater { - public static int CurrentVersion = 100; + public static int CurrentVersion = 102; public static async Task CheckForUpdate(MetroDialogService dialogService) { diff --git a/Artemis/Artemis/ViewModels/SystemTrayViewModel.cs b/Artemis/Artemis/ViewModels/SystemTrayViewModel.cs index 415c579a9..1b9bc164d 100644 --- a/Artemis/Artemis/ViewModels/SystemTrayViewModel.cs +++ b/Artemis/Artemis/ViewModels/SystemTrayViewModel.cs @@ -1,6 +1,7 @@ using System; using System.Windows; using Artemis.Events; +using Artemis.Properties; using Artemis.Settings; using Artemis.Utilities; using Caliburn.Micro; @@ -12,6 +13,7 @@ namespace Artemis.ViewModels private readonly ShellViewModel _shellViewModel; private readonly IWindowManager _windowManager; + private string _activeIcon; private bool _checkedForUpdate; private bool _enabled; private string _toggleText; @@ -23,6 +25,7 @@ namespace Artemis.ViewModels _shellViewModel.MainManager.Events.Subscribe(this); _shellViewModel.MainManager.EnableProgram(); _checkedForUpdate = false; + //ActiveIcon = "../logo.ico"; if (General.Default.ShowOnStartup) ShowWindow(); @@ -41,10 +44,21 @@ namespace Artemis.ViewModels _enabled = value; ToggleText = _enabled ? "Disable Artemis" : "Enable Artemis"; + ActiveIcon = _enabled ? "../Resources/logo.ico" : "../Resources/logo-disabled.ico"; NotifyOfPropertyChange(() => Enabled); } } + public string ActiveIcon + { + get { return _activeIcon; } + set + { + _activeIcon = value; + NotifyOfPropertyChange(); + } + } + public string ToggleText { get { return _toggleText; } diff --git a/Artemis/Artemis/Views/ShellView.xaml b/Artemis/Artemis/Views/ShellView.xaml index 8dd081451..29ff90142 100644 --- a/Artemis/Artemis/Views/ShellView.xaml +++ b/Artemis/Artemis/Views/ShellView.xaml @@ -10,7 +10,7 @@ mc:Ignorable="d" Title="Artemis" Height="670" Width="690" MinWidth="500" MinHeight="400" - GlowBrush="{DynamicResource AccentColorBrush}" Icon="/Artemis;component/logo.ico"> + GlowBrush="{DynamicResource AccentColorBrush}" Icon="../logo.ico"> diff --git a/Artemis/Artemis/Views/SystemTrayView.xaml b/Artemis/Artemis/Views/SystemTrayView.xaml index f201f393f..b6b877020 100644 --- a/Artemis/Artemis/Views/SystemTrayView.xaml +++ b/Artemis/Artemis/Views/SystemTrayView.xaml @@ -24,7 +24,7 @@ diff --git a/Artemis/Artemis/packages.config b/Artemis/Artemis/packages.config index 1a670ab2d..38ab08916 100644 --- a/Artemis/Artemis/packages.config +++ b/Artemis/Artemis/packages.config @@ -1,5 +1,4 @@  - @@ -12,8 +11,8 @@ - + \ No newline at end of file