using PrizeSystem; using UnityEngine; public class TakeOrRiskState : IState { private IState nextState; private TakeOrRiskPanel takeOrRiskPanel; public float timeElapsed = 0; public float timeToOpen = 4; public bool opened = false; public TakeOrRiskState(IState nextState, TakeOrRiskPanel takeOrRiskPanel) { this.nextState = nextState; this.takeOrRiskPanel = takeOrRiskPanel; } public void enter() { } private void TakeOrRiskPanel_OnComplete(TakeOrRiskOption selectedOption) { if (selectedOption == TakeOrRiskOption.Take) { if (CharacterController.CurrentCharacter.HasPrize) { PrizeSystemManager.GivePrize(CharacterController.CurrentCharacter.prize); CharacterController.CurrentCharacter.HasPrize = false; } GameManager.instance.stateMachine.ChangeState(new PrizeState(StateRouter.ToMenu())); } else { //Следующий бот GameManager.instance.stateMachine.ChangeState(nextState); } } public void exit() { takeOrRiskPanel.OnComplete -= TakeOrRiskPanel_OnComplete; } public void update() { if (!opened) { if (timeElapsed < timeToOpen) timeElapsed += Time.deltaTime; else { takeOrRiskPanel.gameObject.SetActive(true); takeOrRiskPanel.OnComplete += TakeOrRiskPanel_OnComplete; opened = true; } } } }