Print pretty names and support LabelAttribute for enum cases

This commit is contained in:
Simon Lübeß
2024-02-17 23:32:21 +01:00
parent a07ea3276c
commit 86b09c173b
+25 -1
View File
@@ -376,7 +376,31 @@ internal class EntityEditor
{ {
foreach (object enumValue in Enum.GetValues(fieldType)) foreach (object enumValue in Enum.GetValues(fieldType))
{ {
if (ImGui.Selectable(enumValue.ToString(), enumValue == reference)) string enumValueName = enumValue.ToString();
FieldInfo? fieldInfo = fieldType.GetField(enumValueName);
string enumValueLabel;
if (fieldInfo != null)
{
LabelAttribute label = (LabelAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(LabelAttribute));
if (label != null)
{
enumValueLabel = label.Label ?? enumValueName;
}
else
{
enumValueLabel = enumValueName.ToPrettyName();
}
}
else
{
enumValueLabel = enumValueName.ToPrettyName();
}
if (ImGui.Selectable(enumValueLabel, enumValue == reference))
{ {
newValue = enumValue; newValue = enumValue;
} }