using System;
using System.Collections.Generic;
using TyphoonGUIStyle;
using UnityEditor;
using UnityEngine;
namespace TyphoonUI
{
///
/// Preferences gui 绘制
///
public class PreferencesGUIDrawer
{
public static Dictionary> OverrideDrawGUIFunc =
new Dictionary>()
{
{ "m_Script", (res) => { return true; } },
{ nameof(Preferences.Keymap), DrawProperty_Keymap },
{ nameof(Preferences.DefaultNamespace), DrawProperty_DefaultNamespace },
{ nameof(Preferences.DrawUIObjectHierarchy), DrawProperty_DrawUIObjectHierarchy },
{ nameof(Preferences.DrawUINodeHierarchy), DrawProperty_DrawUINodeHierarchy },
{ nameof(Preferences.DrawHierarchyInPlayingMode), DrawProperty_DrawHierarchyInPlayingMode },
{ nameof(Preferences.UpdateUIPackageOnPlaying), DrawProperty_UpdateUIPackageOnPlaying },
};
private static bool DrawProperty_UpdateUIPackageOnPlaying(Preferences arg)
{
GUILayout.Space(10);
GUILayout.Label("运行时自动更新UIPackage", Styles.BoldLabel);
GUIDrawer.DrawPopUpToggle(arg.UpdateUIPackageOnPlaying,
(res) => { arg.UpdateUIPackageOnPlaying = res; });
return true;
}
private static bool DrawProperty_DrawUINodeHierarchy(Preferences arg)
{
GUILayout.Space(10);
GUILayout.Label("节点标识", Styles.BoldLabel);
GUIDrawer.DrawPopUpToggle(arg.DrawUINodeHierarchy,
(res) => { arg.DrawUINodeHierarchy = res; });
return true;
}
private static bool DrawProperty_DrawUIObjectHierarchy(Preferences arg)
{
GUILayout.Space(10);
GUILayout.Label("UIObject标识", Styles.BoldLabel);
GUIDrawer.DrawPopUpToggle(arg.DrawUIObjectHierarchy,
(res) => { arg.DrawUIObjectHierarchy = res; });
return true;
}
private static bool DrawProperty_DrawHierarchyInPlayingMode(Preferences arg)
{
GUILayout.Space(10);
GUILayout.Label("运行时绘制标识", Styles.BoldLabel);
GUIDrawer.DrawPopUpToggle(arg.DrawHierarchyInPlayingMode,
(res) => { arg.DrawHierarchyInPlayingMode = res; });
return true;
}
private static bool DrawProperty_DefaultNamespace(Preferences arg)
{
GUILayout.Space(10);
GUILayout.Label("默认命名空间", Styles.BoldLabel);
arg.DefaultNamespace = EditorGUILayout.TextField(arg.DefaultNamespace);
return true;
}
public static void DrawGUI()
{
var config = Preferences.Default;
GUIDrawer.DrawProperty(config, (property) =>
{
if (OverrideDrawGUIFunc.TryGetValue(property, out var match))
{
return match.Invoke(config);
}
return false;
});
}
private static bool DrawProperty_Keymap(Preferences arg)
{
var rect = GUIDrawer.DrawTitleLabel("选项", GUILayout.Height(32));
var rectSave = rect;
rectSave.height = 22;
rectSave.width = 80;
rectSave.center = rect.center;
rectSave.x = rect.xMax - rectSave.width;
rectSave.x -= 4;
if (GUI.Button(rectSave, new GUIContent("保存配置", EditorIcons.icon_save)))
{
arg.Save();
TyphoonUIEditor.Generate_EditorCsFile();
}
GUILayout.Space(10);
GUILayout.Label("导出快捷键", Styles.BoldLabel);
arg.Keymap = EditorGUILayout.TextField(arg.Keymap);
GUIDrawer.DrawMessageBox("[%表示ctrl][&表示alt][#表示shift]\n例如ctrl+e,填写%e", GUILayout.Height(44));
return true;
}
}
}