MedievalParty/Assets/Scripts/MainMenu/MainMenuManager.cs
2025-09-25 17:01:31 -04:00

65 lines
1.8 KiB
C#

using System;
using MedievalParty.Core;
using MedievalParty.MainMenu.MainSection;
using MedievalParty.MainMenu.Option;
using UnityEngine;
namespace MedievalParty.MainMenu
{
public class MainMenuManager: StateBehaviour
{
public static MainMenuManager Instance { get; private set; }
public event EventHandler<Section> onSectionChange;
public enum Section
{
Main,
Option
}
private MainManuManager_MainSectionState _mainSectionState;
private MainMenuManager_OptionState _optionState;
private void Awake()
{
if (Instance)
{
Debug.LogWarning($"{typeof(MainMenuManager)} already exist! {transform}");
Destroy(gameObject);
return;
}
Instance = this;
}
protected override void Start()
{
base.Start();
_mainSectionState = new MainManuManager_MainSectionState();
_optionState = new MainMenuManager_OptionState();
_mainSectionState.onOptionTrigger += (_, _) => ChangeSection(Section.Option);
_optionState.onExitTrigger += (_, _) => ChangeSection(Section.Main);
ChangeSection(Section.Main);
}
private void ChangeSection(Section section)
{
switch (section)
{
case Section.Main:
ChangeState(_mainSectionState);
onSectionChange?.Invoke(this, Section.Main);
break;
case Section.Option:
ChangeState(_optionState);
onSectionChange?.Invoke(this, Section.Option);
break;
}
}
}
}