using UnityEngine; using UnityEngine.UIElements; using UnityEngine.Audio; using UnityEngine.InputSystem; using System.Collections.Generic; using System.Linq; using System; using System.Threading.Tasks; using OnlyScove.Scripts; using Hallucinate.Audio; using PrimeTween; namespace Hallucinate.UI { public class SettingsController : BaseUIController { private VisualElement _sidebar; private VisualElement _tabsColumn; private Label _tabTitle; private ScrollView _content; private Dictionary _tabButtons = new Dictionary(); private string _activeTab = "GENERAL"; private Tween _hoverTimer; private bool _isExpanded; // Osu Style Scroll Tracking private readonly Dictionary _sectionHeaders = new Dictionary(); private bool _isManualScrolling; // Advanced Mouse Metrics private Label _mouseMetricsLabel; // FPS State private bool _fpsVisible; // Hover Tracking for Arrow Key Slider Control private Slider _hoveredSlider; private Action _hoveredOnChanged; private float _sliderMin, _sliderMax; // Audio Slider Tracking for Sync private readonly Dictionary _audioSliders = new Dictionary(); // Osu-style Volume Overlay private VisualElement _volumeContainer; private VisualElement _masterRing; private Label _masterVolLabel; private Dictionary _subRings = new Dictionary(); private string _hoveredSubVolume = null; private float _masterVol = 80f; private int _overlayActiveCount = 0; public override void Initialize(VisualElement uxmlRoot, UIManager manager) { base.Initialize(uxmlRoot, manager); _sidebar = root.Q("Sidebar"); _tabsColumn = root.Q("TabsColumn"); _tabTitle = root.Q