using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UIElements;
using MuHua;
///
/// UI菜单管理器
///
public class UIMenuManager : ModuleUISingle {
/// 菜单模板
public VisualTreeAsset menuTreeAsset;
/// 项目模板
public VisualTreeAsset itemTreeAsset;
private UIMenuPanel menu;
public override VisualElement Element => root.Q("Menu");
protected override void Awake() => NoReplace(false);
public void Open() {
if (menu != null) { Close(); }
Vector3 mousePosition = UITool.GetMousePosition(Element);
menu = BuildMenu(mousePosition);
}
public void Close() {
Element.Clear();
}
public void Settings() {
}
/// 创建菜单
public UIMenuPanel BuildMenu(Vector3 position) {
VisualElement element = menuTreeAsset.Instantiate();
Element.Add(element);
element.transform.position = position;
return new UIMenuPanel(element, itemTreeAsset);
}
}
///
/// UI菜单面板
///
public class UIMenuPanel : ModuleUIPanel {
public ModuleUIItems items;
public VisualElement Container => Q("Container");
public UIMenuPanel(VisualElement element, VisualTreeAsset templateAsset) : base(element) {
items = new ModuleUIItems(Container, templateAsset,
(data, element) => new UIItem(data, element));
}
public void Release() => items.Release();
/// UI项目
public class UIItem : ModuleUIItem {
public UIItem(DataMenuItem value, VisualElement element) : base(value, element) {
}
}
}
///
/// 菜单项目
///
public class DataMenuItem {
/// 名称
public string name;
/// 回调
public Action callback;
}