264 lines
8.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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