using System.Collections.Generic; using System.Threading; using Cysharp.Threading.Tasks; using DanroJump.Bootstrap; using DanroJump.Hardware.Com; using DanroJump.Prizes; using DanroJump.SceneFlow; using DanroJump.Settings; using DanroJump.UI.ArcadeInput; using DanroJump.UI.Modals; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Serialization; using UnityEngine.UIElements; using Zenject; #if ENABLE_INPUT_SYSTEM using UnityEngine.InputSystem; #endif namespace DanroJump.UI.MainMenu { /// /// Управляет главным меню: модальными окнами, запуском игры и сервисными настройками. /// [RequireComponent(typeof(UIDocument))] public sealed class MainMenuController : MonoBehaviour { private const string SupportPhonePrefix = "тех. поддержка"; [SerializeField] private string gameplaySceneName = "Game"; [SerializeField] private string settingsSceneName = ""; [SerializeField] private string defaultFocusedButtonName = "RulesButton"; [SerializeField] private Color normalButtonImageTint = Color.white; [SerializeField] private Color focusedButtonImageTint = new Color32(0xCE, 0xFF, 0x1A, 0xFF); #if ENABLE_INPUT_SYSTEM private const string LegacySecretActionPath = "UI/Secret"; [SerializeField] private InputActionReference secretActionReference; [SerializeField, FormerlySerializedAs("inputActionsAsset")] private InputActionAsset legacyInputActionsAsset; #endif private UIDocument document; private VisualElement root; private Button startButton; private Button rulesButton; private Button settingsButton; private Button serviceButton; private Button quitButton; private Label livesValueLabel; private Label creditsValueLabel; private Label exchangeLivesValueLabel; private Label priceTextLabel; private Label versionLabel; private Label supportPhoneLabel; private ModalStackController modalStack; private RulesModalWindow rulesModal; private SettingsModalWindow settingsModal; private ServiceInfoModalWindow serviceInfoModal; private ServiceTextInputModalWindow serviceTextInputModal; private PrizeLevelsModalWindow prizeLevelsModal; private PrizeLevelAddModalWindow prizeLevelAddModal; private readonly List