Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XPropertyDescriptor.cs
Go to the documentation of this file.
1using System;
4
6
7internal abstract class XPropertyDescriptor<T, TProperty> : PropertyDescriptor where T : XObject
8{
9 public override Type ComponentType => typeof(T);
10
11 public override bool IsReadOnly => true;
12
13 public override Type PropertyType => typeof(TProperty);
14
15 public override bool SupportsChangeEvents => true;
16
17 public XPropertyDescriptor(string name)
18 : base(name, null)
19 {
20 }
21
22 public override void AddValueChanged(object component, EventHandler handler)
23 {
24 bool flag = GetValueChangedHandler(component) != null;
25 base.AddValueChanged(component, handler);
26 if (!flag && component is T val && GetValueChangedHandler(component) != null)
27 {
28 val.Changing += OnChanging;
29 val.Changed += OnChanged;
30 }
31 }
32
33 public override bool CanResetValue(object component)
34 {
35 return false;
36 }
37
38 public override void RemoveValueChanged(object component, EventHandler handler)
39 {
40 base.RemoveValueChanged(component, handler);
41 if (component is T val && GetValueChangedHandler(component) == null)
42 {
43 val.Changing -= OnChanging;
44 val.Changed -= OnChanged;
45 }
46 }
47
48 public override void ResetValue(object component)
49 {
50 }
51
52 public override void SetValue(object component, object value)
53 {
54 }
55
56 public override bool ShouldSerializeValue(object component)
57 {
58 return false;
59 }
60
61 protected virtual void OnChanged(object sender, XObjectChangeEventArgs args)
62 {
63 }
64
65 protected virtual void OnChanging(object sender, XObjectChangeEventArgs args)
66 {
67 }
68}
override void SetValue(object component, object value)
override void RemoveValueChanged(object component, EventHandler handler)
virtual void OnChanging(object sender, XObjectChangeEventArgs args)
virtual void OnChanged(object sender, XObjectChangeEventArgs args)
override void AddValueChanged(object component, EventHandler handler)
EventHandler? GetValueChangedHandler(object component)