@@ -19,7 +19,20 @@ public abstract class CacheObjectBase
1919 public MemberInfo MemberInfo { get ; set ; }
2020 public Type DeclaringType { get ; set ; }
2121 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+
2336 public string ReflectionException ;
2437
2538 public bool CanWrite
@@ -156,45 +169,7 @@ public static CacheObjectBase GetCacheObject(object obj, MemberInfo memberInfo,
156169 return holder ;
157170 }
158171
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) =========
198173
199174 public virtual void UpdateValue ( )
200175 {
@@ -245,5 +220,79 @@ public void SetValue()
245220 MelonLogger . LogWarning ( $ "Error setting value: { e . GetType ( ) } , { e . Message } ") ;
246221 }
247222 }
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+ }
248297 }
249298}
0 commit comments