Jypeli  9
The simple game programming library
BindableWidget.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 
3 namespace 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;
113  SetChangedEvent();
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 }
Jypeli.Meter
Mittari, joka mittaa erityyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge.
Definition: Meter.cs:61
Jypeli.DoubleMeter
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGa...
Definition: DoubleMeter.cs:11
Jypeli.Widgets.BindableWidget.UpdateIntValue
void UpdateIntValue(int oldValue, int newValue)
Definition: BindableWidget.cs:125
Jypeli.Widgets.BindableWidget.BindTo
virtual void BindTo(Meter meter)
Asettaa kontrollin seuraamaan mittarin arvoa.
Definition: BindableWidget.cs:108
Jypeli.Widgets.BindableWidget.SetChangedEvent
void SetChangedEvent()
Asettaa tapahtuman, joka reagoi Meter.Value muutokseen kutsumalla UpdateValue-metodia.
Definition: BindableWidget.cs:78
Jypeli.Widgets.BindableWidget.CreateInnerMeter
void CreateInnerMeter()
Definition: BindableWidget.cs:66
Jypeli.Shape
Kuvio.
Definition: Shapes.cs:47
Jypeli.Widgets.BindableWidget.BindableWidget
BindableWidget(double width, double height)
Alustaa widgetin.
Definition: BindableWidget.cs:38
Jypeli.Widgets.BindableWidget
Widget, joka voidaan asettaa näyttämään halutun mittarin arvoa.
Definition: BindableWidget.cs:9
Jypeli.Game.AssertInitialized
static void AssertInitialized(Action actionMethod)
Suorittaa aliohjelman kun peli on varmasti alustettu.
Definition: DelayedActions.cs:53
Jypeli.Widgets.BindableWidget.UnsetChangedEvent
void UnsetChangedEvent()
Poistaa käytöstä tapahtuman, joka reagoi Meter.Value muutokseen kutsumalla UpdateValue-metodia....
Definition: BindableWidget.cs:94
Jypeli.Widgets.BindableWidget.updateSet
bool updateSet
Definition: BindableWidget.cs:10
Jypeli.Widgets.BindableWidget.BindableWidget
BindableWidget(ILayout layout)
Alustaa widgetin.
Definition: BindableWidget.cs:60
Jypeli.ILayout
Rajapinta asettelijalle. Asettelija asettelee widgetin lapsioliot siten, että ne mahtuvat widgetin si...
Definition: ILayout.cs:84
Jypeli.Widget
Käyttöliittymän komponentti.
Definition: Appearance.cs:6
Jypeli.Widgets.BindableWidget.BindableWidget
BindableWidget(Animation animation)
Alustaa widgetin.
Definition: BindableWidget.cs:27
Jypeli.Animation
Sarja kuvia, jotka vaihtuvat halutulla nopeudella. Yksi animaatio koostuu yhdestä tai useammasta kuva...
Definition: Animation.cs:62
Jypeli.Widgets
Definition: Background.cs:34
System
Definition: CFFauxAttributes.cs:29
Jypeli.IntMeter
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Definition: IntMeter.cs:11
Jypeli.Widgets.BindableWidget.UpdateValue
abstract void UpdateValue()
Kutsutaan automaattisesti, kun mittarin arvo on muuttunut. Ylikirjoita tämä koodilla,...
Jypeli.Widgets.BindableWidget.BindableWidget
BindableWidget(double width, double height, Shape shape)
Alustaa widgetin.
Definition: BindableWidget.cs:50
Jypeli.Widgets.BindableWidget.Bound
bool Bound
Onko komponentti sidottu mittariin.
Definition: BindableWidget.cs:21
Jypeli.Game
Definition: Content.cs:46
Jypeli.Widgets.BindableWidget.UpdateDoubleValue
void UpdateDoubleValue(double oldValue, double newValue)
Definition: BindableWidget.cs:130
Jypeli.Widgets.BindableWidget.Unbind
virtual void Unbind()
Lopettaa mittarin arvon seuraamisen.
Definition: BindableWidget.cs:120