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
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; } } } }