Jypeli 10
The simple game programming library
BindableWidget.cs
Siirry tämän tiedoston dokumentaatioon.
1using System;
2
3namespace Jypeli.Widgets
4{
8 public abstract class BindableWidget : Widget
9 {
10 private bool updateSet = false;
11
16 public Meter Meter { get; private set; }
17
21 public bool Bound { get; private set; }
22
27 public BindableWidget( Animation animation )
28 : base( animation )
29 {
31 }
32
38 public BindableWidget( double width, double height )
39 : base( width, height )
40 {
42 }
43
50 public BindableWidget( double width, double height, Shape shape )
51 : base( width, height, shape )
52 {
54 }
55
60 public BindableWidget( ILayout layout )
61 : base( layout )
62 {
64 }
65
66 private void CreateInnerMeter()
67 {
68 Bound = false;
70 Meter = new DoubleMeter( 0, 0, 100 );
73 }
74
78 protected void SetChangedEvent()
79 {
80 if ( updateSet ) return;
81
82 if ( Meter is IntMeter ) ( (IntMeter)Meter ).Changed += UpdateIntValue;
83 else if ( Meter is DoubleMeter ) ( (DoubleMeter)Meter ).Changed += UpdateDoubleValue;
84 else throw new InvalidOperationException( "Meter is of unknown type!" );
85
86 updateSet = true;
87 }
88
94 protected void UnsetChangedEvent()
95 {
96 if ( !updateSet ) return;
97
98 if ( Meter is IntMeter ) ( (IntMeter)Meter ).Changed -= UpdateIntValue;
99 else if ( Meter is DoubleMeter ) ( (DoubleMeter)Meter ).Changed -= UpdateDoubleValue;
100 else throw new InvalidOperationException( "Meter is of unknown type!" );
101
102 updateSet = false;
103 }
104
108 public virtual void BindTo( Meter meter )
109 {
111 Meter = meter;
112 Bound = true;
114 UpdateValue();
115 }
116
120 public virtual void Unbind()
121 {
123 }
124
125 private void UpdateIntValue( int oldValue, int newValue )
126 {
127 UpdateValue();
128 }
129
130 private void UpdateDoubleValue( double oldValue, double newValue )
131 {
132 UpdateValue();
133 }
134
139 protected abstract void UpdateValue();
140 }
141}
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
Definition: Animation.cs:62
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGa...
Definition: DoubleMeter.cs:11
Action AddedToGame
Tapahtuu, kun olio lisätään peliin.
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Definition: IntMeter.cs:11
Mittari, joka mittaa erityyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge.
Definition: Meter.cs:100
Kuvio.
Definition: Shapes.cs:47
Käyttöliittymän komponentti.
Definition: Appearance.cs:6
Widget, joka voidaan asettaa näyttämään halutun mittarin arvoa.
void SetChangedEvent()
Asettaa tapahtuman, joka reagoi Meter.Value muutokseen kutsumalla UpdateValue-metodia.
BindableWidget(double width, double height)
Alustaa widgetin.
bool Bound
Onko komponentti sidottu mittariin.
virtual void Unbind()
Lopettaa mittarin arvon seuraamisen.
void UpdateDoubleValue(double oldValue, double newValue)
void UpdateIntValue(int oldValue, int newValue)
abstract void UpdateValue()
Kutsutaan automaattisesti, kun mittarin arvo on muuttunut. Ylikirjoita tämä koodilla,...
BindableWidget(ILayout layout)
Alustaa widgetin.
BindableWidget(Animation animation)
Alustaa widgetin.
BindableWidget(double width, double height, Shape shape)
Alustaa widgetin.
void UnsetChangedEvent()
Poistaa käytöstä tapahtuman, joka reagoi Meter.Value muutokseen kutsumalla UpdateValue-metodia....
virtual void BindTo(Meter meter)
Asettaa kontrollin seuraamaan mittarin arvoa.
Rajapinta asettelijalle. Asettelija asettelee widgetin lapsioliot siten, että ne mahtuvat widgetin si...
Definition: ILayout.cs:95