#include "StatistikRunde.h" #include "../../Initialisierung/Initialisierung.h" #include // Inhalt der StatistikRunde Klasse aus StatistikRunde.h // Konstruktor StatistikRunde::StatistikRunde( Schrift *zSchrift, Array< SSDRunde* > *dat, bool historie ) : rundenBild( initBildZ( 525, 40, 245, 245, BildZ::Style::normal, 0 ) ), rundenNummer( initTextFeld( 580, 295, 190, 20, zSchrift, TextFeld::Style::Text, "Runde: " ) ), rundenDauer( initTextFeld( 580, 325, 190, 20, zSchrift, TextFeld::Style::Text, "Dauer: " ) ), rundenSieger( initTextFeld( 580, 355, 190, 20, zSchrift, TextFeld::Style::Text, "Sieger: " ) ), spielfeldNutzung( initTextFeld( 580, 385, 190, 20, zSchrift, TextFeld::Style::Text, "Spielfeldnutzung: " ) ), verbleibend( initTextFeld( 580, 415, 190, 20, zSchrift, TextFeld::Style::Text, "Verbleibende Zeit: 300" ) ), daten( dat ), auswahl( -1 ), verb( 300 ), rend( 0 ), ref( 1 ) { if( historie ) { verbleibend->removeStyle( TextFeld::Style::Sichtbar ); rundenBild->setPosition( 520, 10 ); rundenBild->setSize( 250, 250 ); rundenNummer->setPosition( 520, 270 ); rundenDauer->setPosition( 520, 300 ); rundenSieger->setPosition( 520, 330 ); spielfeldNutzung->setPosition( 520, 360 ); } } // Destruktor StatistikRunde::~StatistikRunde() { rundenBild; rundenNummer->release(); rundenDauer->release(); rundenSieger->release(); spielfeldNutzung->release(); verbleibend->release(); daten->release(); } // nicht constant void StatistikRunde::setRunde( int nummer ) { if( nummer != auswahl ) { Bild *b = new Bild(); b->neuBild( 1, 1, 0 ); rundenBild->setBildZ( b ); rundenNummer->setText( "Runde: " ); rundenDauer->setText( "Dauer: " ); rundenSieger->setText( "Sieger: " ); spielfeldNutzung->setText( "Spielfeldnutzung: " ); int anz = daten->getEintragAnzahl(); for( int i = 0; i < anz; i++ ) { if( daten->hat( i ) && daten->get( i )->rundenNummer == nummer ) { Bild *b = new Bild(); b->neuBild( daten->get( i )->rundenBild.getBreite(), daten->get( i )->rundenBild.getHeight(), 0 ); b->drawBild( 0, 0, b->getBreite(), b->getHeight(), daten->get( i )->rundenBild ); rundenBild->setBildZ( b ); *rundenNummer->zText() += nummer + 1; *rundenDauer->zText() += daten->get( i )->rundenDauer / 60; *rundenDauer->zText() += ":"; *rundenDauer->zText() += daten->get( i )->rundenDauer % 60; int anz2 = daten->get( i )->teams.getEintragAnzahl(); for( int j = 0; j < anz; j++ ) { if( daten->get( i )->teams.hat( j ) && daten->get( i )->teams.get( j )->teamNummer == daten->get( i )->rundenSieger ) { *rundenSieger->zText() += daten->get( i )->teams.get( j )->teamName.getText(); break; } } *spielfeldNutzung->zText() += daten->get( i )->spielfeldNutzung; *spielfeldNutzung->zText() += "%"; auswahl = nummer; rend = 1; return; } } auswahl = -1; rend = 1; } } void StatistikRunde::doMausEreignis( MausEreignis &me ) { rundenBild->doMausEreignis( me ); } bool StatistikRunde::tick( double tickVal ) { int verbl = (int)verb; verb -= tickVal; if( verb < 0 ) verb = 0; if( verbl != (int)verb ) { verbleibend->setText( "Verbleibende Zeit: " ); *verbleibend->zText() += (int)verb; rend = 1; } rend |= rundenBild->tick( tickVal ); bool ret = rend; rend = 0; return ret; } void StatistikRunde::render( Bild &zRObj ) { rundenBild->render( zRObj ); rundenNummer->render( zRObj ); rundenDauer->render( zRObj ); rundenSieger->render( zRObj ); spielfeldNutzung->render( zRObj ); verbleibend->render( zRObj ); } // constant bool StatistikRunde::mussVerlassen() const { return verb == 0; } // Reference Counting StatistikRunde *StatistikRunde::getThis() { ref++; return this; } StatistikRunde *StatistikRunde::release() { ref--; if( !ref ) delete this; return 0; }