103 lines
2.9 KiB
C#
103 lines
2.9 KiB
C#
using Cysharp.Threading.Tasks;
|
||
using TMPro;
|
||
using UnityEngine;
|
||
using UnityEngine.XR;
|
||
|
||
/// <summary>
|
||
/// Главный загрузчик.
|
||
/// </summary>
|
||
public class MainBootstrap : MonoBehaviour
|
||
{
|
||
[SerializeField] TextMeshProUGUI window;
|
||
[SerializeField] private ConfigCatalog ConfigCatalog;
|
||
[SerializeField] private In.InputType InputType;
|
||
[SerializeField] private GameManager gm;
|
||
|
||
[Header("Настройка камер")]
|
||
[SerializeField] private Transform CamerasPivot;
|
||
[SerializeField] private Camera VR_Camera;
|
||
[SerializeField] private Camera Screen_Camera;
|
||
|
||
[Header("Sound manager")]
|
||
[SerializeField] private SoundManager soundManager;
|
||
|
||
[Header("Отладка")]
|
||
[SerializeField] private bool logging;
|
||
|
||
|
||
|
||
private async void Awake()
|
||
{
|
||
XRSettings.useOcclusionMesh = false;
|
||
|
||
window.text += "Инициализация диспетчера...\n";
|
||
UnityMainThreadDispatcher.Initialize();
|
||
await UniTask.Delay(1000);
|
||
window.text += "Диспетчер инициализирован...";
|
||
|
||
Defender.Instance.OnCheckReady += OnCheckReady;
|
||
StartCoroutine(Defender.Instance.CheckLicenseCoroutine());
|
||
//InitializeMangers();
|
||
|
||
Cursor.lockState = CursorLockMode.Locked;
|
||
Cursor.visible = false;
|
||
}
|
||
|
||
private void OnCheckReady(bool valid)
|
||
{
|
||
if (valid)
|
||
{
|
||
InitializeMangers();
|
||
|
||
}
|
||
else Application.Quit();
|
||
}
|
||
|
||
private void InitializeMangers()
|
||
{
|
||
DontDestroyOnLoad(gm);
|
||
if (ConfigCatalog == null)
|
||
{
|
||
Log("Не указан каталог конфигов");
|
||
return;
|
||
}
|
||
|
||
var catalogValidatinResult = ConfigCatalog.ValidateReferences();
|
||
if (!catalogValidatinResult.OK)
|
||
{
|
||
Log($"Ошибка в каталоге конфига: \n{catalogValidatinResult.message}");
|
||
return;
|
||
}
|
||
|
||
#region Инициализации
|
||
|
||
SettingsManager.Initialize(ConfigCatalog.SettingsManagerConfig.DefaultSettingsScheme);
|
||
|
||
CamerasManager.Initialize(CamerasPivot, VR_Camera, Screen_Camera);
|
||
|
||
|
||
ComPortController.Initialize(ControllerConfig.LoadOrCreate(), ComPortController.InputType.Decimal);
|
||
|
||
ComPortController.PaymentReceived += WalletManager.OnCoin;
|
||
|
||
WalletManager.Initialize(ConfigCatalog.WalletManagerConfig);
|
||
CountersSystem.Init(ConfigCatalog.CountersConfig);
|
||
|
||
|
||
GameModesHolder.Initialize(ConfigCatalog.GameModesConfig);
|
||
In.Initialize(In.GetInputSourceByType(InputType));
|
||
|
||
soundManager.Initialize();
|
||
#endregion
|
||
|
||
Log("Главный загрузчик отработал");
|
||
BootstrapperState.MainBootstraped = true;
|
||
SceneLoader.LoadScene("MenuOneRegime");
|
||
}
|
||
|
||
private void Log(string message)
|
||
{
|
||
if (logging) Debug.Log(message);
|
||
}
|
||
}
|