123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #include "Timer.h"
- #include "Spiel.h"
- Timer::Timer( Schrift *zSchrift, int id, const char *name, int maxZeit, int x, int y, bool visible, bool autoWiederhohlung, bool runns, int farbe )
- : GameObject( TIMER, x, y, 0, 0 )
- {
- this->id = id;
- this->name = name;
- this->maxZeit = maxZeit;
- currentTime = (float)maxZeit;
- sichtbar = visible;
- this->autoWiederhohlung = autoWiederhohlung;
- tr.setSchriftSize( 12 );
- tr.setSchriftZ( zSchrift->getThis() );
- this->runns = runns;
- this->pause = 0;
- this->farbe = farbe;
- }
- void Timer::start( Spiel *zSpiel, bool restart )
- {
- if( runns && !restart )
- return;
- currentTime = (float)maxZeit;
- runns = true;
- pause = 0;
- zSpiel->setTimerZuletztGestartet( (Timer *)getThis() );
- Ereignis *e = new Ereignis( TIMER_BEGINNT );
- e->addParameter( "Betroffener Timer", this->getThis() );
- zSpiel->throwEvent( e );
- }
- void Timer::setPause( Spiel *zSpiel, bool pause )
- {
- if( pause && !this->pause )
- zSpiel->setTimerZuletztPausiert( (Timer *)getThis() );
- if( !pause && this->pause )
- zSpiel->setTimerZuletztFortgesetzt( (Timer *)getThis() );
- this->pause = pause;
- }
- void Timer::setMaxZeit( int sekunden )
- {
- this->maxZeit = maxZeit;
- }
- void Timer::setAutoWiederhohlung( bool wiederhohlung )
- {
- this->autoWiederhohlung = autoWiederhohlung;
- }
- void Timer::setSichtbar( bool visible )
- {
- this->sichtbar = sichtbar;
- }
- void Timer::setFarbe( int farbe )
- {
- this->farbe = farbe;
- }
- void Timer::tick( double time, Spiel *zSpiel )
- {
- if( runns && !pause )
- {
- currentTime -= (float)time;
- if( currentTime <= 0 )
- {
- zSpiel->setTimerZuletztAbgelaufen( (Timer *)getThis() );
- runns = 0;
- Ereignis *e = new Ereignis( TIMER_RUNNS_OUT );
- e->addParameter( "Betroffener Timer", this->getThis() );
- zSpiel->throwEvent( e );
- if( autoWiederhohlung )
- start( zSpiel );
- }
- }
- }
- void Timer::render( Bild &rObj )
- {
- w = (float)tr.getTextBreite( Text( (int)( currentTime * 100 ) / 100.0 ) );
- h = (float)tr.getTextHeight( Text( (int)( currentTime * 100 ) / 100.0 ) );
- if( sichtbar && runns )
- tr.renderText( (int)x, (int)y, Text( (int)( currentTime * 100 ) / 100.0 ), rObj, farbe );
- }
- void Timer::setZeit( float zeit )
- {
- currentTime = zeit;
- }
- float Timer::getTimeLeft() const
- {
- return currentTime;
- }
- bool Timer::istSichtbar() const
- {
- return sichtbar;
- }
- int Timer::getFarbe() const
- {
- return farbe;
- }
- bool Timer::isRunning() const
- {
- return runns;
- }
- bool Timer::istPausiert() const
- {
- return pause;
- }
- int Timer::getMaxTime() const
- {
- return maxZeit;
- }
- bool Timer::istAutoWiederhohlung() const
- {
- return autoWiederhohlung;
- }
- int Timer::getId() const
- {
- return id;
- }
|