31using System.Collections.Generic;
60 public abstract class Meter
79 Type meterType = this.GetType();
82 Type[] genargs = meterType.GenericTypeArguments;
84 Type[] genargs = meterType.GetGenericArguments();
87 if ( genargs.Length < 1 )
throw new ArgumentException(
"This meter is not typed" );
88 if ( genargs[0] != typeof(
T ) )
throw new ArgumentException( String.Format(
"This meter measures {0}, not {1}", genargs[0].Name, typeof(
T ).Name ) );
99 public abstract class Meter<ValueType> :
Meter where ValueType : struct, IComparable<ValueType>, IEquatable<ValueType>
133 if ( value.Equals(
val ) )
136 ValueType oldval =
val;
187 public delegate
void ChangeHandler( ValueType oldValue, ValueType newValue );
205 private void OnChange( ValueType oldValue, ValueType newValue )
211 private void CheckLimits( ValueType oldValue, ValueType newValue )
248 public Meter( ValueType defaultVal, ValueType minVal, ValueType maxVal )
340 private static ValueType
clampValue( ValueType v, ValueType min, ValueType max )
342 if ( v.CompareTo( min ) < 0 )
345 if ( v.CompareTo( max ) > 0 )
351 private static void clampValue( ref ValueType v, ValueType min, ValueType max )
353 if ( v.CompareTo( min ) < 0 )
356 else if ( v.CompareTo( max ) > 0 )
371 return Value.ToString();
Mittari, joka mittaa erityyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge.
static void clampValue(ref ValueType v, ValueType min, ValueType max)
ChangeHandler Changed
Tapahtuu, kun mittarin arvo muuttuu.
void CheckLimits(ValueType oldValue, ValueType newValue)
void CheckTriggers(ValueType oldValue, ValueType newValue)
void Reset()
Palauttaa mittarin arvon oletusarvoonsa.
ValueType MaxValue
Mittarin suurin sallittu arvo. Kun mittari saavuttaa tämän arvon, laukeaa tapahtuma UpperLimit.
static ValueType clampValue(ValueType v, ValueType min, ValueType max)
void OnChange(ValueType oldValue, ValueType newValue)
abstract double RelativeValue
Mittarin suhteellinen arvo (minimi 0, maksimi 1)
void SetValue(ValueType value)
Asettaa mittarille arvon. Sama kuin Value-ominaisuuteen sijoitus, mutta helpompi käyttää tapahtumakäs...
void AddTrigger(ValueType value, TriggerDirection direction, Action method)
Lisää mittarille rajan, jonka yli mentäessä laukaistaan aliohjelma.
Action LowerLimit
Tapahtuu, kun mittari saavuttaa pienimmän sallitun arvonsa.
Meter(ValueType defaultVal, ValueType minVal, ValueType maxVal)
Luo uuden mittarin.
void RemoveTriggers(Action method)
Poistaa kaikki raja-arvotapahtumat, jotka kutsuvat tiettyä aliohjelmaa.
void AddTrigger(ValueType value, TriggerDirection direction, Action< ValueType > method)
Lisää mittarille rajan, jonka yli mentäessä laukaistaan aliohjelma.
void RemoveTriggers(ValueType value)
Poistaa kaikki tietylle arvolle asetetut raja-arvotapahtumat.
ValueType Value
Mittarin arvo.
Meter< T > OfType< T >()
Palauttaa mittarin sen todellisessa muodossa, jotta sen kaikkiin jäseniin pääsee käsiksi.
ValueType DefaultValue
Mittarin oletusarvo.
abstract double GetValue()
override String ToString()
Palauttaa mittarin arvon merkkijonona.
void ClearTriggers()
Poistaa kaikki raja-arvotapahtumat.
Meter(Meter< ValueType > src)
Luo uuden mittarin kopiona parametrina annetusta.
abstract double GetMaxValue()
delegate void ChangeHandler(ValueType oldValue, ValueType newValue)
Mittarin muutostapahtumankäsittelijä.
ValueType MinValue
Mittarin pienin sallittu arvo. Kun mittari saavuttaa tämän arvon, laukeaa tapahtuma LowerLimit.
Action UpperLimit
Tapahtuu, kun mittari saavuttaa suurimman sallitun arvonsa.
abstract double GetMinValue()
TriggerDirection
Suunta mittarin muutokselle.
TriggerDirection direction
Trigger(ValueType value, TriggerDirection direction, Action method)