From 1aa5ecbb1ec4be8367582f5625af9bf6ebaad240 Mon Sep 17 00:00:00 2001 From: sega Date: Thu, 16 Jul 2026 13:28:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BF=D1=80=D0=B0=D0=B7=D0=B4=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20StartRoundState?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Заменено методом --- Assets/Scenes/GameScene3D.unity | 1 - Assets/Scripts/Common/GameFSM/MenuState.cs | 3 +- .../Scripts/Common/GameFSM/ShowWinnerState.cs | 16 +++--- .../Scripts/Common/GameFSM/StartRoundState.cs | 54 ------------------- .../Common/GameFSM/StartRoundState.cs.meta | 11 ---- Assets/Scripts/Common/GameManager.cs | 39 ++++++++++---- 6 files changed, 39 insertions(+), 85 deletions(-) delete mode 100644 Assets/Scripts/Common/GameFSM/StartRoundState.cs delete mode 100644 Assets/Scripts/Common/GameFSM/StartRoundState.cs.meta diff --git a/Assets/Scenes/GameScene3D.unity b/Assets/Scenes/GameScene3D.unity index cc97275..5e51770 100644 --- a/Assets/Scenes/GameScene3D.unity +++ b/Assets/Scenes/GameScene3D.unity @@ -6680,7 +6680,6 @@ MonoBehaviour: SettingsPointer: {fileID: 334401357} timerManager: {fileID: 259182288} rulesController: {fileID: 454272343} - menuOpened: 1 gameMode: 0 coinPanel: {fileID: 1407544274} board: {fileID: 1551328425} diff --git a/Assets/Scripts/Common/GameFSM/MenuState.cs b/Assets/Scripts/Common/GameFSM/MenuState.cs index 24daca9..af73312 100644 --- a/Assets/Scripts/Common/GameFSM/MenuState.cs +++ b/Assets/Scripts/Common/GameFSM/MenuState.cs @@ -123,7 +123,8 @@ if (ui.AnimationInProcess) return; CharacterController.ResetState(); - TransitionTo(new StartRoundState(CellState.Player1)); + SoundManager.instance.playChoose(); + gm.PrepareRound(CellState.Player1); if (gm.gameMode == GameMode.pve) gm.movesAndTimeCounter.SetVisibility(true); diff --git a/Assets/Scripts/Common/GameFSM/ShowWinnerState.cs b/Assets/Scripts/Common/GameFSM/ShowWinnerState.cs index 4c254a1..1992e07 100644 --- a/Assets/Scripts/Common/GameFSM/ShowWinnerState.cs +++ b/Assets/Scripts/Common/GameFSM/ShowWinnerState.cs @@ -8,13 +8,13 @@ public class ShowWinnerState : IState Color empty = new Color(0, 0, 0, 0); CoinCounter coinCounter; - private GameManager gameManager; + private GameManager gm; GameManager GameManager { get { - if (gameManager == null) gameManager = GameManager.instance; - return gameManager; + if (gm == null) gm = GameManager.instance; + return gm; } } public enum ShowWinnerSubstates { PanelFalling, HandlingInputs, PanelRising, ExitByTime } @@ -190,13 +190,13 @@ public class ShowWinnerState : IState //bool bossUpgraded = GameManager.instance.BossUpgraded; bool bossFirst = SettingsManager.GetString("BaseBotDifficulty", "Фиксированная") != "Обычная"; CellState firstRoundPlayer = bossFirst ? CellState.Player2 : CellState.Player1; - GameManager.instance.stateMachine.ChangeState(new StartRoundState(firstPlayer: firstRoundPlayer)); + gm.PrepareRound(firstRoundPlayer); return; } else { CellState nextPlayer = GameManager.instance.currentPlayer == CellState.Player1 ? CellState.Player2 : CellState.Player2; - GameManager.instance.stateMachine.ChangeState(new StartRoundState(firstPlayer: nextPlayer)); + gm.PrepareRound(nextPlayer); } } } @@ -254,7 +254,7 @@ public class ShowWinnerState : IState FieldCleaner.Clear(); CellState nextPlayer = GameManager.currentPlayer == CellState.Player1 ? CellState.Player2 : CellState.Player1; - GameManager.stateMachine.ChangeState(new StartRoundState(nextPlayer)); + gm.PrepareRound(nextPlayer); break; case EndOption.Menu://чистим поле и переходим в меню с параметром чтобы панельки съехались обратно CharacterController.HideCharacter(); @@ -323,7 +323,7 @@ public class ShowWinnerState : IState void paymentAndRestart() { - int creditsPrice = gameManager.gameMode == GameMode.pve ? PaymentSystem.PriceRevenge : PaymentSystem.PricePvp; + int creditsPrice = gm.gameMode == GameMode.pve ? PaymentSystem.PriceRevenge : PaymentSystem.PricePvp; if (PaymentSystem.TryPay(creditsPrice)) { @@ -359,7 +359,7 @@ public class ShowWinnerState : IState //revengeprice - if (gameManager.gameMode == GameMode.pve) + if (gm.gameMode == GameMode.pve) coinCounter?.SetRevengePriceVisibility(true); } } diff --git a/Assets/Scripts/Common/GameFSM/StartRoundState.cs b/Assets/Scripts/Common/GameFSM/StartRoundState.cs deleted file mode 100644 index f994c78..0000000 --- a/Assets/Scripts/Common/GameFSM/StartRoundState.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -//Состояние, которое начинает раунд и подготавливает менеджера -public class StartRoundState : IState -{ - CellState firstPlayer;//игрок, который будет ходить первый в этом раунде - GameManager gm; - public StartRoundState(CellState firstPlayer) - { - this.firstPlayer = firstPlayer; - } - - public void enter() - { - try - { - gm = GameManager.instance; - gm.currentPlayer = firstPlayer; - - gm.timerManager.SetupTimers(gm.gameMode); - if (gm.gameMode == GameMode.pve) - gm.timerManager.SetActiveTimer(CellState.Player1);//если деремся с ботом, держим таймер включенным - - int difficultyIndex = DifficultyManager.Instance.currentOpponent; - if (gm.gameMode == GameMode.pve) - { - CharacterController.SwitchToCharacter(difficultyIndex); - } - if (gm.gameMode == GameMode.pvp) - { - DualAvatarController.Instance.ShowCharacters(); - } - - VitrinaView.Instance.ActivateIfNeed(); - - gm.stateMachine.ChangeState(new StartTurnState()); - } - catch (Exception e) - { - UnityEngine.Debug.LogError(e.ToString()); - } - } - - public void exit() - { - - } - - public void update() - { - - } - - -} diff --git a/Assets/Scripts/Common/GameFSM/StartRoundState.cs.meta b/Assets/Scripts/Common/GameFSM/StartRoundState.cs.meta deleted file mode 100644 index 7467eed..0000000 --- a/Assets/Scripts/Common/GameFSM/StartRoundState.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6cc06d87e99a1f74780310aeca5774e3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Common/GameManager.cs b/Assets/Scripts/Common/GameManager.cs index ee9a517..50a258c 100644 --- a/Assets/Scripts/Common/GameManager.cs +++ b/Assets/Scripts/Common/GameManager.cs @@ -1,10 +1,11 @@ -using TMPro; +using PrizeSystem; +using System; +using System.Collections; +using System.Text; +using TMPro; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; -using System.Collections; -using PrizeSystem; -using System.Text; public enum GameMode { pve, pvp } public class GameManager : MonoBehaviour { @@ -13,7 +14,7 @@ public class GameManager : MonoBehaviour public int Rows = 7, Cols = 7; public PlayerStatsService StatsService; - + public int botsAmount = 5; public int boardVersion = 1; @@ -138,7 +139,7 @@ public class GameManager : MonoBehaviour ConfigManager.Initialize(); UnityMainThreadDispatcher.Initialize(); - + InitializePrefs(); SettingsManager.Initialize(); @@ -149,7 +150,7 @@ public class GameManager : MonoBehaviour logger = GetComponent(); InitializeDevices(); - + PaymentSystem.Initialize(); @@ -187,9 +188,9 @@ public class GameManager : MonoBehaviour var sb = new StringBuilder(); //ИНИЦИАЛИЗАЦИЯ УСТРОЙСТВ var devices = ComPortScanner.ScanPorts(); - + sb.AppendLine($"Найдено устройств: {devices.Count}"); - foreach ( var device in devices ) + foreach (var device in devices) { sb.Append($"{device.Key} : {device.Value}"); } @@ -418,6 +419,24 @@ public class GameManager : MonoBehaviour } } + public void PrepareRound(CellState firstPlayer) + { + currentPlayer = firstPlayer; + + timerManager.SetupTimers(gameMode); + if (gameMode == GameMode.pve) + { + timerManager.SetActiveTimer(CellState.Player1); + int difficultyIndex = DifficultyManager.Instance.currentOpponent; + CharacterController.SwitchToCharacter(difficultyIndex); + } + else if (gameMode == GameMode.pvp) + DualAvatarController.Instance.ShowCharacters(); + + VitrinaView.Instance.ActivateIfNeed(); + stateMachine.ChangeState(new StartTurnState()); + } + public void ResetGameSession() { vsBotThinkTime = 0; @@ -456,5 +475,5 @@ public class GameManager : MonoBehaviour } } } - + } \ No newline at end of file