#include "Ende.h" #include #include #include #include #include // Inhalt der Ende Klasse aus Ende.h // Konstruktor Ende::Ende( Schrift *zSchrift ) { rahmen = new LRahmen(); rahmen->setSize( 200, 100 ); 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( 200, 50 ); warten = new TextFeld(); warten->setStyle( ( TextFeld::Style::Text | TextFeld::Style::Center ) & ~TextFeld::Style::Sichtbar ); warten->setSchriftZ( zSchrift->getThis() ); warten->setText( "Bitte warten..." ); warten->setSchriftFarbe( 0xFFFFFFFF ); warten->setSize( 200, 50 ); ok = new Knopf( ); ok->setStyle( Knopf::Style::Normal ); ok->setSize( 100, 20 ); ok->setText( "Weiter" ); ok->setSchriftZ( zSchrift->getThis() ); weiter = 0; ref = 1; } // Destruktor Ende::~Ende() { rahmen->release(); text->release(); warten->release(); ok->release(); } // nicht constant void Ende::setGewonnen( char gewonnen ) { if( gewonnen == 1 ) { text->setText( "Du hast gewonnen." ); text->setSchriftFarbe( 0xFF00FF00 ); } else if( !gewonnen ) { text->setText( "Du hast verloren." ); text->setSchriftFarbe( 0xFFFF0000 ); } else { text->setText( "Unentschieden." ); text->setSchriftFarbe( 0xFFFFFFFF ); } } void Ende::doMausEreignis( MausEreignis &me ) { bool vera = me.verarbeitet; ok->doMausEreignis( me ); if( !vera && me.verarbeitet && me.id == ME_RLinks ) { ok->removeStyle( Knopf::Style::Sichtbar ); warten->addStyle( TextFeld::Style::Sichtbar ); weiter = 1; } me.verarbeitet = 1; } void Ende::render( Bild &zRObj ) { 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() + 50 ); warten->render( zRObj ); ok->setPosition( rahmen->getX() + rahmen->getBreite() / 2 - ok->getBreite() / 2, rahmen->getY() + 65 ); ok->render( zRObj ); } // constant bool Ende::getWeiter() const { return weiter; } // Reference Counting Ende *Ende::getThis() { ref++; return this; } Ende *Ende::release() { ref--; if( !ref ) delete this; return 0; }