using UnityEngine; public class MenuSettingsTransit : MonoBehaviour { [SerializeField] private Menu _menu; [SerializeField] private SettingsScreen _settingsScreen; [SerializeField] private SettingsPasswordPanel _passwordPanelPrefab; private SettingsPasswordPanel _activePasswordPanel; private void OnDestroy() { if (_activePasswordPanel == null) return; _activePasswordPanel.OnAccepted -= AcceptSettingsAccess; _activePasswordPanel.OnCancelled -= CancelSettingsAccess; } public void GotoSettings() { if (_activePasswordPanel != null) return; _menu.ControlsEnabled = false; _settingsScreen.gameObject.SetActive(true); if (SettingsPasswordStore.HasPassword == false) { EnterSettings(); return; } _activePasswordPanel = Instantiate(_passwordPanelPrefab, _settingsScreen.transform); _activePasswordPanel.OnAccepted += AcceptSettingsAccess; _activePasswordPanel.OnCancelled += CancelSettingsAccess; _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_activePasswordPanel); _activePasswordPanel.OpenForSettingsAccess(); } public void GotoMenu() { ClosePasswordPanel(); _settingsScreen.gameObject.SetActive(false); SettingsManager.SaveSettings(); _menu.ControlsEnabled = true; ControlsPerformer.Instance.SetControlable(_menu); } private void EnterSettings() { _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_settingsScreen); } private void AcceptSettingsAccess() { ClosePasswordPanel(); EnterSettings(); } private void CancelSettingsAccess() { ClosePasswordPanel(); _settingsScreen.gameObject.SetActive(false); _menu.ControlsEnabled = true; ControlsPerformer.Instance.SetControlable(_menu); } private void ClosePasswordPanel() { if (_activePasswordPanel == null) return; _activePasswordPanel.OnAccepted -= AcceptSettingsAccess; _activePasswordPanel.OnCancelled -= CancelSettingsAccess; Destroy(_activePasswordPanel.gameObject); _activePasswordPanel = null; } }