using System.Collections.Generic;
using System;
using System.Threading;
using Cysharp.Threading.Tasks;
using DanroJump.Audio;
using DanroJump.Bootstrap;
using DanroJump.Hardware.Com;
using DanroJump.Prizes;
using DanroJump.Prizes.Qr;
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 QrCodeSettingsModalWindow qrCodeSettingsModal;
private PrizeLevelsModalWindow prizeLevelsModal;
private PrizeLevelAddModalWindow prizeLevelAddModal;
private readonly List