chip-gameV3/Assets/Scripts/UI/Transitions/MenuSettingsTransit.cs

82 lines
2.3 KiB
C#

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;
}
}