using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using MuHua;
///
/// 快捷菜单
///
public class ShortcutMenu : Module {
/// 数据列表
public List menuItems = new List();
/// 打开菜单
public void Open() => UIShortcutMenu.I?.Open(UIShortcutMenu.I.MousePosition, menuItems);
/// 关闭菜单
public void Close() => UIShortcutMenu.I?.Close();
/// 添加菜单项(1级菜单/2级菜单/3级菜单)
public void Add(string name, Action callback) {
string[] names = name.Split('/');
ShortcutMenuItem item = Find(names[0], menuItems, true);
for (int i = 1; i < names.Length; i++) {
item = Find(names[i], item.menuItems, true);
}
item.callback = callback;
}
/// 移除菜单项(???/???/子级菜单)
public void Remove(string name) {
string[] names = name.Split('/');
List menuItems = this.menuItems;
ShortcutMenuItem item = Find(names[0], menuItems, false);
for (int i = 1; i < names.Length; i++) {
if (item == null) return;
menuItems = item.menuItems;
item = Find(names[i], menuItems, false);
}
menuItems.Remove(item);
}
/// 子项目查找
private ShortcutMenuItem Find(string menu, List menuItems, bool isCreate) {
ShortcutMenuItem item = menuItems.Find(obj => obj.name == menu);
if (item != null || !isCreate) { return item; }
item = new ShortcutMenuItem { name = menu };
menuItems.Add(item);
return item;
}
}