using PrizeSystem; using UnityEngine; public class SettingFunctions : MonoBehaviour { [SerializeField] private TextInput _textInputPrefab; [SerializeField] private RectTransform _canvas; [SerializeField] private SettingsScreen _settingsScreen; [SerializeField] private CharacterPrizeConfigurator _prizesConfigurator; [SerializeField] private ScreenTestPanel _screenTestPanelPrefab; [SerializeField] private InputTestPanel _inputTestPanelPrefab; [SerializeField] private SettingsPasswordPanel _passwordPanelPrefab; [SerializeField] private MachineCountersPanel _countersPanelPrefab; [SerializeField] private QrTestPanel _qrTestPanelPrefab; [SerializeField] private AudioClip _qrTestUnavailableClip; [SerializeField] private AudioClip[] _soundTestReplicas; private ScreenTestPanel _activeScreenTestPanel; private InputTestPanel _activeInputTestPanel; private SettingsPasswordPanel _activePasswordPanel; private MachineCountersPanel _activeCountersPanel; private QrTestPanel _activeQrTestPanel; private void Awake() { _prizesConfigurator.OnClosed += ReturnToSettings; } private void OnDestroy() { _prizesConfigurator.OnClosed -= ReturnToSettings; if (_activeScreenTestPanel != null) _activeScreenTestPanel.OnClosed -= CloseScreenTest; if (_activeInputTestPanel != null) _activeInputTestPanel.OnClosed -= CloseInputTest; if (_activePasswordPanel != null) { _activePasswordPanel.OnAccepted -= ClosePasswordPanel; _activePasswordPanel.OnCancelled -= ClosePasswordPanel; } if (_activeCountersPanel != null) _activeCountersPanel.OnClosed -= CloseCountersPanel; if (_activeQrTestPanel != null) _activeQrTestPanel.OnClosed -= CloseQrTest; } public void ResetBalance() => PaymentSystem.ResetBalance(); public void ResetPrizeError() => PrizeSystemManager.SetPrizingError(false); public void ConfigurePrizes() { _prizesConfigurator.Open(); ControlsPerformer.Instance.SetControlable(_prizesConfigurator); } public void EnterNumberAdmin() { string oldNumber = PlayerPrefs.GetString(PrefsKeyVault.NUMBER_ADMIN); var textInput = Instantiate(_textInputPrefab, _canvas); textInput.Initialize(11, Alphabets.DIGITS, oldNumber); ControlsPerformer.Instance.SetControlable(textInput); textInput.OnComplete += (result) => { PlayerPrefs.SetString(PrefsKeyVault.NUMBER_ADMIN, result); SettingsManager.TriggerSettingsChanged(); _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_settingsScreen); Destroy(textInput.gameObject); }; } public void EnterNumberSupport() { string oldNumber = PlayerPrefs.GetString(PrefsKeyVault.NUMBER_SUPPORT); var textInput = Instantiate(_textInputPrefab, _canvas); textInput.Initialize(11, Alphabets.DIGITS, oldNumber); ControlsPerformer.Instance.SetControlable(textInput); textInput.OnComplete += (result) => { PlayerPrefs.SetString(PrefsKeyVault.NUMBER_SUPPORT, result); SettingsManager.TriggerSettingsChanged(); _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_settingsScreen); Destroy(textInput.gameObject); }; } public void ScreenTest() { if (_activeScreenTestPanel != null) return; _activeScreenTestPanel = Instantiate(_screenTestPanelPrefab, _canvas); _activeScreenTestPanel.OnClosed += CloseScreenTest; _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_activeScreenTestPanel); _activeScreenTestPanel.Open(); } public void InputTest() { if (_activeInputTestPanel != null) return; _activeInputTestPanel = Instantiate(_inputTestPanelPrefab, _canvas); _activeInputTestPanel.OnClosed += CloseInputTest; _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_activeInputTestPanel); _activeInputTestPanel.Open(); } public void SoundTest() { if (SoundManager.instance == null) { Debug.LogWarning("SoundManager не инициализирован"); return; } if (_soundTestReplicas == null || _soundTestReplicas.Length == 0) { Debug.LogWarning("Не заданы реплики для теста звука"); return; } int firstReplicaIndex = Random.Range(0, _soundTestReplicas.Length); for (int offset = 0; offset < _soundTestReplicas.Length; offset++) { AudioClip replica = _soundTestReplicas[(firstReplicaIndex + offset) % _soundTestReplicas.Length]; if (replica == null) continue; SoundManager.instance.playClip(replica); return; } Debug.LogWarning("В списке теста звука нет назначенных реплик"); } public void HopperTest() { var prize = PrizeUtils.CreatePrize(CountablePrizeType.Hopper, 1); PrizeSystemManager.GivePrize(prize); } public void QrTest() { if (_activeQrTestPanel != null) return; _activeQrTestPanel = Instantiate(_qrTestPanelPrefab, _canvas); if (_activeQrTestPanel.Initialize() == false) { Destroy(_activeQrTestPanel.gameObject); _activeQrTestPanel = null; if (SoundManager.instance != null) SoundManager.instance.playClip(_qrTestUnavailableClip); return; } _activeQrTestPanel.OnClosed += CloseQrTest; _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_activeQrTestPanel); } public void SetPassword() { if (_activePasswordPanel != null) return; _activePasswordPanel = Instantiate(_passwordPanelPrefab, _canvas); _activePasswordPanel.OnAccepted += ClosePasswordPanel; _activePasswordPanel.OnCancelled += ClosePasswordPanel; _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_activePasswordPanel); _activePasswordPanel.OpenForPasswordChange(); } public void ResetPassword() { SettingsPasswordStore.Reset(); _settingsScreen.BlockControls(); } public void OpenCounters() { if (_activeCountersPanel != null) return; _activeCountersPanel = Instantiate(_countersPanelPrefab, _canvas); _activeCountersPanel.OnClosed += CloseCountersPanel; _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_activeCountersPanel); _activeCountersPanel.Open(); } public void OpenPrizesRest() { } private void ReturnToSettings() { _settingsScreen.BlockControls(); ControlsPerformer.Instance.SetControlable(_settingsScreen); } private void CloseScreenTest() { _activeScreenTestPanel.OnClosed -= CloseScreenTest; Destroy(_activeScreenTestPanel.gameObject); _activeScreenTestPanel = null; ReturnToSettings(); } private void CloseInputTest() { _activeInputTestPanel.OnClosed -= CloseInputTest; Destroy(_activeInputTestPanel.gameObject); _activeInputTestPanel = null; ReturnToSettings(); } private void ClosePasswordPanel() { _activePasswordPanel.OnAccepted -= ClosePasswordPanel; _activePasswordPanel.OnCancelled -= ClosePasswordPanel; Destroy(_activePasswordPanel.gameObject); _activePasswordPanel = null; ReturnToSettings(); } private void CloseCountersPanel() { _activeCountersPanel.OnClosed -= CloseCountersPanel; Destroy(_activeCountersPanel.gameObject); _activeCountersPanel = null; ReturnToSettings(); } private void CloseQrTest() { _activeQrTestPanel.OnClosed -= CloseQrTest; Destroy(_activeQrTestPanel.gameObject); _activeQrTestPanel = null; ReturnToSettings(); } }