using Code.Infrastructure.Camera; using Code.Infrastructure.Generators; using Code.Infrastructure.SceneLoader; using Code.Infrastructure.UI; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.SceneManagement; namespace Code.Infrastructure.App.States { [State(typeof(AppStates),typeof(AppStateMachineContext))] [StateRaisingEvent] public partial class BootstrapState : IOnGameplaySceneLoadedHandler, IUIPanelLoaded { private EventBus.EventBus _eventBus; public BootstrapState(AppStateMachineContext context, EventBus.EventBus eventBus) : base(context,eventBus) { _eventBus = eventBus; } public override AppStates myState => AppStates.Bootstrap; protected override void OnEnterState() { _eventBus.Subscribe(this); Context.UIService.TryLoadPanel(UIPanelType.DebugSceneChooser); // Context.SceneLoader.LoadSceneAsync(SceneId.Gameplay, LoadSceneMode.Single).Forget(); } protected override void OnExitState() { Context.UIService.TryRemovePanel(UIPanelType.DebugSceneChooser); _eventBus.Unsubscribe(this); } public void OnGameplaySceneLoaded() { } public void UILoaded(UIPanelType uiPanelType) { if (uiPanelType != UIPanelType.DebugSceneChooser) return; Context.UIService.OpenPanel(uiPanelType); } } }