diff --git a/Assets/Scripts/GameFSM/MenuState.cs b/Assets/Scripts/GameFSM/MenuState.cs index 8360bf7..07763f1 100644 --- a/Assets/Scripts/GameFSM/MenuState.cs +++ b/Assets/Scripts/GameFSM/MenuState.cs @@ -64,12 +64,6 @@ public class MenuState : IState subState = MenuSubStates.Choosing;//субстейт и так ставится в энтере } - //если пришли из игры, то нужно начать с открытия меню - public MenuState(bool fromGameplay) : this() - { - subState = MenuSubStates.OpeningMenu;//субстейт и так ставится в энтере - } - public void enter() { PullRefs(); @@ -114,6 +108,8 @@ public class MenuState : IState gm.player2score = 0; gm.vsBotScore = 0; + VitrinaView.Instance.Deactivate(); + gm.moveMade = false; } diff --git a/Assets/Scripts/GameFSM/StartRoundState.cs b/Assets/Scripts/GameFSM/StartRoundState.cs index dca6a40..f994c78 100644 --- a/Assets/Scripts/GameFSM/StartRoundState.cs +++ b/Assets/Scripts/GameFSM/StartRoundState.cs @@ -30,6 +30,8 @@ public class StartRoundState : IState DualAvatarController.Instance.ShowCharacters(); } + VitrinaView.Instance.ActivateIfNeed(); + gm.stateMachine.ChangeState(new StartTurnState()); } catch (Exception e) diff --git a/Assets/Scripts/GameFSM/StateRouter.cs b/Assets/Scripts/GameFSM/StateRouter.cs index 24841f3..c86f22d 100644 --- a/Assets/Scripts/GameFSM/StateRouter.cs +++ b/Assets/Scripts/GameFSM/StateRouter.cs @@ -57,6 +57,16 @@ public static class StateRouter var currentPrize = CharacterController.CurrentCharacter.prize; bool currentBotHasNonEmptyPrize = CharacterController.CurrentCharacter.HasPrize && currentPrize is not EmptyPrize; + + if(currentPrize is VitrinaPrize vitrinaPrize) + { + int[] readyBoxes = PrizeStandController.GetReadyBoxes(); + if (VitrinaPanel.FindIntersection(readyBoxes, vitrinaPrize.Boxes).Length == 0) + { + currentBotHasNonEmptyPrize = false; + } + } + if (!currentBotHasNonEmptyPrize) return NextBot(); diff --git a/Assets/Scripts/PrizeSystem/VitrinaView.cs b/Assets/Scripts/PrizeSystem/VitrinaView.cs index 99cde33..b70de08 100644 --- a/Assets/Scripts/PrizeSystem/VitrinaView.cs +++ b/Assets/Scripts/PrizeSystem/VitrinaView.cs @@ -8,7 +8,20 @@ using UnityEngine.UI; //Это как шкала че есть в витрине чего нет. public class VitrinaView : MonoBehaviour { - public static VitrinaView instance; + private static VitrinaView instance; + public static VitrinaView Instance + { + get + { + if (instance == null) + { + instance = GameObject.FindObjectOfType(); + CharacterEventBus.Instance.OnCharacterAppeared.AddListener(instance.ActivateIfNeed); + instance.Deactivate(); + } + return instance; + } + } [SerializeField] private List Cells; @@ -20,16 +33,21 @@ public class VitrinaView : MonoBehaviour [SerializeField] private Color AvailableEmptyColor; [SerializeField] private Color NotAvailableColor; - private void Start() - { - instance = this; - CharacterEventBus.Instance.OnCharacterAppeared.AddListener(ActivateIfNeed); - Deactivate(); - - } + //private void Start() + //{ + // instance = this; + // CharacterEventBus.Instance.OnCharacterAppeared.AddListener(ActivateIfNeed); + + //} public void ActivateIfNeed() { + if (GameManager.instance.gameMode == GameMode.pvp) + { + Deactivate(); + return; + } + bool hasPrize = CharacterController.CurrentCharacter.HasPrize; if (hasPrize && CharacterController.CurrentCharacter.prize is VitrinaPrize vitrinaPrize) {