using TMPro; using UnityEngine; using PrizeSystem; public class SettingsActions : MonoBehaviour { [SerializeField] GameObject IO_test; [SerializeField] AudioClip testSound; [SerializeField] GameObject ScreenTester; [SerializeField] AudioClip prizingDisabled; private GameManager gm => GameManager.instance; private IState CurrentState => GameManager.instance.stateMachine.currentState; private void OnEnable() { SettingsManager.OnSettingsChanged?.AddListener(RefreshUI); PaymentSystem.onCoinAdded += RefreshUI; PaymentSystem.onCoinRemoved += RefreshUI; RefreshUI(); } private void OnDisable() { SettingsManager.OnSettingsChanged?.RemoveListener(RefreshUI); PaymentSystem.onCoinAdded -= RefreshUI; PaymentSystem.onCoinRemoved -= RefreshUI; } public void ResetCoinsCounter() { PlayerPrefs.SetInt(PrefsKeyVault.CASH_COUNTER_NUL, 0); RefreshUI(); } public void ResetPrizes() { PrizeSystemManager.ResetPrizeCounters(); RefreshUI(); } //Смены состояний public void EnterPvePrice() => gm.stateMachine.ChangeState(new EnterPricePVEState(CurrentState)); public void EnterPveRevengePrice() => gm.stateMachine.ChangeState(new EnterPricePVERevengeState(CurrentState)); public void EnterPvpPrice() => gm.stateMachine.ChangeState(new EnterPricePVPState(CurrentState)); public void EnterSupportNumber() => gm.stateMachine.ChangeState(new GetNumberState(CurrentState)); public void EnterPrizesAvailable() => gm.stateMachine.ChangeState(new EnterPrizesAvailableState(CurrentState)); public void ResetPrizeError() => PlayerPrefs.SetInt(PrefsKeyVault.PRIZING_ERROR_REGISTRED, 0); public void EnterPrizesSettings() => gm.stateMachine.ChangeState(new EnterPrizesAvailableState(CurrentState)); public void ConfigurePrizes() => gm.stateMachine.ChangeState(new EnterPrizesForCharactersState(CurrentState)); public void ConfigurePulsesToResetDifficulty() => gm.stateMachine.ChangeState(new EnterPulsesToResetDifficulty(CurrentState)); public void ConfigureValutaPerPulse() => gm.stateMachine.ChangeState(new EnterValutaPerImpulse(CurrentState)); public void EnterValutaName() => gm.stateMachine.ChangeState(new EnterValutaNameState(CurrentState)); public void EnterIO_test() => gm.stateMachine.ChangeState(new IoTestState(IO_test, CurrentState)); public void EnterNumberTech() => gm.stateMachine.ChangeState(new EnterNumberTech(CurrentState)); //Панель2 public void HopperTest() { if (SettingsManager.GetBool("Prizing", false)) { PrizeSystemManager.GivePrize(new CountablePrize(CountablePrizeType.Hopper, 1)); } else { SoundManager.instance.playClip(prizingDisabled); } } public void SoundTest() => SoundManager.instance.playClip(testSound); public void ScreenTest() => ScreenTester.SetActive(true); public void ResetBalance() { PaymentSystem.ResetBalance(); SettingsManager.OnSettingsChanged?.Invoke(); } string PRIZE_BASE = "Счетчик призов "; string STARTS_BASE = "Выручка "; string NULLABLE = "(обнуляемый)"; string UNNULLABLE = "(глобальный)"; public TextMeshProUGUI starts, startsNul, prize, prizeNul; void RefreshUI() { var valutaName = PaymentSystem.ValutaName; starts.text = STARTS_BASE + UNNULLABLE + ": " + PlayerPrefs.GetInt(PrefsKeyVault.CASH_COUNTER) + " " + valutaName; startsNul.text = STARTS_BASE + NULLABLE + ": " + PlayerPrefs.GetInt(PrefsKeyVault.CASH_COUNTER_NUL) + " " + valutaName; prize.text = PRIZE_BASE + UNNULLABLE + ": " + PrizeSystemManager.GetPrizesCounterString(); prizeNul.text = PRIZE_BASE + NULLABLE + ": " + PrizeSystemManager.GetPrizesCounterNullableString(); } void RefreshUI(int a) => RefreshUI(); }