54 lines
1.5 KiB
C#
54 lines
1.5 KiB
C#
using System.Collections;
|
|
using UI;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
|
|
namespace State.Game
|
|
{
|
|
public class MainMenuState : MainGameState
|
|
{
|
|
private MainMenu _mainMenuInstance;
|
|
public override void OnEnter(Machine machine)
|
|
{
|
|
base.OnEnter(machine);
|
|
var handle = SceneManager.LoadSceneAsync("MainMenu", LoadSceneMode.Additive);
|
|
machine.StartCoroutine(LoadMenu(handle));
|
|
}
|
|
|
|
private IEnumerator LoadMenu(AsyncOperation handle)
|
|
{
|
|
while (!handle.isDone)
|
|
{
|
|
yield return null;
|
|
}
|
|
|
|
SceneManager.SetActiveScene(SceneManager.GetSceneByName("MainMenu"));
|
|
_mainMenuInstance = Object.Instantiate(MainStateMachine.MainMenuPrefab).GetComponent<MainMenu>();
|
|
if (_mainMenuInstance == null)
|
|
{
|
|
Debug.LogError("Error: MainMenu instance is null");
|
|
}
|
|
|
|
_mainMenuInstance.OnStartGame += HandleStartGame;
|
|
_mainMenuInstance.OnExitGame += () =>
|
|
{
|
|
#if UNITY_EDITOR
|
|
UnityEditor.EditorApplication.isPlaying = false;
|
|
#else
|
|
Application.Quit();
|
|
#endif
|
|
};
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
Object.Destroy(_mainMenuInstance.gameObject);
|
|
base.OnExit();
|
|
}
|
|
|
|
private void HandleStartGame()
|
|
{
|
|
_mainMenuInstance.OnStartGame -= HandleStartGame;
|
|
}
|
|
}
|
|
} |