diff --git a/src/ConfigManager.cs b/src/ConfigManager.cs index 3e07275..0ad44a5 100644 --- a/src/ConfigManager.cs +++ b/src/ConfigManager.cs @@ -94,6 +94,12 @@ public static class ConfigManager public static string TelemetryClientId { get; set; } = ""; public static string LastTelemetrySentUtc { get; set; } = ""; + /// 点击特效是否处于激活状态(点击特效开关) + public static bool IsClickEffectActive => IsEffectEnabled; + + /// 拖尾效果是否处于激活状态(点击特效或常驻拖尾任意一个开启) + public static bool IsTrailEffectActive => IsEffectEnabled || EnableAlwaysTrailEffect; + private static List _profiles = new List(); public static void Load() diff --git a/src/ControlPanelWindow.xaml b/src/ControlPanelWindow.xaml index 06c72d9..04b316b 100644 --- a/src/ControlPanelWindow.xaml +++ b/src/ControlPanelWindow.xaml @@ -437,9 +437,9 @@ - - + + diff --git a/src/ControlPanelWindow.xaml.cs b/src/ControlPanelWindow.xaml.cs index dbbaafc..ad4933a 100644 --- a/src/ControlPanelWindow.xaml.cs +++ b/src/ControlPanelWindow.xaml.cs @@ -579,6 +579,7 @@ private void LoadSettingsCore() UpdateColorPreview(ConfigManager.ParticleColor); UpdateStartSilentInterlock(); + UpdateClickEffectPanelVisibility(); UpdateEnvironmentFilterInterlock(); SliderScale.Value = ConfigManager.EffectScale; @@ -773,6 +774,18 @@ private void CheckAutoStart_Changed(object sender, RoutedEventArgs e) UpdateStartSilentInterlock(); } + private void CheckMasterSwitch_Changed(object sender, RoutedEventArgs e) + { + if (!IsLoaded) return; + UpdateClickEffectPanelVisibility(); + } + + private void UpdateClickEffectPanelVisibility() + { + bool enabled = CheckMasterSwitch.IsChecked == true; + PanelClickEffectOptions.Visibility = enabled ? Visibility.Visible : Visibility.Collapsed; + } + private void CheckRunAsAdmin_Changed(object sender, RoutedEventArgs e) { if (!IsLoaded) return; diff --git a/src/OverlayManager.cs b/src/OverlayManager.cs index 5662819..2f4e38b 100644 --- a/src/OverlayManager.cs +++ b/src/OverlayManager.cs @@ -489,6 +489,8 @@ private void CancelScreenshotFailsafeTimer() private void OnMouseDownExt(object? sender, MouseEventExtArgs e) { + // 点击特效开关 + if (!ConfigManager.IsClickEffectActive) return; if (!CanRenderEffects()) return; bool isLeft = e.Button == MouseButtons.Left; @@ -527,6 +529,8 @@ private void OnMouseDownExt(object? sender, MouseEventExtArgs e) private void OnMouseMoveExt(object? sender, MouseEventExtArgs e) { + // 拖尾仅在点击特效开启或常驻拖尾开启时渲染 + if (!ConfigManager.IsTrailEffectActive) return; if (!CanRenderEffects()) return; bool cursorVisible = CursorIsVisible(); @@ -561,9 +565,13 @@ private void OnMouseUpExt(object? sender, MouseEventExtArgs e) _activePointerOverlay = null; } + /// + /// 检查渲染环境条件(覆盖窗口存在性、环境过滤、光标可见性)。 + /// 业务开关(点击特效、常驻拖尾)由各调用点自行判断。 + /// private bool CanRenderEffects() { - if (!ConfigManager.IsEffectEnabled || _overlays.Count == 0) + if (_overlays.Count == 0) { ReleasePointerState(); return false;