using TMPro; using UnityEngine; 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); ComWrapper.onCoinAdded?.AddListener(RefreshUI); ComWrapper.onCoinRemoved?.AddListener(RefreshUI); RefreshUI(); } private void OnDisable() { SettingsManager.OnSettingsChanged?.RemoveListener(RefreshUI); ComWrapper.onCoinAdded?.RemoveListener(RefreshUI); ComWrapper.onCoinRemoved?.RemoveListener(RefreshUI); } public void ResetCoinsCounter() { PlayerPrefs.SetInt(PrizeSystem.key_cashNul, 0); RefreshUI(); } public void ResetPrizes() { PrizeSystem.ResetPrizeCounters(); RefreshUI(); } //Смены состояний public void EnterSpecialPrize() => gm.stateMachine.ChangeState(new EnterSpecialPrizeState(CurrentState)); 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(KeyVault.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 QrTest() => gm.stateMachine.ChangeState(new CheckQrState(CurrentState)); public void EnterIO_test() => gm.stateMachine.ChangeState(new IoTestState(IO_test, CurrentState)); //Панель2 public void HopperTest() { if(SettingsManager.GetBool("Prizing", false)) { PrizeSystem.GivePrize(new Prize(PrizeType.Hopper, 1)); } else { SoundManager.instance.playClip(prizingDisabled); } } public void SoundTest() => SoundManager.instance.playClip(testSound); public void ScreenTest() => ScreenTester.SetActive(true); public void ResetBalance() { ComWrapper.Balance = 0; PlayerPrefs.SetInt("CoinsCount", 0); SettingsManager.OnSettingsChanged?.Invoke(); } string PRIZE_BASE = "Счетчик призов "; string STARTS_BASE = "Выручка "; string NULLABLE = "(обнуляемый)"; string UNNULLABLE = "(глобальный)"; public TextMeshProUGUI starts, startsNul, prize, prizeNul; void RefreshUI() { string valutaName = PlayerPrefs.GetString("ValutaName", "руб."); starts.text = STARTS_BASE + UNNULLABLE + ": " + PlayerPrefs.GetInt(PrizeSystem.key_cash) + " " + valutaName; startsNul.text = STARTS_BASE + NULLABLE + ": " + PlayerPrefs.GetInt(PrizeSystem.key_cashNul) + " " + valutaName; //prize.text = PRIZE_BASE + UNNULLABLE + ": " + PlayerPrefs.GetInt(PrizeSystem.key_prizesgiven); //prizeNul.text = PRIZE_BASE + NULLABLE + ": " + PlayerPrefs.GetInt(PrizeSystem.key_prizesgivenNul); prize.text = PRIZE_BASE + UNNULLABLE + ": " + PrizeSystem.GetPrizesCounterString(); prizeNul.text = PRIZE_BASE + NULLABLE + ": " + PrizeSystem.GetPrizesCounterNullableString(); } void RefreshUI(int a) => RefreshUI(); }