Jypeli  9
The simple game programming library
MeterAddOperation.cs
Siirry tämän tiedoston dokumentaatioon.
1 using System;
2 
3 namespace Jypeli
4 {
9  {
12  int dx;
13 
14  public bool Active
15  {
16  get { return timer.Enabled; }
17  }
18 
19  internal IntMeterAddOperation( IntMeter meter, int change, double seconds )
20  {
21  this.meter = meter;
22  this.dx = Math.Sign( change );
23  int times = (int)Math.Abs( change );
24 
25  timer = new Timer();
26  timer.Times.LowerLimit += OnFinished;
27  timer.Interval = Math.Abs( seconds / change );
28  timer.Timeout += Tick;
29  timer.Start( times );
30  }
31 
32  private void Tick()
33  {
34  meter.Value += dx;
35  }
36 
37  public void Stop()
38  {
39  timer.Stop();
40  if ( Stopped != null ) Stopped();
41  }
42 
43  public event Action Finished;
44  public event Action Stopped;
45 
46  private void OnFinished()
47  {
48  if ( Finished != null )
49  Finished();
50  }
51  }
52 
57  {
60  double dx;
61 
62  public bool Active
63  {
64  get { return timer.Enabled; }
65  }
66 
67  internal DoubleMeterAddOperation( DoubleMeter meter, double change, double seconds )
68  {
69  this.meter = meter;
70 
71  double dt = findDt( seconds );
72  this.dx = dt * change / seconds;
73  int times = (int)( seconds / dt );
74 
75  timer = new Timer();
76  timer.Times.LowerLimit += OnFinished;
77  timer.Interval = dt;
78  timer.Timeout += Tick;
79  timer.Start( times );
80  }
81 
82  private double findDt( double seconds )
83  {
84  double dt = seconds;
85  while ( dt > 0.05 ) dt /= 2;
86  return dt;
87  }
88 
89  private void Tick()
90  {
91  meter.Value += dx;
92  }
93 
94  public void Stop()
95  {
96  timer.Stop();
97  if ( Stopped != null ) Stopped();
98  }
99 
100  public event Action Finished;
101  public event Action Stopped;
102 
103  private void OnFinished()
104  {
105  if ( Finished != null )
106  Finished();
107  }
108  }
109 }
Jypeli.Timer.Enabled
bool Enabled
Ajastin päällä/pois päältä.
Definition: Timer.cs:66
Jypeli.IntMeterAddOperation.timer
Timer timer
Definition: MeterAddOperation.cs:11
Jypeli.DoubleMeter
Mittari, joka mittaa double-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGa...
Definition: DoubleMeter.cs:11
Jypeli.IntMeterAddOperation.dx
int dx
Definition: MeterAddOperation.cs:12
Jypeli.DoubleMeterAddOperation.Tick
void Tick()
Definition: MeterAddOperation.cs:89
Jypeli.IntMeterAddOperation.Active
bool Active
Definition: MeterAddOperation.cs:15
Jypeli.DoubleMeterAddOperation.findDt
double findDt(double seconds)
Definition: MeterAddOperation.cs:82
Jypeli.Timer.Timeout
Action Timeout
Tapahtuu väliajoin.
Definition: Timer.cs:44
Jypeli
Definition: Automobile.cs:5
Jypeli.DoubleMeterAddOperation.dx
double dx
Definition: MeterAddOperation.cs:60
Jypeli.DoubleMeterAddOperation.Active
bool Active
Definition: MeterAddOperation.cs:63
Jypeli.DoubleMeterAddOperation.OnFinished
void OnFinished()
Definition: MeterAddOperation.cs:103
Jypeli.IntMeterAddOperation.OnFinished
void OnFinished()
Definition: MeterAddOperation.cs:46
Jypeli.DoubleMeterAddOperation.Finished
Action Finished
Definition: MeterAddOperation.cs:100
Jypeli.IntMeterAddOperation.IntMeterAddOperation
IntMeterAddOperation(IntMeter meter, int change, double seconds)
Definition: MeterAddOperation.cs:19
Jypeli.Operation
Käynnissä oleva tehtävä
Definition: Operation.cs:9
Jypeli.DoubleMeterAddOperation.Stop
void Stop()
Pysäyttää tehtävän.
Definition: MeterAddOperation.cs:94
Jypeli.Timer.Interval
double Interval
Aika sekunneissa, jonka välein TimeOut tapahtuu.
Definition: Timer.cs:87
Jypeli.DoubleMeterAddOperation.timer
Timer timer
Definition: MeterAddOperation.cs:59
Jypeli.IntMeterAddOperation.Finished
Action Finished
Definition: MeterAddOperation.cs:43
Jypeli.IntMeterAddOperation.Tick
void Tick()
Definition: MeterAddOperation.cs:32
Jypeli.IntMeterAddOperation.meter
IntMeter meter
Definition: MeterAddOperation.cs:10
Jypeli.IntMeterAddOperation.Stopped
Action Stopped
Definition: MeterAddOperation.cs:44
Jypeli.IntMeterAddOperation
Tehtävä mittarin arvon kasvattamiselle.
Definition: MeterAddOperation.cs:9
Jypeli.DoubleMeterAddOperation
Tehtävä mittarin arvon kasvattamiselle.
Definition: MeterAddOperation.cs:57
Jypeli.Timer.Stop
void Stop()
Pysäyttää ajastimen ja nollaa sen tilan.
Definition: Timer.cs:292
Jypeli.DoubleMeterAddOperation.Stopped
Action Stopped
Definition: MeterAddOperation.cs:101
System
Definition: CFFauxAttributes.cs:29
Jypeli.Timer
Ajastin, joka voidaan asettaa laukaisemaan tapahtumia tietyin väliajoin.
Definition: Timer.cs:38
Jypeli.IntMeter
Mittari, joka mittaa int-tyyppisiä arvoja. Sidottavissa näyttöihin, kuten ValueDisplay ja BarGauge...
Definition: IntMeter.cs:11
Jypeli.Timer.Times
IntMeter Times
Määrää, kuinka monta kertaa tapahtuma suoritetaan. Kun tapahtumaa on suoritettu tarpeeksi,...
Definition: Timer.cs:141
Jypeli.DoubleMeterAddOperation.meter
DoubleMeter meter
Definition: MeterAddOperation.cs:58
Jypeli.Timer.Start
void Start()
Käynnistää ajastimen.
Definition: Timer.cs:257
Jypeli.DoubleMeterAddOperation.DoubleMeterAddOperation
DoubleMeterAddOperation(DoubleMeter meter, double change, double seconds)
Definition: MeterAddOperation.cs:67
Jypeli.IntMeterAddOperation.Stop
void Stop()
Pysäyttää tehtävän.
Definition: MeterAddOperation.cs:37