You've already forked Darklings-FightingGame
mirror of
https://github.com/izzy2lost/Darklings-FightingGame.git
synced 2026-03-10 11:35:19 -07:00
103 lines
3.2 KiB
C#
103 lines
3.2 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace PlayFab.PfEditor
|
|
{
|
|
//[InitializeOnLoad]
|
|
public class SubMenuComponent : UnityEditor.Editor
|
|
{
|
|
|
|
Dictionary<string, MenuItemContainer> items = new Dictionary<string, MenuItemContainer>();
|
|
GUIStyle selectedStyle;
|
|
GUIStyle defaultStyle;
|
|
GUIStyle bgStyle;
|
|
|
|
public void DrawMenu()
|
|
{
|
|
selectedStyle = selectedStyle ?? PlayFabEditorHelper.uiStyle.GetStyle("textButton_selected");
|
|
defaultStyle = defaultStyle ?? PlayFabEditorHelper.uiStyle.GetStyle("textButton");
|
|
bgStyle = bgStyle ?? PlayFabEditorHelper.uiStyle.GetStyle("gpStyleGray1");
|
|
|
|
using (new UnityHorizontal(bgStyle, GUILayout.ExpandWidth(true)))
|
|
{
|
|
foreach (var item in items)
|
|
{
|
|
var styleToUse = item.Value.isSelected ? selectedStyle : defaultStyle;
|
|
var content = new GUIContent(item.Value.displayName);
|
|
var size = styleToUse.CalcSize(content);
|
|
|
|
if (GUILayout.Button(item.Value.displayName, styleToUse, GUILayout.Width(size.x + 1)))
|
|
{
|
|
OnMenuItemClicked(item.Key);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void RegisterMenuItem(string n, System.Action m)
|
|
{
|
|
if (!items.ContainsKey(n))
|
|
{
|
|
var selectState = false;
|
|
var activeSubmenu = PlayFabEditorPrefsSO.Instance.curSubMenuIdx;
|
|
if (items.Count == 0 && activeSubmenu == 0 || activeSubmenu == items.Count)
|
|
selectState = true;
|
|
|
|
items.Add(n, new MenuItemContainer() { displayName = n, method = m, isSelected = selectState });
|
|
}
|
|
}
|
|
|
|
private void OnMenuItemClicked(string key)
|
|
{
|
|
if (!items.ContainsKey(key))
|
|
return;
|
|
|
|
DeselectAll();
|
|
items[key].isSelected = true;
|
|
if (items[key].method != null)
|
|
{
|
|
items[key].method.Invoke();
|
|
}
|
|
}
|
|
|
|
private void DeselectAll()
|
|
{
|
|
foreach (var item in items)
|
|
{
|
|
item.Value.isSelected = false;
|
|
}
|
|
}
|
|
|
|
public SubMenuComponent()
|
|
{
|
|
if (!PlayFabEditor.IsEventHandlerRegistered(StateUpdateHandler))
|
|
{
|
|
PlayFabEditor.EdExStateUpdate += StateUpdateHandler;
|
|
}
|
|
}
|
|
|
|
void StateUpdateHandler(PlayFabEditor.EdExStates state, string status, string json)
|
|
{
|
|
switch (state)
|
|
{
|
|
case PlayFabEditor.EdExStates.OnMenuItemClicked:
|
|
DeselectAll();
|
|
if (items != null)
|
|
foreach (var each in items)
|
|
{
|
|
each.Value.isSelected = true; // Select the first
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public class MenuItemContainer
|
|
{
|
|
public string displayName;
|
|
public System.Action method;
|
|
public bool isSelected;
|
|
}
|
|
}
|