minesweeper_game/Library/PackageCache/com.unity.2d.tilemap@91afae292a4e/Editor/UI/TilePaletteWhiteboxPaletteDropdownMenu.cs
2025-03-15 14:30:26 -04:00

64 lines
1.9 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.Tilemaps
{
internal class TilePaletteWhiteboxPaletteDropdownMenu : IGenericMenu
{
private const float k_DropdownWidth = 156f;
private GridPaletteWhiteboxPalettesDropdown m_Dropdown;
private Action m_OnClose;
public TilePaletteWhiteboxPaletteDropdownMenu(Action onClose)
{
int index = -1;
var menuData = new GridPaletteWhiteboxPalettesDropdown.MenuItemProvider();
m_Dropdown = new GridPaletteWhiteboxPalettesDropdown(menuData, index, null, SelectWhiteboxPalette, k_DropdownWidth);
m_OnClose = onClose;
}
public void AddItem(string itemName, bool isChecked, System.Action action)
{
}
public void AddItem(string itemName, bool isChecked, System.Action<object> action, object data)
{
}
public void AddDisabledItem(string itemName, bool isChecked)
{
}
public void AddSeparator(string path)
{
}
public void DropDown(Rect position, VisualElement targetElement = null, bool anchored = false)
{
PopupWindow.Show(position, m_Dropdown, null, ShowMode.PopupMenu);
}
public void Close()
{
PopupWindow.Show(default, m_Dropdown, null, ShowMode.PopupMenu);
}
private void SelectWhiteboxPalette(int i, object o)
{
m_Dropdown.editorWindow.Close();
m_OnClose?.Invoke();
var paletteCount = GridPalettes.palettes.Count;
TilePaletteWhiteboxSamplesUtility.DuplicateWhiteboxSample(i);
if (paletteCount > 0 && GridPaintPaletteClipboard.instances is { Count: > 0 })
{
var clipboard = GridPaintPaletteClipboard.instances[0];
clipboard.PickFirstFromPalette();
}
}
}
}