Добавить таймеры и шкалы прогресса, расширить призовую систему и контроль остатков, восстановить настройки и обновить таблицу призов главного меню.
284 lines
9.1 KiB
C#
284 lines
9.1 KiB
C#
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 PrizeStockPanel _prizeStockPanelPrefab;
|
||
[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 PrizeStockPanel _activePrizeStockPanel;
|
||
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 (_activePrizeStockPanel != null)
|
||
_activePrizeStockPanel.OnClosed -= ClosePrizeStockPanel;
|
||
|
||
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.PlaySfx(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.PlaySfx(_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()
|
||
{
|
||
if (_activePrizeStockPanel != null)
|
||
return;
|
||
|
||
_activePrizeStockPanel = Instantiate(_prizeStockPanelPrefab, _canvas);
|
||
_activePrizeStockPanel.OnClosed += ClosePrizeStockPanel;
|
||
_settingsScreen.BlockControls();
|
||
ControlsPerformer.Instance.SetControlable(_activePrizeStockPanel);
|
||
_activePrizeStockPanel.Open();
|
||
}
|
||
|
||
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 ClosePrizeStockPanel()
|
||
{
|
||
_activePrizeStockPanel.OnClosed -= ClosePrizeStockPanel;
|
||
Destroy(_activePrizeStockPanel.gameObject);
|
||
_activePrizeStockPanel = null;
|
||
ReturnToSettings();
|
||
}
|
||
|
||
private void CloseQrTest()
|
||
{
|
||
_activeQrTestPanel.OnClosed -= CloseQrTest;
|
||
Destroy(_activeQrTestPanel.gameObject);
|
||
_activeQrTestPanel = null;
|
||
ReturnToSettings();
|
||
}
|
||
}
|