using UnityEngine; using UnityEngine.UIElements; using UnityEngine.SceneManagement; namespace MegaKoop.UI { /// /// Controller pro Main Menu s UI Toolkit /// public class MainMenuController : MonoBehaviour { [Header("UI Document")] [SerializeField] private UIDocument uiDocument; [SerializeField] private StyleSheet mainMenuStyles; [Header("Scene Names")] [SerializeField] private string gameSceneName = "GameScene"; [Header("Controllers")] [SerializeField] private MultiplayerLobbyController multiplayerLobbyController; [Header("Audio")] [SerializeField] private AudioSource audioSource; [SerializeField] private AudioClip buttonClickSound; [SerializeField] private AudioClip buttonHoverSound; // Root element private VisualElement root; // Main Menu Elements private Button newGameButton; private Button continueButton; private Button multiplayerButton; private Button settingsButton; private Button quitButton; // Settings Panel Elements private VisualElement settingsPanel; private DropdownField qualityDropdown; private Toggle fullscreenToggle; private DropdownField resolutionDropdown; private Slider masterVolumeSlider; private Slider musicVolumeSlider; private Slider sfxVolumeSlider; private Button applyButton; private Button backButton; private void OnEnable() { // Získání UI Document if (uiDocument == null) uiDocument = GetComponent(); // If there's no UIDocument, this scene likely uses UGUI. Disable this Toolkit controller. if (uiDocument == null) { Debug.LogWarning("[MainMenuController] UIDocument not found. This script is for UI Toolkit. If you use UGUI, remove this component."); enabled = false; return; } // Získání MultiplayerLobbyController if (multiplayerLobbyController == null) multiplayerLobbyController = GetComponent(); root = uiDocument.rootVisualElement; if (root == null) { Debug.LogWarning("[MainMenuController] rootVisualElement is null. Disabling Toolkit controller."); enabled = false; return; } // Přidání USS stylů (pokud nejsou už v UXML) if (mainMenuStyles != null && !root.styleSheets.Contains(mainMenuStyles)) { root.styleSheets.Add(mainMenuStyles); } // Inicializace UI elementů InitializeMenuButtons(); InitializeSettingsPanel(); // Registrace event handlerů RegisterButtonEvents(); // Načtení nastavení LoadSettings(); } private void OnDisable() { // Odregistrování event handlerů UnregisterButtonEvents(); } #region Initialization private void InitializeMenuButtons() { newGameButton = root.Q