37 lines
No EOL
947 B
C#
37 lines
No EOL
947 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Server.Engines.MLQuests
|
|
{
|
|
[AttributeUsage(AttributeTargets.Class)]
|
|
public class QuesterNameAttribute : Attribute
|
|
{
|
|
private static readonly Type m_Type = typeof(QuesterNameAttribute);
|
|
private static readonly Dictionary<Type, string> m_Cache = new Dictionary<Type, string>();
|
|
|
|
public QuesterNameAttribute(string questerName)
|
|
{
|
|
QuesterName = questerName;
|
|
}
|
|
|
|
public string QuesterName{ get; }
|
|
|
|
public static string GetQuesterNameFor(Type t)
|
|
{
|
|
if (t == null)
|
|
return "";
|
|
|
|
if (m_Cache.TryGetValue(t, out string result))
|
|
return result;
|
|
|
|
object[] attributes = t.GetCustomAttributes(m_Type, false);
|
|
|
|
if (attributes.Length != 0)
|
|
result = ((QuesterNameAttribute)attributes[0]).QuesterName;
|
|
else
|
|
result = t.Name;
|
|
|
|
return m_Cache[t] = result;
|
|
}
|
|
}
|
|
} |