Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
CategoryAttribute.cs
Go to the documentation of this file.
2
4
5[AttributeUsage(AttributeTargets.All)]
7{
8 private static volatile CategoryAttribute s_action;
9
10 private static volatile CategoryAttribute s_appearance;
11
12 private static volatile CategoryAttribute s_asynchronous;
13
14 private static volatile CategoryAttribute s_behavior;
15
16 private static volatile CategoryAttribute s_data;
17
18 private static volatile CategoryAttribute s_design;
19
20 private static volatile CategoryAttribute s_dragDrop;
21
22 private static volatile CategoryAttribute s_defAttr;
23
24 private static volatile CategoryAttribute s_focus;
25
26 private static volatile CategoryAttribute s_format;
27
28 private static volatile CategoryAttribute s_key;
29
30 private static volatile CategoryAttribute s_layout;
31
32 private static volatile CategoryAttribute s_mouse;
33
34 private static volatile CategoryAttribute s_windowStyle;
35
36 private bool _localized;
37
38 private readonly object _locker = new object();
39
40 private string _categoryValue;
41
42 public static CategoryAttribute Action => s_action ?? (s_action = new CategoryAttribute("Action"));
43
44 public static CategoryAttribute Appearance => s_appearance ?? (s_appearance = new CategoryAttribute("Appearance"));
45
47
48 public static CategoryAttribute Behavior => s_behavior ?? (s_behavior = new CategoryAttribute("Behavior"));
49
50 public static CategoryAttribute Data => s_data ?? (s_data = new CategoryAttribute("Data"));
51
53
54 public static CategoryAttribute Design => s_design ?? (s_design = new CategoryAttribute("Design"));
55
56 public static CategoryAttribute DragDrop => s_dragDrop ?? (s_dragDrop = new CategoryAttribute("DragDrop"));
57
58 public static CategoryAttribute Focus => s_focus ?? (s_focus = new CategoryAttribute("Focus"));
59
60 public static CategoryAttribute Format => s_format ?? (s_format = new CategoryAttribute("Format"));
61
62 public static CategoryAttribute Key => s_key ?? (s_key = new CategoryAttribute("Key"));
63
64 public static CategoryAttribute Layout => s_layout ?? (s_layout = new CategoryAttribute("Layout"));
65
66 public static CategoryAttribute Mouse => s_mouse ?? (s_mouse = new CategoryAttribute("Mouse"));
67
69
70 public string Category
71 {
72 get
73 {
74 if (!_localized)
75 {
76 lock (_locker)
77 {
78 string localizedString = GetLocalizedString(_categoryValue);
79 if (localizedString != null)
80 {
81 _categoryValue = localizedString;
82 }
83 _localized = true;
84 }
85 }
86 return _categoryValue;
87 }
88 }
89
91 : this("Default")
92 {
93 }
94
95 public CategoryAttribute(string category)
96 {
97 _categoryValue = category;
98 }
99
100 public override bool Equals([NotNullWhen(true)] object? obj)
101 {
102 if (obj is CategoryAttribute categoryAttribute)
103 {
104 return categoryAttribute.Category == Category;
105 }
106 return false;
107 }
108
109 public override int GetHashCode()
110 {
111 return Category?.GetHashCode() ?? 0;
112 }
113
114 protected virtual string? GetLocalizedString(string value)
115 {
116 return value switch
117 {
118 "Action" => System.SR.PropertyCategoryAction,
119 "Appearance" => System.SR.PropertyCategoryAppearance,
120 "Asynchronous" => System.SR.PropertyCategoryAsynchronous,
121 "Behavior" => System.SR.PropertyCategoryBehavior,
122 "Config" => System.SR.PropertyCategoryConfig,
123 "Data" => System.SR.PropertyCategoryData,
124 "DDE" => System.SR.PropertyCategoryDDE,
125 "Default" => System.SR.PropertyCategoryDefault,
126 "Design" => System.SR.PropertyCategoryDesign,
127 "DragDrop" => System.SR.PropertyCategoryDragDrop,
128 "Focus" => System.SR.PropertyCategoryFocus,
129 "Font" => System.SR.PropertyCategoryFont,
130 "Format" => System.SR.PropertyCategoryFormat,
131 "Key" => System.SR.PropertyCategoryKey,
132 "Layout" => System.SR.PropertyCategoryLayout,
133 "List" => System.SR.PropertyCategoryList,
134 "Mouse" => System.SR.PropertyCategoryMouse,
135 "Position" => System.SR.PropertyCategoryPosition,
136 "Scale" => System.SR.PropertyCategoryScale,
137 "Text" => System.SR.PropertyCategoryText,
138 "WindowStyle" => System.SR.PropertyCategoryWindowStyle,
139 _ => null,
140 };
141 }
142
143 public override bool IsDefaultAttribute()
144 {
145 return Category == Default.Category;
146 }
147}
static volatile CategoryAttribute s_layout
static volatile CategoryAttribute s_focus
static volatile CategoryAttribute s_key
static volatile CategoryAttribute s_design
static volatile CategoryAttribute s_format
static volatile CategoryAttribute s_asynchronous
static volatile CategoryAttribute s_defAttr
static volatile CategoryAttribute s_dragDrop
static volatile CategoryAttribute s_mouse
static volatile CategoryAttribute s_behavior
static volatile CategoryAttribute s_windowStyle
override bool Equals([NotNullWhen(true)] object? obj)
static volatile CategoryAttribute s_appearance
static volatile CategoryAttribute s_action
static volatile CategoryAttribute s_data
virtual ? string GetLocalizedString(string value)
static string PropertyCategoryScale
Definition SR.cs:52
static string PropertyCategoryConfig
Definition SR.cs:24
static string PropertyCategoryLayout
Definition SR.cs:44
static string PropertyCategoryFormat
Definition SR.cs:40
static string PropertyCategoryDDE
Definition SR.cs:28
static string PropertyCategoryWindowStyle
Definition SR.cs:56
static string PropertyCategoryData
Definition SR.cs:26
static string PropertyCategoryDefault
Definition SR.cs:30
static string PropertyCategoryAppearance
Definition SR.cs:18
static string PropertyCategoryKey
Definition SR.cs:42
static string PropertyCategoryFocus
Definition SR.cs:36
static string PropertyCategoryAction
Definition SR.cs:16
static string PropertyCategoryList
Definition SR.cs:46
static string PropertyCategoryBehavior
Definition SR.cs:22
static string PropertyCategoryDragDrop
Definition SR.cs:34
static string PropertyCategoryFont
Definition SR.cs:38
static string PropertyCategoryDesign
Definition SR.cs:32
static string PropertyCategoryAsynchronous
Definition SR.cs:20
static string PropertyCategoryPosition
Definition SR.cs:50
static string PropertyCategoryText
Definition SR.cs:54
static string PropertyCategoryMouse
Definition SR.cs:48
Definition SR.cs:7