using CommonLang; using System; using System.Collections.Generic; using System.Text; namespace CommonAI.Zone.Attributes { //----------------------------------------------------------- [AttributeUsage(AttributeTargets.Field)] public class ColorValueAttribute : System.Attribute { public static readonly int COLOR_GREEN = FromARGB(0xff, 0x00, 0xff, 0x00); public static readonly int COLOR_LIGHT_GREEN = FromARGB(0xff, 0x80, 0xff, 0x80); public static readonly int COLOR_DARK_GRAY = FromARGB(0xff, 0x40, 0x40, 0x40); public static readonly int COLOR_RED = FromARGB(0xff, 0xff, 0x00, 0x00); public static readonly int COLOR_LIGHT_BLUE = FromARGB(0xff, 0x80, 0x80, 0xff); public static int FromARGB(float a, float r, float g, float b) { int ARGB = 0; ARGB |= ((int)CMath.getInRange(a * 255, 0, 255)) << 24; ARGB |= ((int)CMath.getInRange(r * 255, 0, 255)) << 16; ARGB |= ((int)CMath.getInRange(g * 255, 0, 255)) << 8; ARGB |= ((int)CMath.getInRange(b * 255, 0, 255)); return ARGB; } public static int FromARGB(int a, int r, int g, int b) { int ARGB = 0; ARGB |= ((int)CMath.getInRange(a, 0, 255)) << 24; ARGB |= ((int)CMath.getInRange(r, 0, 255)) << 16; ARGB |= ((int)CMath.getInRange(g, 0, 255)) << 8; ARGB |= ((int)CMath.getInRange(b, 0, 255)); return ARGB; } } //----------------------------------------------------------- /// /// 标识 Field Int32 字段为 类型的模板ID /// [AttributeUsage(AttributeTargets.Field)] public class TemplateIDAttribute : System.Attribute { private Type templateType; public TemplateIDAttribute(Type templateType) { this.templateType = templateType; } public Type TemplateType { get { return templateType; } } } //----------------------------------------------------------- /// /// 标识 Field Int32 字段为 UnitInfo 模板ID的等级 /// [AttributeUsage(AttributeTargets.Field)] public class TemplateLevelAttribute : System.Attribute { public TemplateLevelAttribute() { } } //----------------------------------------------------------- /// /// 标识 Field 数组或List字段为 Int32 类型的模板ID /// [AttributeUsage(AttributeTargets.Field)] public class TemplatesIDAttribute : System.Attribute { private Type templateType; public TemplatesIDAttribute(Type templateType) { this.templateType = templateType; } public Type TemplateType { get { return templateType; } } } //----------------------------------------------------------- /// /// 标识 Field 字段为资源文件 /// [AttributeUsage(AttributeTargets.Field)] public class ResourceIDAttribute : System.Attribute { } //----------------------------------------------------------- /// /// 标识 Field 字段为场景单位 Name /// [AttributeUsage(AttributeTargets.Field)] public class SceneObjectIDAttribute : System.Attribute { private Type objectType; public SceneObjectIDAttribute(Type objectType) { this.objectType = objectType; } public Type ObjectType { get { return objectType; } } } //----------------------------------------------------------- /// /// 标识 Field 字段为场景事件触发 Name /// [AttributeUsage(AttributeTargets.Field)] public class SceneEventIDAttribute : System.Attribute { } //----------------------------------------------------------- /// /// 标识 Field 字段为场景环境变量 Key /// [AttributeUsage(AttributeTargets.Field)] public class SceneVarIDAttribute : System.Attribute { public readonly Type VarType; public SceneVarIDAttribute(Type varType) { this.VarType = varType; } } /// /// 标识 Field 字段为临时变量 Key /// [AttributeUsage(AttributeTargets.Field)] public class LocalVarIDAttribute : System.Attribute { public readonly Type VarType; public LocalVarIDAttribute(Type varType) { this.VarType = varType; } } //----------------------------------------------------------- /// /// 标识 Field 字段为 脚本文件 /// [AttributeUsage(AttributeTargets.Field)] public class SceneScriptIDAttribute : System.Attribute { } //----------------------------------------------------------- /// /// 标识 UnitTrigger (单位被动系) 触发类型。 /// [AttributeUsage(AttributeTargets.Class)] public class UnitTriggerEventTypeAttribute : System.Attribute { private Type[] delegateTypes; public UnitTriggerEventTypeAttribute(params Type[] delegateTypes) { this.delegateTypes = delegateTypes; } public Type[] DelegateTypes { get { return delegateTypes; } } } //----------------------------------------------------------- //----------------------------------------------------------- /// /// 标识 Field 字段为单位事件触发 Name /// [AttributeUsage(AttributeTargets.Field)] public class UnitEventIDAttribute : System.Attribute { } //----------------------------------------------------------- /// /// 标记对象字段名字,用于AbstractValue取Field /// [AttributeUsage(AttributeTargets.Field)] public class ObjectMemberNameAttribute : System.Attribute { public readonly Type ObjectType; public readonly Type FieldType; public ObjectMemberNameAttribute(Type fieldType) { this.ObjectType = null; this.FieldType = fieldType; } public ObjectMemberNameAttribute(Type objType, Type fieldType) { this.ObjectType = objType; this.FieldType = fieldType; } } //----------------------------------------------------------- /// /// 标记对象字段名字,用于生成Language.csv /// [AttributeUsage(AttributeTargets.Field)] public class LocalizationTextAttribute : System.Attribute { public LocalizationTextAttribute() { } } //----------------------------------------------------------- /// /// 标记对象字段名字,用于AbstractValue取QuestID /// [AttributeUsage(AttributeTargets.Field)] public class QuestIDAttribute : System.Attribute { public QuestIDAttribute() { } } //----------------------------------------------------------- /// /// 标记 event 是否可以在编辑时反射成事件触发器 /// [AttributeUsage(AttributeTargets.Event | AttributeTargets.Property | AttributeTargets.Field)] public class EventTriggerDescAttribute : System.Attribute { public string Description { get; private set; } public EventTriggerDescAttribute(string desc) { this.Description = desc; } } //----------------------------------------------------------- //----------------------------------------------------------- }