65 lines
1.8 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |