//refactored 12.01.26 using UnityEngine; public class SettingsState : IState { float elapsedTime = 0; float timeToExit = 3f; public void enter() { GameManager.instance.AdminPanel.SetActive(true); elapsedTime = 0; } public void exit() { GameManager.instance.AdminPanel.SetActive(false); } public void update() { if (ShouldExit()) { SoundManager.instance.playChoose(); GameManager.instance.stateMachine.ChangeState(new MenuState()); } } private bool ShouldExit() { //опрашиваем кнопки bool startButtonsPressed = In.GetButton(ButtonPinMapping.startOnePlayer) && In.GetButton(ButtonPinMapping.startTwoPlayers); bool serviceButtonPressed = In.GetButton(ButtonPinMapping.secret) || Input.GetKey(KeyCode.F5); bool exitPressed = startButtonsPressed || serviceButtonPressed; //считаем таймеры if (exitPressed) elapsedTime += Time.deltaTime; else elapsedTime -= Time.deltaTime; //подгоняем прошедшее время к интервалу elapsedTime = Mathf.Clamp(elapsedTime, 0f, timeToExit); //Если жали столько, сколько надо для выхода - надо выходить return elapsedTime == timeToExit; } }