From c0918ebea62b8a7f15485a6f308ff1457e748048 Mon Sep 17 00:00:00 2001 From: SpoinkyNL Date: Sun, 1 Jan 2017 01:07:22 +0100 Subject: [PATCH] Fixed LUA being initialized for every effect on UI open Fixed editing a profile of a game that is running Updated default profiles for Overwatch Added default profiles for Project CARS --- Artemis/Artemis/Managers/EffectManager.cs | 22 +- Artemis/Artemis/Managers/LuaManager.cs | 16 +- Artemis/Artemis/Models/EffectModel.cs | 24 +- .../WindowsProfile/WindowsProfileModel.cs | 540 +++++++++--------- .../WindowsProfile/WindowsProfileViewModel.cs | 2 +- .../Games/CounterStrike/CounterStrikeModel.cs | 2 + .../Artemis/Modules/Games/Dota2/Dota2Model.cs | 2 + .../EurotruckSimulator2Model.cs | 2 + .../Artemis/Modules/Games/GtaV/GtaVModel.cs | 2 + .../Modules/Games/LightFx/LightFxModel.cs | 2 + .../Modules/Games/Overwatch/OverwatchModel.cs | 2 + .../Games/ProjectCars/ProjectCarsModel.cs | 2 + .../Games/RocketLeague/RocketLeagueModel.cs | 9 +- .../Games/TheDivision/TheDivisionModel.cs | 3 +- .../UnrealTournament/UnrealTournamentModel.cs | 2 + .../Modules/Games/Witcher3/Witcher3Model.cs | 3 +- Artemis/Artemis/Modules/Games/WoW/WoWModel.cs | 2 + .../Profiles/Lua/Modules/LuaEventsModule.cs | 6 +- .../Resources/Keyboards/default-profiles.zip | Bin 404250 -> 425401 bytes Artemis/Artemis/Resources/lua-placeholder.lua | 4 +- .../ViewModels/Abstract/GameViewModel.cs | 4 +- .../Profiles/ProfileEditorViewModel.cs | 48 +- 22 files changed, 364 insertions(+), 335 deletions(-) diff --git a/Artemis/Artemis/Managers/EffectManager.cs b/Artemis/Artemis/Managers/EffectManager.cs index e8ef40679..5936411dd 100644 --- a/Artemis/Artemis/Managers/EffectManager.cs +++ b/Artemis/Artemis/Managers/EffectManager.cs @@ -35,8 +35,8 @@ namespace Artemis.Managers models.AddRange(overlayModels); // Add games, exclude WoW if needed models.AddRange(_generalSettings.GamestatePort != 62575 - ? gameModels.Where(e => e.Name != "WoW") - : gameModels); + ? gameModels.Where(e => e.Name != "WoW").Where(e => e.Name != "LightFX") + : gameModels.Where(e => e.Name != "LightFX")); EffectModels = models; _logger.Info("Intialized EffectManager"); @@ -72,7 +72,7 @@ namespace Artemis.Managers /// public IEnumerable EnabledGames { - get { return EffectModels.OfType().Where(g => g.Enabled); } + get { return EffectModels.OfType().Where(g => g.Enabled && g.Settings.Enabled); } } public event EventHandler OnEffectChangedEvent; @@ -138,14 +138,16 @@ namespace Artemis.Managers { if (!wasNull) ActiveEffect.Dispose(); - - ActiveEffect = effectModel; - ActiveEffect.Enable(); - if (!ActiveEffect.Initialized) + lock (effectModel) { - _logger.Debug("Cancelling effect change, couldn't initialize the effect ({0})", effectModel.Name); - ActiveEffect = null; - return; + ActiveEffect = effectModel; + ActiveEffect.Enable(); + if (!ActiveEffect.Initialized) + { + _logger.Debug("Cancelling effect change, couldn't initialize the effect ({0})", effectModel.Name); + ActiveEffect = null; + return; + } } } diff --git a/Artemis/Artemis/Managers/LuaManager.cs b/Artemis/Artemis/Managers/LuaManager.cs index 3cf15a722..1aa9ea63d 100644 --- a/Artemis/Artemis/Managers/LuaManager.cs +++ b/Artemis/Artemis/Managers/LuaManager.cs @@ -40,6 +40,7 @@ namespace Artemis.Managers public void SetupLua(ProfileModel profileModel) { + _logger.Debug("Setting up LUA for {0}-{1}.", profileModel?.Name, profileModel?.GameName); // Clear old state ClearLua(); @@ -72,7 +73,6 @@ namespace Artemis.Managers { lock (_luaScript) { - UpdateLuaSource(ProfileModel); _luaScript.DoString(ProfileModel.LuaScript); } } @@ -179,20 +179,6 @@ namespace Artemis.Managers #endregion - /// - /// Updates a profile's LUA script to be compatible with the latest version of Artemis, if needed. - /// This function obviously won't fix completely custom profiles but it'll fix copied LUA. - /// - /// - private static void UpdateLuaSource(ProfileModel profileModel) - { - // 1.7.1.0 - Events cleanup - profileModel.LuaScript = profileModel.LuaScript.Replace("function updateHandler(profile, eventArgs)", - "function updateHandler(eventArgs)"); - profileModel.LuaScript = profileModel.LuaScript.Replace("function drawHandler(profile, eventArgs)", - "function drawHandler(eventArgs)"); - } - #region Editor public void OpenEditor() diff --git a/Artemis/Artemis/Models/EffectModel.cs b/Artemis/Artemis/Models/EffectModel.cs index 17a26a56c..600f7e1fd 100644 --- a/Artemis/Artemis/Models/EffectModel.cs +++ b/Artemis/Artemis/Models/EffectModel.cs @@ -23,17 +23,14 @@ namespace Artemis.Models protected DateTime LastTrace; - protected EffectModel(DeviceManager deviceManager, LuaManager luaManager, EffectSettings settings, IDataModel dataModel) + protected EffectModel(DeviceManager deviceManager, LuaManager luaManager, EffectSettings settings, + IDataModel dataModel) { DeviceManager = deviceManager; LuaManager = luaManager; Settings = settings; DataModel = dataModel; - // If set, load the last profile from settings - if (!string.IsNullOrEmpty(Settings?.LastProfile)) - Profile = ProfileProvider.GetProfile(DeviceManager.ActiveKeyboard, this, Settings.LastProfile); - DeviceManager.OnKeyboardChangedEvent += DeviceManagerOnOnKeyboardChangedEvent; } @@ -45,6 +42,7 @@ namespace Artemis.Models public int KeyboardScale { get; set; } = 4; // Used by profile system public IDataModel DataModel { get; set; } + public ProfileModel Profile { get; set; } [Inject] @@ -53,16 +51,26 @@ namespace Artemis.Models public virtual void Dispose() { Profile?.Deactivate(LuaManager); + Profile = null; } private void DeviceManagerOnOnKeyboardChangedEvent(object sender, KeyboardChangedEventArgs args) { if (!string.IsNullOrEmpty(Settings?.LastProfile)) Profile = ProfileProvider.GetProfile(DeviceManager.ActiveKeyboard, this, Settings.LastProfile); + else + Profile = ProfileProvider.GetProfile(DeviceManager.ActiveKeyboard, this, "Default"); } // Called on creation - public abstract void Enable(); + public virtual void Enable() + { + // If set, load the last profile from settings + if (!string.IsNullOrEmpty(Settings?.LastProfile)) + Profile = ProfileProvider.GetProfile(DeviceManager.ActiveKeyboard, this, Settings.LastProfile); + else + Profile = ProfileProvider.GetProfile(DeviceManager.ActiveKeyboard, this, "Default"); + } // Called every frame public abstract void Update(); @@ -75,9 +83,9 @@ namespace Artemis.Models /// public virtual void Render(RenderFrame frame, bool keyboardOnly) { - if ((Profile == null) || (DataModel == null) || (DeviceManager.ActiveKeyboard == null)) + if (Profile == null || DataModel == null || DeviceManager.ActiveKeyboard == null) return; - + lock (DataModel) { lock (Profile) diff --git a/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileModel.cs b/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileModel.cs index 20d545bec..6fd367001 100644 --- a/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileModel.cs +++ b/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileModel.cs @@ -1,273 +1,275 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Net; -using System.Runtime.InteropServices; -using System.Threading; -using System.Threading.Tasks; -using Artemis.DAL; -using Artemis.Managers; -using Artemis.Models; -using Artemis.Profiles.Layers.Models; -using Artemis.Utilities; -using Newtonsoft.Json; -using SpotifyAPI.Local; - -namespace Artemis.Modules.Effects.WindowsProfile -{ - public class WindowsProfileModel : EffectModel - { - private List _cores; - private int _cpuFrames; - private DateTime _lastMusicUpdate; - private PerformanceCounter _overallCpu; - private SpotifyLocalAPI _spotify; - private bool _spotifySetupBusy; - - public WindowsProfileModel(DeviceManager deviceManager, LuaManager luaManager) - : base(deviceManager, luaManager, SettingsProvider.Load(), - new WindowsProfileDataModel()) - { - _lastMusicUpdate = DateTime.Now; - - Name = "WindowsProfile"; - } - - public override void Dispose() - { - Initialized = false; - base.Dispose(); - } - - public override void Enable() - { - SetupCpu(); - SetupSpotify(); - - Initialized = true; - } - - public override void Update() - { - var dataModel = (WindowsProfileDataModel) DataModel; - UpdateCpu(dataModel); - UpdateMusicPlayers(dataModel); - UpdateDay(dataModel); - UpdateKeyStates(dataModel); - UpdateActiveWindow(dataModel); - } - - #region Current Time - - private void UpdateDay(WindowsProfileDataModel dataModel) - { - var now = DateTime.Now; - dataModel.CurrentTime.Hours24 = int.Parse(now.ToString("HH")); - dataModel.CurrentTime.Hours12 = int.Parse(now.ToString("hh")); - dataModel.CurrentTime.Minutes = int.Parse(now.ToString("mm")); - dataModel.CurrentTime.Seconds = int.Parse(now.ToString("ss")); - } - - #endregion - - #region CPU - - private void SetupCpu() - { - try - { - _cores = GetPerformanceCounters(); - var coreCount = _cores.Count; - while (coreCount < 8) - { - _cores.Add(null); - coreCount++; - } - _overallCpu = GetOverallPerformanceCounter(); - } - catch (InvalidOperationException) - { - Logger?.Warn("Failed to setup CPU information, try running \"lodctr /R\" as administrator."); - } - } - - private void UpdateCpu(WindowsProfileDataModel dataModel) - { - if ((_cores == null) || (_overallCpu == null)) - return; - - // CPU is only updated every 15 frames, the performance counter gives 0 if updated too often - _cpuFrames++; - if (_cpuFrames < 16) - return; - - _cpuFrames = 0; - - // Update cores, not ideal but data models don't support lists. - if (_cores[0] != null) - dataModel.Cpu.Core1Usage = (int) _cores[0].NextValue(); - if (_cores[1] != null) - dataModel.Cpu.Core2Usage = (int) _cores[1].NextValue(); - if (_cores[2] != null) - dataModel.Cpu.Core3Usage = (int) _cores[2].NextValue(); - if (_cores[3] != null) - dataModel.Cpu.Core4Usage = (int) _cores[3].NextValue(); - if (_cores[4] != null) - dataModel.Cpu.Core5Usage = (int) _cores[4].NextValue(); - if (_cores[5] != null) - dataModel.Cpu.Core6Usage = (int) _cores[5].NextValue(); - if (_cores[6] != null) - dataModel.Cpu.Core7Usage = (int) _cores[6].NextValue(); - if (_cores[7] != null) - dataModel.Cpu.Core8Usage = (int) _cores[7].NextValue(); - - //From Ted - Let's get overall RAM and CPU usage here - dataModel.Cpu.TotalUsage = (int) _overallCpu.NextValue(); - - var phav = PerformanceInfo.GetPhysicalAvailableMemoryInMiB(); - var tot = PerformanceInfo.GetTotalMemoryInMiB(); - var percentFree = phav / (decimal) tot * 100; - var percentOccupied = 100 - percentFree; - - dataModel.Performance.RAMUsage = (int) percentOccupied; - } - - public override List GetRenderLayers(bool keyboardOnly) - { - return Profile.GetRenderLayers(DataModel, keyboardOnly, false); - } - - public static PerformanceCounter GetOverallPerformanceCounter() - { - var cpuCounter = new PerformanceCounter - { - CategoryName = "Processor", - CounterName = "% Processor Time", - InstanceName = "_Total" - }; - - return cpuCounter; - } - - public static List GetPerformanceCounters() - { - var performanceCounters = new List(); - var procCount = Environment.ProcessorCount; - for (var i = 0; i < procCount; i++) - { - var pc = new PerformanceCounter("Processor", "% Processor Time", i.ToString()); - performanceCounters.Add(pc); - } - return performanceCounters; - } - - #endregion - - #region Music - - public void SetupSpotify() - { - if (_spotifySetupBusy) - return; - - _spotifySetupBusy = true; - _spotify = new SpotifyLocalAPI(); - - // Connecting can sometimes use a little bit more conviction - Task.Factory.StartNew(() => - { - var tryCount = 0; - while (tryCount <= 10) - { - // Causes WebException if not internet connection is available - try - { - tryCount++; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Net; +using System.Runtime.InteropServices; +using System.Threading; +using System.Threading.Tasks; +using Artemis.DAL; +using Artemis.Managers; +using Artemis.Models; +using Artemis.Profiles.Layers.Models; +using Artemis.Utilities; +using Newtonsoft.Json; +using SpotifyAPI.Local; + +namespace Artemis.Modules.Effects.WindowsProfile +{ + public class WindowsProfileModel : EffectModel + { + private List _cores; + private int _cpuFrames; + private DateTime _lastMusicUpdate; + private PerformanceCounter _overallCpu; + private SpotifyLocalAPI _spotify; + private bool _spotifySetupBusy; + + public WindowsProfileModel(DeviceManager deviceManager, LuaManager luaManager) + : base(deviceManager, luaManager, SettingsProvider.Load(), + new WindowsProfileDataModel()) + { + _lastMusicUpdate = DateTime.Now; + + Name = "WindowsProfile"; + } + + public override void Dispose() + { + Initialized = false; + base.Dispose(); + } + + public override void Enable() + { + base.Enable(); + + SetupCpu(); + SetupSpotify(); + + Initialized = true; + } + + public override void Update() + { + var dataModel = (WindowsProfileDataModel) DataModel; + UpdateCpu(dataModel); + UpdateMusicPlayers(dataModel); + UpdateDay(dataModel); + UpdateKeyStates(dataModel); + UpdateActiveWindow(dataModel); + } + + #region Current Time + + private void UpdateDay(WindowsProfileDataModel dataModel) + { + var now = DateTime.Now; + dataModel.CurrentTime.Hours24 = int.Parse(now.ToString("HH")); + dataModel.CurrentTime.Hours12 = int.Parse(now.ToString("hh")); + dataModel.CurrentTime.Minutes = int.Parse(now.ToString("mm")); + dataModel.CurrentTime.Seconds = int.Parse(now.ToString("ss")); + } + + #endregion + + #region CPU + + private void SetupCpu() + { + try + { + _cores = GetPerformanceCounters(); + var coreCount = _cores.Count; + while (coreCount < 8) + { + _cores.Add(null); + coreCount++; + } + _overallCpu = GetOverallPerformanceCounter(); + } + catch (InvalidOperationException) + { + Logger?.Warn("Failed to setup CPU information, try running \"lodctr /R\" as administrator."); + } + } + + private void UpdateCpu(WindowsProfileDataModel dataModel) + { + if ((_cores == null) || (_overallCpu == null)) + return; + + // CPU is only updated every 15 frames, the performance counter gives 0 if updated too often + _cpuFrames++; + if (_cpuFrames < 16) + return; + + _cpuFrames = 0; + + // Update cores, not ideal but data models don't support lists. + if (_cores[0] != null) + dataModel.Cpu.Core1Usage = (int) _cores[0].NextValue(); + if (_cores[1] != null) + dataModel.Cpu.Core2Usage = (int) _cores[1].NextValue(); + if (_cores[2] != null) + dataModel.Cpu.Core3Usage = (int) _cores[2].NextValue(); + if (_cores[3] != null) + dataModel.Cpu.Core4Usage = (int) _cores[3].NextValue(); + if (_cores[4] != null) + dataModel.Cpu.Core5Usage = (int) _cores[4].NextValue(); + if (_cores[5] != null) + dataModel.Cpu.Core6Usage = (int) _cores[5].NextValue(); + if (_cores[6] != null) + dataModel.Cpu.Core7Usage = (int) _cores[6].NextValue(); + if (_cores[7] != null) + dataModel.Cpu.Core8Usage = (int) _cores[7].NextValue(); + + //From Ted - Let's get overall RAM and CPU usage here + dataModel.Cpu.TotalUsage = (int) _overallCpu.NextValue(); + + var phav = PerformanceInfo.GetPhysicalAvailableMemoryInMiB(); + var tot = PerformanceInfo.GetTotalMemoryInMiB(); + var percentFree = phav / (decimal) tot * 100; + var percentOccupied = 100 - percentFree; + + dataModel.Performance.RAMUsage = (int) percentOccupied; + } + + public override List GetRenderLayers(bool keyboardOnly) + { + return Profile.GetRenderLayers(DataModel, keyboardOnly, false); + } + + public static PerformanceCounter GetOverallPerformanceCounter() + { + var cpuCounter = new PerformanceCounter + { + CategoryName = "Processor", + CounterName = "% Processor Time", + InstanceName = "_Total" + }; + + return cpuCounter; + } + + public static List GetPerformanceCounters() + { + var performanceCounters = new List(); + var procCount = Environment.ProcessorCount; + for (var i = 0; i < procCount; i++) + { + var pc = new PerformanceCounter("Processor", "% Processor Time", i.ToString()); + performanceCounters.Add(pc); + } + return performanceCounters; + } + + #endregion + + #region Music + + public void SetupSpotify() + { + if (_spotifySetupBusy) + return; + + _spotifySetupBusy = true; + _spotify = new SpotifyLocalAPI(); + + // Connecting can sometimes use a little bit more conviction + Task.Factory.StartNew(() => + { + var tryCount = 0; + while (tryCount <= 10) + { + // Causes WebException if not internet connection is available + try + { + tryCount++; var connected = _spotify.Connect(); if (connected) break; - Thread.Sleep(1000); - } - catch (WebException) - { - break; - } - - } - _spotifySetupBusy = false; - }); - } - - public void UpdateMusicPlayers(WindowsProfileDataModel dataModel) - { - // This is quite resource hungry so only update it once every two seconds - if (DateTime.Now - _lastMusicUpdate < TimeSpan.FromSeconds(2)) - return; - _lastMusicUpdate = DateTime.Now; - - UpdateSpotify(dataModel); - UpdateGooglePlayMusic(dataModel); - } - - private void UpdateSpotify(WindowsProfileDataModel dataModel) - { - // Spotify - if (!dataModel.Spotify.Running && SpotifyLocalAPI.IsSpotifyRunning()) - SetupSpotify(); - - var status = _spotify.GetStatus(); - if (status == null) - return; - - dataModel.Spotify.Playing = status.Playing; - dataModel.Spotify.Running = SpotifyLocalAPI.IsSpotifyRunning(); - - if (status.Track != null) - { - dataModel.Spotify.Artist = status.Track.ArtistResource?.Name; - dataModel.Spotify.SongName = status.Track.TrackResource?.Name; - dataModel.Spotify.Album = status.Track.AlbumResource?.Name; - dataModel.Spotify.SongLength = status.Track.Length; - } - - if (dataModel.Spotify.SongLength > 0) - dataModel.Spotify.SongPercentCompleted = - (int) (status.PlayingPosition / dataModel.Spotify.SongLength * 100.0); - } - - private void UpdateGooglePlayMusic(WindowsProfileDataModel dataModel) - { - // Google Play Music - var appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - var json = appData + @"\Google Play Music Desktop Player\json_store\playback.json"; - if (!File.Exists(json)) - return; - - dataModel.GooglePlayMusic = JsonConvert.DeserializeObject(File.ReadAllText(json)); - } - - #endregion - - #region System - - [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, - CallingConvention = CallingConvention.Winapi)] - public static extern short GetKeyState(int keyCode); - - private void UpdateKeyStates(WindowsProfileDataModel dataModel) - { - dataModel.Keyboard.NumLock = ((ushort) GetKeyState(0x90) & 0xffff) != 0; - dataModel.Keyboard.CapsLock = ((ushort) GetKeyState(0x14) & 0xffff) != 0; - dataModel.Keyboard.ScrollLock = ((ushort) GetKeyState(0x91) & 0xffff) != 0; - } - - private void UpdateActiveWindow(WindowsProfileDataModel dataModel) - { - dataModel.ActiveWindow.ProcessName = ActiveWindowHelper.ActiveWindowProcessName; - dataModel.ActiveWindow.WindowTitle = ActiveWindowHelper.ActiveWindowWindowTitle; - } - - #endregion - } + Thread.Sleep(1000); + } + catch (WebException) + { + break; + } + + } + _spotifySetupBusy = false; + }); + } + + public void UpdateMusicPlayers(WindowsProfileDataModel dataModel) + { + // This is quite resource hungry so only update it once every two seconds + if (DateTime.Now - _lastMusicUpdate < TimeSpan.FromSeconds(2)) + return; + _lastMusicUpdate = DateTime.Now; + + UpdateSpotify(dataModel); + UpdateGooglePlayMusic(dataModel); + } + + private void UpdateSpotify(WindowsProfileDataModel dataModel) + { + // Spotify + if (!dataModel.Spotify.Running && SpotifyLocalAPI.IsSpotifyRunning()) + SetupSpotify(); + + var status = _spotify.GetStatus(); + if (status == null) + return; + + dataModel.Spotify.Playing = status.Playing; + dataModel.Spotify.Running = SpotifyLocalAPI.IsSpotifyRunning(); + + if (status.Track != null) + { + dataModel.Spotify.Artist = status.Track.ArtistResource?.Name; + dataModel.Spotify.SongName = status.Track.TrackResource?.Name; + dataModel.Spotify.Album = status.Track.AlbumResource?.Name; + dataModel.Spotify.SongLength = status.Track.Length; + } + + if (dataModel.Spotify.SongLength > 0) + dataModel.Spotify.SongPercentCompleted = + (int) (status.PlayingPosition / dataModel.Spotify.SongLength * 100.0); + } + + private void UpdateGooglePlayMusic(WindowsProfileDataModel dataModel) + { + // Google Play Music + var appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + var json = appData + @"\Google Play Music Desktop Player\json_store\playback.json"; + if (!File.Exists(json)) + return; + + dataModel.GooglePlayMusic = JsonConvert.DeserializeObject(File.ReadAllText(json)); + } + + #endregion + + #region System + + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, + CallingConvention = CallingConvention.Winapi)] + public static extern short GetKeyState(int keyCode); + + private void UpdateKeyStates(WindowsProfileDataModel dataModel) + { + dataModel.Keyboard.NumLock = ((ushort) GetKeyState(0x90) & 0xffff) != 0; + dataModel.Keyboard.CapsLock = ((ushort) GetKeyState(0x14) & 0xffff) != 0; + dataModel.Keyboard.ScrollLock = ((ushort) GetKeyState(0x91) & 0xffff) != 0; + } + + private void UpdateActiveWindow(WindowsProfileDataModel dataModel) + { + dataModel.ActiveWindow.ProcessName = ActiveWindowHelper.ActiveWindowProcessName; + dataModel.ActiveWindow.WindowTitle = ActiveWindowHelper.ActiveWindowWindowTitle; + } + + #endregion + } } \ No newline at end of file diff --git a/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs b/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs index e39b96325..1f16bd4b4 100644 --- a/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs +++ b/Artemis/Artemis/Modules/Effects/WindowsProfile/WindowsProfileViewModel.cs @@ -22,7 +22,7 @@ namespace Artemis.Modules.Effects.WindowsProfile IParameter[] args = { new ConstructorArgument("mainManager", main), - new ConstructorArgument("gameModel", (WindowsProfileModel) EffectModel), + new ConstructorArgument("effectModel", (WindowsProfileModel) EffectModel), new ConstructorArgument("lastProfile", ((WindowsProfileSettings) EffectSettings).LastProfile) }; ProfileEditor = kernel.Get(args); diff --git a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs index 321614b5b..cb4ffe5a4 100644 --- a/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs +++ b/Artemis/Artemis/Modules/Games/CounterStrike/CounterStrikeModel.cs @@ -52,6 +52,8 @@ namespace Artemis.Modules.Games.CounterStrike public override void Enable() { + base.Enable(); + _gameStateWebServer.GameDataReceived += HandleGameData; Initialized = true; } diff --git a/Artemis/Artemis/Modules/Games/Dota2/Dota2Model.cs b/Artemis/Artemis/Modules/Games/Dota2/Dota2Model.cs index 2f1a61c23..f482bc71b 100644 --- a/Artemis/Artemis/Modules/Games/Dota2/Dota2Model.cs +++ b/Artemis/Artemis/Modules/Games/Dota2/Dota2Model.cs @@ -45,6 +45,8 @@ namespace Artemis.Modules.Games.Dota2 public override void Enable() { + base.Enable(); + _gameStateWebServer.GameDataReceived += HandleGameData; Initialized = true; } diff --git a/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2Model.cs b/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2Model.cs index 5ff1873f6..1a9409b1a 100644 --- a/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2Model.cs +++ b/Artemis/Artemis/Modules/Games/EurotruckSimulator2/EurotruckSimulator2Model.cs @@ -43,6 +43,8 @@ namespace Artemis.Modules.Games.EurotruckSimulator2 public override void Enable() { + base.Enable(); + Initialized = true; } diff --git a/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs b/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs index b8e031572..1dd4293f2 100644 --- a/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs +++ b/Artemis/Artemis/Modules/Games/GtaV/GtaVModel.cs @@ -27,6 +27,8 @@ namespace Artemis.Modules.Games.GtaV public override void Enable() { + base.Enable(); + DllManager.PlaceLogitechDll(); _pipeServer.PipeMessage += PipeServerOnPipeMessage; Initialized = true; diff --git a/Artemis/Artemis/Modules/Games/LightFx/LightFxModel.cs b/Artemis/Artemis/Modules/Games/LightFx/LightFxModel.cs index d0271d8f7..3d77bc907 100644 --- a/Artemis/Artemis/Modules/Games/LightFx/LightFxModel.cs +++ b/Artemis/Artemis/Modules/Games/LightFx/LightFxModel.cs @@ -56,6 +56,8 @@ namespace Artemis.Modules.Games.LightFx public override void Enable() { + base.Enable(); + Initialized = true; } diff --git a/Artemis/Artemis/Modules/Games/Overwatch/OverwatchModel.cs b/Artemis/Artemis/Modules/Games/Overwatch/OverwatchModel.cs index 20a87d9b5..f2d860ca2 100644 --- a/Artemis/Artemis/Modules/Games/Overwatch/OverwatchModel.cs +++ b/Artemis/Artemis/Modules/Games/Overwatch/OverwatchModel.cs @@ -82,6 +82,8 @@ namespace Artemis.Modules.Games.Overwatch public override void Enable() { + base.Enable(); + _stickyStatus = new StickyValue(300); _stickyUltimateReady = new StickyValue(350); _stickyUltimateUsed = new StickyValue(350); diff --git a/Artemis/Artemis/Modules/Games/ProjectCars/ProjectCarsModel.cs b/Artemis/Artemis/Modules/Games/ProjectCars/ProjectCarsModel.cs index 145bb6591..c1bb99c98 100644 --- a/Artemis/Artemis/Modules/Games/ProjectCars/ProjectCarsModel.cs +++ b/Artemis/Artemis/Modules/Games/ProjectCars/ProjectCarsModel.cs @@ -33,6 +33,8 @@ namespace Artemis.Modules.Games.ProjectCars public override void Enable() { + base.Enable(); + Initialized = true; } diff --git a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs index 8e8673508..abe3193c4 100644 --- a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs +++ b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs @@ -29,14 +29,14 @@ namespace Artemis.Modules.Games.RocketLeague //var offset = new GamePointersCollection //{ // Game = "RocketLeague", - // GameVersion = "1.24", + // GameVersion = "1.26", // GameAddresses = new List // { // new GamePointer // { // Description = "Boost", - // BasePointer = new IntPtr(0x016BBFB4), - // Offsets = new[] { 0xc4, 0x210, 0x320, 0x734, 0x224} + // BasePointer = new IntPtr(0x01666C38), + // Offsets = new[] { 0x58, 0x668, 0x73C, 0x224} // } // } //}; @@ -54,8 +54,9 @@ namespace Artemis.Modules.Games.RocketLeague public override void Enable() { - Initialized = false; + base.Enable(); + Initialized = false; Updater.GetPointers(); _pointer = SettingsProvider.Load().RocketLeague; diff --git a/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionModel.cs b/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionModel.cs index 5365aacd4..c80b08998 100644 --- a/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionModel.cs +++ b/Artemis/Artemis/Modules/Games/TheDivision/TheDivisionModel.cs @@ -49,8 +49,9 @@ namespace Artemis.Modules.Games.TheDivision public override void Enable() { - Initialized = false; + base.Enable(); + Initialized = false; _stickyAmmo = new StickyValue(200); _stickyHp = new StickyValue(200); diff --git a/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentModel.cs b/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentModel.cs index ee48801a8..142e852c4 100644 --- a/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentModel.cs +++ b/Artemis/Artemis/Modules/Games/UnrealTournament/UnrealTournamentModel.cs @@ -126,6 +126,8 @@ namespace Artemis.Modules.Games.UnrealTournament public override void Enable() { + base.Enable(); + _pipeServer.PipeMessage += PipeServerOnPipeMessage; _killTimer.Start(); diff --git a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3Model.cs b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3Model.cs index 76070e6eb..109d80155 100644 --- a/Artemis/Artemis/Modules/Games/Witcher3/Witcher3Model.cs +++ b/Artemis/Artemis/Modules/Games/Witcher3/Witcher3Model.cs @@ -43,8 +43,9 @@ namespace Artemis.Modules.Games.Witcher3 public override void Enable() { - Initialized = false; + base.Enable(); + Initialized = false; // Ensure the config file is found var witcherSettings = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + @"\The Witcher 3\user.settings"; diff --git a/Artemis/Artemis/Modules/Games/WoW/WoWModel.cs b/Artemis/Artemis/Modules/Games/WoW/WoWModel.cs index 666aa5ca1..400901f17 100644 --- a/Artemis/Artemis/Modules/Games/WoW/WoWModel.cs +++ b/Artemis/Artemis/Modules/Games/WoW/WoWModel.cs @@ -77,6 +77,8 @@ namespace Artemis.Modules.Games.WoW public override void Enable() { + base.Enable(); + var tempProcess = MemoryHelpers.GetProcessIfRunning(ProcessName); if (tempProcess == null) return; diff --git a/Artemis/Artemis/Profiles/Lua/Modules/LuaEventsModule.cs b/Artemis/Artemis/Profiles/Lua/Modules/LuaEventsModule.cs index 1e406b540..c023c3d4a 100644 --- a/Artemis/Artemis/Profiles/Lua/Modules/LuaEventsModule.cs +++ b/Artemis/Artemis/Profiles/Lua/Modules/LuaEventsModule.cs @@ -83,15 +83,15 @@ namespace Artemis.Profiles.Lua.Modules } catch (InternalErrorException ex) { - _logger.Error(ex, "[{0}-LUA]: Error: {1}", profileModel.Name, ex.DecoratedMessage); + _logger.Error("[{0}-LUA]: Error: {1}", profileModel.Name, ex.DecoratedMessage); } catch (SyntaxErrorException ex) { - _logger.Error(ex, "[{0}-LUA]: Error: {1}", profileModel.Name, ex.DecoratedMessage); + _logger.Error("[{0}-LUA]: Error: {1}", profileModel.Name, ex.DecoratedMessage); } catch (ScriptRuntimeException ex) { - _logger.Error(ex, "[{0}-LUA]: Error: {1}", profileModel.Name, ex.DecoratedMessage); + _logger.Error("[{0}-LUA]: Error: {1}", profileModel.Name, ex.DecoratedMessage); } } } diff --git a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip index 5713033cc58e960be61e2b2680eb7ae56cdfb4b9..8553f2868d5ddf2169fa63802ac1c308f3b1fb2a 100644 GIT binary patch delta 74916 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%0DEtF+%Pfi6U*f{(23l}sA%-R`xY73pxp%K= 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⪼!b6!1E;6%ub8lZJ14U-8d`lX#(cfX2%#Oa7 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 B$KL<| diff --git a/Artemis/Artemis/Resources/lua-placeholder.lua b/Artemis/Artemis/Resources/lua-placeholder.lua index 68a963307..87b7a962a 100644 --- a/Artemis/Artemis/Resources/lua-placeholder.lua +++ b/Artemis/Artemis/Resources/lua-placeholder.lua @@ -14,7 +14,7 @@ -- changes are applied to the profile and the script is restarted. -- This event is raised after every profile update, before drawing. -function updateHandler(eventArgs) +function updateHandler(profile, eventArgs) -- In this example we only want to update once per frame when the keyboard is -- updated. If you don't do this the updateHandler will trigger on every -- device's update. @@ -26,7 +26,7 @@ function updateHandler(eventArgs) end -- This event is raised after every profile draw, after updating. -function drawHandler(eventArgs) +function drawHandler(profile, eventArgs) -- In this example we only want to draw to the keyboard. Each device has it's -- own drawing event if eventArgs.DeviceType != "keyboard" then diff --git a/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs b/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs index 295e45b6a..6c8a9703d 100644 --- a/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs +++ b/Artemis/Artemis/ViewModels/Abstract/GameViewModel.cs @@ -26,7 +26,7 @@ namespace Artemis.ViewModels.Abstract IParameter[] args = { new ConstructorArgument("mainManager", mainManager), - new ConstructorArgument("gameModel", gameModel), + new ConstructorArgument("effectModel", gameModel), new ConstructorArgument("lastProfile", GameSettings.LastProfile) }; ProfileEditor = kernel.Get(args); @@ -60,7 +60,7 @@ namespace Artemis.ViewModels.Abstract } } - public bool GameEnabled => MainManager.EffectManager.ActiveEffect == GameModel; + public bool GameEnabled => MainManager.EffectManager.ActiveEffect.Name == GameModel.Name; public void ToggleEffect() { diff --git a/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs b/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs index 88918413a..ff0385b73 100644 --- a/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs +++ b/Artemis/Artemis/ViewModels/Profiles/ProfileEditorViewModel.cs @@ -35,7 +35,7 @@ namespace Artemis.ViewModels.Profiles public sealed class ProfileEditorViewModel : Screen, IDropTarget { private readonly DeviceManager _deviceManager; - private readonly EffectModel _gameModel; + private readonly EffectModel _effectModel; private readonly LuaManager _luaManager; private readonly Timer _saveTimer; private ImageSource _keyboardPreview; @@ -44,13 +44,13 @@ namespace Artemis.ViewModels.Profiles private bool _saving; private ProfileModel _selectedProfile; - public ProfileEditorViewModel(DeviceManager deviceManager, LuaManager luaManager, EffectModel gameModel, + public ProfileEditorViewModel(DeviceManager deviceManager, LuaManager luaManager, EffectModel effectModel, ProfileViewModel profileViewModel, MetroDialogService dialogService, WindowService windowService, string lastProfile) { _deviceManager = deviceManager; _luaManager = luaManager; - _gameModel = gameModel; + _effectModel = effectModel; ProfileNames = new ObservableCollection(); Layers = new ObservableCollection(); @@ -111,7 +111,7 @@ namespace Artemis.ViewModels.Profiles if (value == SelectedProfile?.Name) return; - SelectedProfile = ProfileProvider.GetProfile(_deviceManager.ActiveKeyboard, _gameModel, value); + SelectedProfile = ProfileProvider.GetProfile(_deviceManager.ActiveKeyboard, _effectModel, value); NotifyOfPropertyChange(() => SelectedProfileName); } } @@ -124,12 +124,21 @@ namespace Artemis.ViewModels.Profiles if (Equals(value, _selectedProfile)) return; - // Deactivate old profile - _selectedProfile?.Deactivate(_luaManager); - // Update the value - _selectedProfile = value; - // Activate new profile - _selectedProfile?.Activate(_luaManager); + if (IsActive) + { + // Deactivate old profile + _selectedProfile?.Deactivate(_luaManager); + // Update the value + _selectedProfile = value; + // Activate new profile + _selectedProfile?.Activate(_luaManager); + } + else + { + // Update the value + _selectedProfile = value; + } + NotifyOfPropertyChange(() => SelectedProfile); NotifyOfPropertyChange(() => SelectedProfileName); } @@ -230,6 +239,7 @@ namespace Artemis.ViewModels.Profiles public void Activate() { + _selectedProfile?.Activate(_luaManager); ProfileViewModel.Activate(); _saveTimer.Start(); } @@ -247,20 +257,20 @@ namespace Artemis.ViewModels.Profiles private void LoadProfiles() { ProfileNames.Clear(); - if (_gameModel == null || _deviceManager.ActiveKeyboard == null) + if (_effectModel == null || _deviceManager.ActiveKeyboard == null) return; - ProfileNames.AddRange(ProfileProvider.GetProfileNames(_deviceManager.ActiveKeyboard, _gameModel)); + ProfileNames.AddRange(ProfileProvider.GetProfileNames(_deviceManager.ActiveKeyboard, _effectModel)); // If a profile name was provided, try to load it ProfileModel lastProfileModel = null; if (!string.IsNullOrEmpty(LastProfile)) - lastProfileModel = ProfileProvider.GetProfile(_deviceManager.ActiveKeyboard, _gameModel, LastProfile); + lastProfileModel = ProfileProvider.GetProfile(_deviceManager.ActiveKeyboard, _effectModel, LastProfile); if (lastProfileModel != null) SelectedProfile = lastProfileModel; else - SelectedProfile = ProfileProvider.GetProfile(_deviceManager.ActiveKeyboard, _gameModel, + SelectedProfile = ProfileProvider.GetProfile(_deviceManager.ActiveKeyboard, _effectModel, ProfileNames.FirstOrDefault()); } @@ -293,7 +303,7 @@ namespace Artemis.ViewModels.Profiles IParameter[] args = { - new ConstructorArgument("dataModel", _gameModel.DataModel), + new ConstructorArgument("dataModel", _effectModel.DataModel), new ConstructorArgument("layer", layer) }; WindowService.ShowDialog(args); @@ -502,7 +512,7 @@ namespace Artemis.ViewModels.Profiles KeyboardSlug = _deviceManager.ActiveKeyboard.Slug, Width = _deviceManager.ActiveKeyboard.Width, Height = _deviceManager.ActiveKeyboard.Height, - GameName = _gameModel.Name + GameName = _effectModel.Name }; if (!ProfileProvider.IsProfileUnique(profile)) @@ -624,10 +634,10 @@ namespace Artemis.ViewModels.Profiles } // Verify the game - if (profile.GameName != _gameModel.Name) + if (profile.GameName != _effectModel.Name) { DialogService.ShowErrorMessageBox( - $"Oh oops! This profile is ment for {profile.GameName}, not {_gameModel.Name} :c"); + $"Oh oops! This profile is ment for {profile.GameName}, not {_effectModel.Name} :c"); return; } @@ -690,7 +700,7 @@ namespace Artemis.ViewModels.Profiles return; try { - SelectedProfile?.Activate(_luaManager); + _luaManager.SetupLua(SelectedProfile); _luaManager.OpenEditor(); } catch (Exception e)