Jeremy Smitherman 1523485fe2 feat/state (#2)
Reviewed-on: #2
Co-authored-by: Jeremy Smitherman <Jeremysmitherman@gmail.com>
Co-committed-by: Jeremy Smitherman <Jeremysmitherman@gmail.com>
2026-04-24 18:57:06 +00:00

55 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;
Debug.Log("Starting game");
}
}
}