diff --git a/Lithium/MainWindow.xaml b/Lithium/MainWindow.xaml index 1932cdb..bdfbac9 100644 --- a/Lithium/MainWindow.xaml +++ b/Lithium/MainWindow.xaml @@ -116,7 +116,7 @@ - + diff --git a/Lithium/MainWindow.xaml.cs b/Lithium/MainWindow.xaml.cs index 5342af6..a4e63cf 100644 --- a/Lithium/MainWindow.xaml.cs +++ b/Lithium/MainWindow.xaml.cs @@ -451,7 +451,40 @@ namespace Lithium private void ToggleCustomSet_Click(object sender, RoutedEventArgs e) { customSetEnabled = !customSetEnabled; - UpdateCustomSetConsole(customSetEnabled ? "Set is ON" : "Set is OFF"); + UpdateCustomSetState(); + } + + private void MainTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + UpdateCustomSetState(); + } + + private void UpdateCustomSetState() + { + var selectedTab = MainTabControl.SelectedItem as TabItem; + bool onCustomTab = selectedTab != null && + string.Equals(selectedTab.Header?.ToString(), "Custom Set Builder", StringComparison.OrdinalIgnoreCase); + + if (customSetEnabled && onCustomTab) + { + if (double.TryParse(RecoilXTextBox.Text, System.Globalization.NumberStyles.Float, + System.Globalization.CultureInfo.InvariantCulture, out double x) && + double.TryParse(RecoilYTextBox.Text, System.Globalization.NumberStyles.Float, + System.Globalization.CultureInfo.InvariantCulture, out double y)) + { + RecoilEngine.CustomModeActive = true; + RecoilEngine.CustomRecoilX = x; + RecoilEngine.CustomRecoilY = y; + UpdateCustomSetConsole($"Custom Set ACTIVE | X:{x} Y:{y}"); + return; + } + UpdateCustomSetConsole("Error: Invalid recoil values"); + } + else + { + RecoilEngine.CustomModeActive = false; + UpdateCustomSetConsole(customSetEnabled ? "Set is ON (switch to tab to activate)" : "Set is OFF"); + } } // AA0145 diff --git a/Lithium/RecoilEngine.cs b/Lithium/RecoilEngine.cs index 8ae8da8..c575935 100644 --- a/Lithium/RecoilEngine.cs +++ b/Lithium/RecoilEngine.cs @@ -20,6 +20,10 @@ namespace Lua private static double _remainderX, _remainderY; private static double _jitterMultiplierX, _jitterMultiplierY; + public static bool CustomModeActive = false; + public static double CustomRecoilX = 0; + public static double CustomRecoilY = 0; + private static bool IsDown(int key) { return (GetAsyncKeyState(key) & 0x8000) != 0; @@ -61,12 +65,19 @@ namespace Lua { try { + int now = Environment.TickCount; + + if (CustomModeActive) + { + HandleJitter(now); + ApplyRecoil((CustomRecoilX, CustomRecoilY)); + return; + } + string setName = OperatorSets.CurrentSet; if (!OperatorSets.mergedSets.TryGetValue(setName, out var recoil)) return; - int now = Environment.TickCount; - HandleJitter(now); ApplyRecoil(recoil); }