@@ -19,7 +19,20 @@ public abstract class CacheObjectBase
19
19
public MemberInfo MemberInfo { get ; set ; }
20
20
public Type DeclaringType { get ; set ; }
21
21
public object DeclaringInstance { get ; set ; }
22
- public string FullName => $ "{ MemberInfo . DeclaringType . Name } .{ MemberInfo . Name } ";
22
+
23
+ public string RichTextName
24
+ {
25
+ get
26
+ {
27
+ if ( m_richTextName == null )
28
+ {
29
+ GetRichTextName ( ) ;
30
+ }
31
+ return m_richTextName ;
32
+ }
33
+ }
34
+ private string m_richTextName ;
35
+
23
36
public string ReflectionException ;
24
37
25
38
public bool CanWrite
@@ -156,45 +169,7 @@ public static CacheObjectBase GetCacheObject(object obj, MemberInfo memberInfo,
156
169
return holder ;
157
170
}
158
171
159
- public const float MAX_LABEL_WIDTH = 400f ;
160
-
161
- public static void ClampLabelWidth ( Rect window , ref float labelWidth )
162
- {
163
- float min = window . width * 0.37f ;
164
- if ( min > MAX_LABEL_WIDTH ) min = MAX_LABEL_WIDTH ;
165
-
166
- labelWidth = Mathf . Clamp ( labelWidth , min , MAX_LABEL_WIDTH ) ;
167
- }
168
-
169
- public void Draw ( Rect window , float labelWidth = 215f )
170
- {
171
- if ( labelWidth > 0 )
172
- {
173
- ClampLabelWidth ( window , ref labelWidth ) ;
174
- }
175
-
176
- if ( MemberInfo != null )
177
- {
178
- GUILayout . Label ( "<color=cyan>" + FullName + "</color>" , new GUILayoutOption [ ] { GUILayout . Width ( labelWidth ) } ) ;
179
- }
180
- else
181
- {
182
- GUILayout . Space ( labelWidth ) ;
183
- }
184
-
185
- if ( ! string . IsNullOrEmpty ( ReflectionException ) )
186
- {
187
- GUILayout . Label ( "<color=red>Reflection failed!</color> (" + ReflectionException + ")" , null ) ;
188
- }
189
- else if ( Value == null && MemberInfo ? . MemberType != MemberTypes . Method )
190
- {
191
- GUILayout . Label ( "<i>null (" + ValueType + ")</i>" , null ) ;
192
- }
193
- else
194
- {
195
- DrawValue ( window , window . width - labelWidth - 90 ) ;
196
- }
197
- }
172
+ // ======== Updating and Setting Value (memberinfo only) =========
198
173
199
174
public virtual void UpdateValue ( )
200
175
{
@@ -245,5 +220,79 @@ public void SetValue()
245
220
MelonLogger . LogWarning ( $ "Error setting value: { e . GetType ( ) } , { e . Message } ") ;
246
221
}
247
222
}
223
+
224
+ // ========= Gui Draw ==========
225
+
226
+ public const float MAX_LABEL_WIDTH = 400f ;
227
+
228
+ public static void ClampLabelWidth ( Rect window , ref float labelWidth )
229
+ {
230
+ float min = window . width * 0.37f ;
231
+ if ( min > MAX_LABEL_WIDTH ) min = MAX_LABEL_WIDTH ;
232
+
233
+ labelWidth = Mathf . Clamp ( labelWidth , min , MAX_LABEL_WIDTH ) ;
234
+ }
235
+
236
+ public void Draw ( Rect window , float labelWidth = 215f )
237
+ {
238
+ if ( labelWidth > 0 )
239
+ {
240
+ ClampLabelWidth ( window , ref labelWidth ) ;
241
+ }
242
+
243
+ if ( MemberInfo != null )
244
+ {
245
+
246
+
247
+ GUILayout . Label ( RichTextName , new GUILayoutOption [ ] { GUILayout . Width ( labelWidth ) } ) ;
248
+ }
249
+ else
250
+ {
251
+ GUILayout . Space ( labelWidth ) ;
252
+ }
253
+
254
+ if ( ! string . IsNullOrEmpty ( ReflectionException ) )
255
+ {
256
+ GUILayout . Label ( "<color=red>Reflection failed!</color> (" + ReflectionException + ")" , null ) ;
257
+ }
258
+ else if ( Value == null && MemberInfo ? . MemberType != MemberTypes . Method )
259
+ {
260
+ GUILayout . Label ( "<i>null (" + ValueType + ")</i>" , null ) ;
261
+ }
262
+ else
263
+ {
264
+ DrawValue ( window , window . width - labelWidth - 90 ) ;
265
+ }
266
+ }
267
+
268
+ private void GetRichTextName ( )
269
+ {
270
+ string memberColor = "" ;
271
+ switch ( MemberInfo . MemberType )
272
+ {
273
+ case MemberTypes . Field :
274
+ memberColor = "#c266ff" ; break ;
275
+ case MemberTypes . Property :
276
+ memberColor = "#72a6a6" ; break ;
277
+ case MemberTypes . Method :
278
+ memberColor = "#ff8000" ; break ;
279
+ } ;
280
+
281
+ m_richTextName = $ "<color=#2df7b2>{ MemberInfo . DeclaringType . Name } </color>.<color={ memberColor } >{ MemberInfo . Name } </color>";
282
+
283
+ if ( MemberInfo is MethodInfo mi )
284
+ {
285
+ m_richTextName += "(" ;
286
+ var _params = "" ;
287
+ foreach ( var param in mi . GetParameters ( ) )
288
+ {
289
+ if ( _params != "" ) _params += ", " ;
290
+
291
+ _params += $ "<color=#a6e9e9>{ param . Name } </color>";
292
+ }
293
+ m_richTextName += _params ;
294
+ m_richTextName += ")" ;
295
+ }
296
+ }
248
297
}
249
298
}
0 commit comments