56 lines
2.1 KiB
C#
56 lines
2.1 KiB
C#
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using Cielonos.Core;
|
|||
|
|
using Sirenix.OdinInspector;
|
|||
|
|
using SLSUtilities.General;
|
|||
|
|
using UnityEngine;
|
|||
|
|
|
|||
|
|
#if UNITY_EDITOR
|
|||
|
|
using Sirenix.OdinInspector.Editor;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
namespace Cielonos.MainGame
|
|||
|
|
{
|
|||
|
|
[CreateAssetMenu(fileName = "EditorBaseCollection", menuName = "Cielonos/BaseCollections/EditorBaseCollection")]
|
|||
|
|
public partial class EditorBaseCollection : BaseCollection<EditorBaseCollection>
|
|||
|
|
{
|
|||
|
|
[Tooltip("Key 为词条 ID,Value 为词条描述(将显示在 Tooltip 中)")]
|
|||
|
|
[SerializedDictionarySettings("Key", "Description")]
|
|||
|
|
[ToolbarButton("OpenAttributeGenerator", SdfIconType.FileCode, "打开词条生成器窗口")]
|
|||
|
|
public SerializedDictionary<string, string> characterAttributes = new SerializedDictionary<string, string>();
|
|||
|
|
|
|||
|
|
#if UNITY_EDITOR
|
|||
|
|
public static IEnumerable<ValueDropdownItem<string>> GetCharacterAttributesDropdown(InspectorProperty property)
|
|||
|
|
{
|
|||
|
|
IEnumerable<ValueDropdownItem<string>> allItems = Instance.characterAttributes
|
|||
|
|
.Select(kvp => new ValueDropdownItem<string>
|
|||
|
|
{
|
|||
|
|
Text = $"{kvp.Key} ({kvp.Value})",
|
|||
|
|
Value = kvp.Key
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
object dict = SerializedDictionaryHelper.GetDictionaryFromKey(property);
|
|||
|
|
if (dict is IEnumerable<KeyValuePair<string, float>> existingDict)
|
|||
|
|
{
|
|||
|
|
var usedKeys = existingDict.Select(k => k.Key).ToHashSet();
|
|||
|
|
string currentKey = property.ValueEntry.WeakSmartValue as string;
|
|||
|
|
return allItems.Where(x => !usedKeys.Contains(x.Value) || x.Value == currentKey);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return allItems;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void OpenAttributeGenerator(SerializedDictionary<string, string> dict)
|
|||
|
|
{
|
|||
|
|
// 打开我们刚才写的窗口,并传入当前的字典数据
|
|||
|
|
DictionaryCodeGeneratorWindow.Open(dict, "CharacterAttribute", "Cielonos.MainGame");
|
|||
|
|
}
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public partial class EditorBaseCollection
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|