using Godot; using System.Collections.Generic; namespace TheGame { public partial class SettingsMenu : Control { // UI References private Label _titleLabel; private TabContainer _tabContainer; // General Tab private Label _languageLabel; private OptionButton _languageOption; // Video Tab private Label _fullscreenLabel; private CheckBox _fullscreenCheck; // Audio Tab private Label _masterLabel; private HSlider _masterSlider; private Label _backgroundLabel; private HSlider _backgroundSlider; private Label _effectsLabel; private HSlider _effectsSlider; private Label _radioLabel; private HSlider _radioSlider; // Buttons private Button _applyButton; private Button _cancelButton; private Button _backButton; // Settings private GameSettings _settings; private GameSettings _originalSettings; public override void _Ready() { // Lägg till i localized_ui gruppen för språkuppdateringar AddToGroup("localized_ui"); // Sätt process mode baserat på om spelet är pausat eller inte if (GetTree().Paused) { ProcessMode = ProcessModeEnum.WhenPaused; } else { ProcessMode = ProcessModeEnum.Always; } // Hämta UI referenser GetUIReferences(); // Ladda nuvarande inställningar _settings = GameSettings.Instance; _originalSettings = new GameSettings { Fullscreen = _settings.Fullscreen, MasterVolume = _settings.MasterVolume, BackgroundVolume = _settings.BackgroundVolume, EffectsVolume = _settings.EffectsVolume, RadioVolume = _settings.RadioVolume, Language = _settings.Language }; // Sätt process mode på alla UI element så de fungerar när pausat SetProcessModeRecursive(this, ProcessModeEnum.WhenPaused); // Initiera UI InitializeLanguageOptions(); LoadCurrentSettings(); UpdateLocalization(); } public override void _Notification(int what) { if (what == NotificationWMCloseRequest) { // Settings menyn är en popup, så vi stänger bara den själv _on_cancel_button_pressed(); } } private void SetProcessModeRecursive(Node node, ProcessModeEnum mode) { if (node is Control control) { control.ProcessMode = mode; } foreach (Node child in node.GetChildren()) { SetProcessModeRecursive(child, mode); } } private void GetUIReferences() { _titleLabel = GetNode