#include "StatistikRunde.h" #include // Inhalt der StatistikRunde Klasse aus StatistikRunde.h // Konstruktor StatistikRunde::StatistikRunde( UIInit &uiFactory, Array< SSDRunde * > *dat, bool historie ) : ReferenceCounter(), rundenBild( uiFactory.createBildZ( uiFactory.initParam ) ), rundenNummer( uiFactory.createTextFeld( uiFactory.initParam ) ), rundenDauer( uiFactory.createTextFeld( uiFactory.initParam ) ), rundenSieger( uiFactory.createTextFeld( uiFactory.initParam ) ), spielfeldNutzung( uiFactory.createTextFeld( uiFactory.initParam ) ), verbleibend( uiFactory.createTextFeld( uiFactory.initParam ) ), daten( dat ), auswahl( -1 ), verb( 300 ), rend( 0 ) { rundenBild->setPosition( 525, 40 ); rundenBild->setSize( 245, 245 ); rundenNummer->setPosition( 580, 295 ); rundenNummer->setSize( 190, 20 ); rundenNummer->setText( "Runde: " ); rundenDauer->setPosition( 580, 325 ); rundenDauer->setSize( 190, 20 ); rundenDauer->setText( "Dauer: " ); rundenSieger->setPosition( 580, 355 ); rundenSieger->setSize( 190, 20 ); rundenSieger->setText( "Sieger: " ); spielfeldNutzung->setPosition( 580, 385 ); spielfeldNutzung->setSize( 190, 20 ); spielfeldNutzung->setText( "Spielfeldnutzung: " ); verbleibend->setPosition( 580, 415 ); verbleibend->setSize( 190, 20 ); verbleibend->setText( "Verbleibende Zeit: 300" ); 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->release(); 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::doPublicMausEreignis( MausEreignis &me ) { rundenBild->doPublicMausEreignis( 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; }