#include "RundenEnde.h" #include #include #include #include #include // Inhalt der RundenEnde Klasse aus RundenEnde.h // Konstruktor RundenEnde::RundenEnde( Schrift *zSchrift ) { rahmen = new LRahmen(); rahmen->setSize( 220, 70 ); rahmen->setRamenBreite( 2 ); rahmen->setFarbe( 0xFFFFFFFF ); text = new TextFeld(); text->setStyle( TextFeld::Style::Text | TextFeld::Style::Center ); text->setSchriftZ( zSchrift->getThis() ); text->setText( "" ); text->setSchriftFarbe( 0xFFFFFFFF ); text->setSize( 220, 50 ); warten = new TextFeld(); warten->setStyle( TextFeld::Style::Text | TextFeld::Style::Center ); warten->setSchriftZ( zSchrift->getThis() ); warten->setText( "Nächste Runde startet in: 5" ); warten->setSchriftFarbe( 0xFFFFFFFF ); warten->setSize( 220, 45 ); sichtbar = 0; ref = 1; } // Destruktor RundenEnde::~RundenEnde() { rahmen->release(); text->release(); warten->release(); } // nicht constant void RundenEnde::setSichtbar( bool b ) { sichtbar = b; } void RundenEnde::setGewonnen( bool gewonnen ) { if( gewonnen ) { text->setText( "Du hast die Runde gewonnen." ); text->setSchriftFarbe( 0xFF00FF00 ); } else { text->setText( "Du hast die Runde verloren." ); text->setSchriftFarbe( 0xFFFF0000 ); } } void RundenEnde::setZeit( int sekunden ) { warten->setText( "Nächste Runde startet in: " ); warten->zText()->append( sekunden ); } void RundenEnde::render( Bild &zRObj ) { if( sichtbar ) { rahmen->setPosition( zRObj.getBreite() / 2 - rahmen->getBreite() / 2, zRObj.getHeight() / 2 - rahmen->getHeight() / 2 ); zRObj.alphaRegion( rahmen->getX(), rahmen->getY(), rahmen->getBreite(), rahmen->getHeight(), 0xA0000000 ); rahmen->render( zRObj ); text->setPosition( rahmen->getX(), rahmen->getY() ); text->render( zRObj ); warten->setPosition( rahmen->getX(), rahmen->getY() + 25 ); warten->render( zRObj ); } } // constant bool RundenEnde::istSichtbar() const { return sichtbar; } // Reference Counting RundenEnde *RundenEnde::getThis() { ref++; return this; } RundenEnde *RundenEnde::release() { ref--; if( !ref ) delete this; return 0; }