123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482 |
- #include "AccountHistorie.h"
- #include "../../../Global/Initialisierung.h"
- #include "../../../Leser/KartenLeser.h"
- #include "../../../Global/Variablen.h"
- #include <Text.h>
- #include <Rahmen.h>
- #include <DateiSystem.h>
- #include <Zeit.h>
- #include <Punkt.h>
- #include <Globals.h>
- typedef AccountHistorieStatistikV* ( *AHSSDLLStart )( void );
- typedef AufzeichnungV* ( *AHSADLLStart )( void );
- // Inahlt der AHSpielStatistik Klasse aus AccountHistorie.h
- // Konstruktor
- AHSpielStatistik::AHSpielStatistik( Schrift *schrift )
- : Thread(),
- schrift( schrift )
- {
- statistikF = initFenster( 10, 40, 780, 450, schrift, Fenster::Style::Sichtbar | Fenster::Style::Titel | Fenster::Style::TitelBuffered | Fenster::Style::Rahmen, "Spiel Ergebnis" );
- laden = (Animation2D*)ladeAnimation->dublizieren();
- laden->setSichtbar( 0 );
- laden->setPosition( 380, 245 );
- dllName = new Text( "" );
- dllHandle = 0;
- alpha = 0;
- sichtbar = 0;
- statistik = 0;
- tickVal = 0;
- }
- // Destruktor
- AHSpielStatistik::~AHSpielStatistik()
- {
- statistikF->release();
- if( dllHandle )
- reset();
- dllName->release();
- schrift->release();
- laden->release();
- }
- // nicht constant
- void AHSpielStatistik::reset()
- {
- if( run )
- warteAufThread( INFINITE );
- if( dllHandle )
- {
- if( statistik )
- statistik = statistik->release();
- Framework::getDLLRegister()->releaseDLL( *dllName );
- dllHandle = 0;
- }
- }
- bool AHSpielStatistik::ladeDaten( int spielId, int karteId )
- {
- if( dllHandle )
- reset();
- KartenLeser *reader = KartenLeser::getInstance();
- reader->lock();
- reader->setKarteId( karteId );
- Text *pfad = reader->getSpielPfad();
- if( !pfad )
- {
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( reader->getLetzterFehler() ), new Text( "Ok" ) );
- reader->unlock();
- reader->release();
- return 0;
- }
- pfad->append( "bin/" );
- Text *spielArtName = reader->getSpielName();
- if( !spielArtName )
- {
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( reader->getLetzterFehler() ), new Text( "Ok" ) );
- reader->unlock();
- reader->release();
- pfad->release();
- return 0;
- }
- pfad->append( spielArtName->getText() );
- pfad->append( ".dll" );
- reader->unlock();
- reader->release();
- dllName->setText( "Spiele/" );
- dllName->append( spielArtName->getText() );
- dllName->append( ".dll" );
- spielArtName->release();
- dllHandle = Framework::getDLLRegister()->ladeDLL( *dllName, *pfad );
- if( !dllHandle )
- {
- Text *msg = new Text( "Die DLL Datei '" );
- msg->append( pfad->getText() );
- msg->append( "' konnte nicht geladen werden." );
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg, new Text( "Ok" ) );
- pfad->release();
- return 0;
- }
- AHSSDLLStart startFunk = (AHSSDLLStart)GetProcAddress( dllHandle, "GetAccountHistorieStatistik" );
- if( !startFunk )
- {
- if( dllHandle )
- {
- Framework::getDLLRegister()->releaseDLL( *dllName );
- dllHandle = 0;
- }
- Text *msg = new Text( "Die Funktion 'GetAccountHistorieStatistik' konnte in der DLL Datei '" );
- msg->append( pfad->getText() );
- msg->append( "' nicht gefunden werden." );
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg, new Text( "Ok" ) );
- pfad->release();
- return 0;
- }
- pfad->release();
- statistik = startFunk();
- if( !statistik )
- {
- if( dllHandle )
- {
- Framework::getDLLRegister()->releaseDLL( *dllName );
- dllHandle = 0;
- }
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Für diese Spielart ist keine genauere Ansicht der Spiel Ergebnisse verfügbar." ), new Text( "Ok" ) );
- return 0;
- }
- this->spielId = spielId;
- statistik->setSchrift( schrift->getThis() );
- statistik->setBildschirm( hauptScreen );
- start();
- return 1;
- }
- void AHSpielStatistik::thread()
- {
- laden->setSichtbar( 1 );
- KSGClient::HistorieServerClient *historieClient = infoClient->createHistorieServerClient( spielId );
- if( !historieClient )
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( infoClient->getLetzterFehler() ), new Text( "Ok" ) );
- else
- {
- if( !historieClient->downloadSpielHistorie() )
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( historieClient->getLetzterFehler() ), new Text( "Ok" ) );
- else
- {
- statistik->ladeDaten( spielId );
- if( sichtbar )
- statistik->setSichtbar( 1 );
- laden->setSichtbar( 0 );
- historieClient->release();
- return;
- }
- historieClient->release();
- }
- laden->setSichtbar( 0 );
- setSichtbar( 0 );
- }
- void AHSpielStatistik::setPosition( int x, int y )
- {
- statistikF->setPosition( x, y );
- }
- void AHSpielStatistik::setSichtbar( bool sichtbar )
- {
- if( !statistik )
- return;
- if( !run )
- statistik->setSichtbar( sichtbar );
- this->sichtbar = sichtbar;
- if( sichtbar && !alpha )
- alpha = 1;
- }
- void AHSpielStatistik::doMausEreignis( MausEreignis &me )
- {
- if( !statistik || alpha != 255 )
- return;
- me.mx -= 1 + statistikF->getX();
- me.my -= 20 + statistikF->getY();
- statistik->doMausEreignis( me );
- if( statistik->wurdeGeschlossen() )
- setSichtbar( 0 );
- me.mx += 1 + statistikF->getX();
- me.my += 20 + statistikF->getY();
- }
- void AHSpielStatistik::doTastaturEreignis( TastaturEreignis &te )
- {
- if( !statistik || alpha != 255 )
- return;
- statistik->doTastaturEreignis( te );
- }
- bool AHSpielStatistik::tick( double tickVal )
- {
- if( !statistik || !alpha )
- return 0;
- bool ret = statistik->tick( tickVal );
- ret |= laden->tick( tickVal );
- this->tickVal += tickVal * 150;
- int val = ( int )this->tickVal;
- this->tickVal -= val;
- if( val )
- {
- if( sichtbar && alpha != 255 )
- {
- if( alpha + val > 255 )
- alpha = 255;
- else
- alpha += (unsigned char)val;
- ret = 1;
- }
- if( !sichtbar && alpha )
- {
- if( alpha - val < 0 )
- alpha = 0;
- else
- alpha -= (unsigned char)val;
- if( !alpha && statistik->istNochSichtbar() )
- alpha = 1;
- ret = 1;
- }
- }
- return ret;
- }
- void AHSpielStatistik::render( Bild &zRObj )
- {
- if( !statistik || !alpha )
- return;
- zRObj.setAlpha( alpha );
- statistikF->render( zRObj );
- if( !zRObj.setDrawOptions( statistikF->getX() + 1, statistikF->getY() + 21, statistikF->getBreite() - 2, statistikF->getHeight() - 22 ) )
- {
- zRObj.releaseAlpha();
- return;
- }
- statistik->render( zRObj );
- zRObj.releaseDrawOptions();
- laden->render( zRObj );
- zRObj.releaseAlpha();
- }
- // constant
- bool AHSpielStatistik::istNochSichtbar() const
- {
- if( alpha )
- return 1;
- return statistik ? statistik->istNochSichtbar() : 0;
- }
- // Inahlt der AHSpielVideo Klasse aus AccountHistorie.h
- // Konstruktor
- AHSpielVideo::AHSpielVideo( Schrift *schrift )
- : Thread(),
- schrift( schrift )
- {
- videoF = initFenster( 10, 40, 780, 450, schrift, Fenster::Style::Sichtbar | Fenster::Style::Titel | Fenster::Style::TitelBuffered | Fenster::Style::Rahmen, "Spiel Aufzeichnung" );
- laden = (Animation2D*)ladeAnimation->dublizieren();
- laden->setSichtbar( 0 );
- laden->setPosition( 380, 245 );
- dllName = new Text( "" );
- dllHandle = 0;
- alpha = 0;
- sichtbar = 0;
- video = 0;
- tickVal = 0;
- }
- // Destruktor
- AHSpielVideo::~AHSpielVideo()
- {
- videoF->release();
- if( dllHandle )
- reset();
- dllName->release();
- schrift->release();
- laden->release();
- }
- // nicht constant
- void AHSpielVideo::reset()
- {
- if( run )
- warteAufThread( INFINITE );
- if( dllHandle )
- {
- if( video )
- video = video->release();
- Framework::getDLLRegister()->releaseDLL( *dllName );
- dllHandle = 0;
- }
- }
- bool AHSpielVideo::ladeDaten( int spielId, int karteId )
- {
- if( dllHandle )
- reset();
- KartenLeser *reader = KartenLeser::getInstance();
- reader->lock();
- reader->setKarteId( karteId );
- Text *pfad = reader->getSpielPfad();
- if( !pfad )
- {
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( reader->getLetzterFehler() ), new Text( "Ok" ) );
- reader->unlock();
- reader->release();
- return 0;
- }
- pfad->append( "bin/" );
- Text *spielArtName = reader->getSpielName();
- if( !spielArtName )
- {
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( reader->getLetzterFehler() ), new Text( "Ok" ) );
- reader->unlock();
- reader->release();
- pfad->release();
- return 0;
- }
- pfad->append( spielArtName->getText() );
- pfad->append( ".dll" );
- reader->unlock();
- reader->release();
- dllName->setText( "Spiele/" );
- dllName->append( spielArtName->getText() );
- dllName->append( ".dll" );
- spielArtName->release();
- dllHandle = Framework::getDLLRegister()->ladeDLL( *dllName, *pfad );
- if( !dllHandle )
- {
- Text *msg = new Text( "Die DLL Datei '" );
- msg->append( pfad->getText() );
- msg->append( "' konnte nicht geladen werden." );
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg, new Text( "Ok" ) );
- pfad->release();
- return 0;
- }
- AHSADLLStart startFunk = (AHSADLLStart)GetProcAddress( dllHandle, "GetAufzeichnung" );
- if( !startFunk )
- {
- if( dllHandle )
- {
- Framework::getDLLRegister()->releaseDLL( *dllName );
- dllHandle = 0;
- }
- Text *msg = new Text( "Die Funktion 'GetAufzeichnung' konnte in der DLL Datei '" );
- msg->append( pfad->getText() );
- msg->append( "' nicht gefunden werden." );
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), msg, new Text( "Ok" ) );
- pfad->release();
- return 0;
- }
- pfad->release();
- video = startFunk();
- if( !video )
- {
- if( dllHandle )
- {
- Framework::getDLLRegister()->releaseDLL( *dllName );
- dllHandle = 0;
- }
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Für diese Spielart ist keine Aufzeichnung verfügbar." ), new Text( "Ok" ) );
- return 0;
- }
- this->spielId = spielId;
- video->setSchrift( schrift->getThis() );
- video->setBildschirm( hauptScreen );
- start();
- return 1;
- }
- void AHSpielVideo::thread()
- {
- laden->setSichtbar( 1 );
- KSGClient::HistorieServerClient *historieClient = infoClient->createHistorieServerClient( spielId );
- if( !historieClient->downloadSpielHistorie() )
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( historieClient->getLetzterFehler() ), new Text( "Ok" ) );
- historieClient->release();
- video->ladeSpiel( spielId );
- laden->setSichtbar( 0 );
- if( sichtbar )
- {
- nachLogin->setSpielAufzeichnung( video->getThis() );
- aktion = 7; // Aufzeichnung betreten
- }
- run = 0;
- }
- void AHSpielVideo::setSichtbar( bool sichtbar )
- {
- if( !video )
- return;
- if( sichtbar && !run )
- {
- nachLogin->setSpielAufzeichnung( video->getThis() );
- aktion = 7; // Aufzeichnung betreten
- }
- this->sichtbar = sichtbar;
- if( sichtbar && !alpha )
- alpha = 1;
- }
- bool AHSpielVideo::tick( double tickVal )
- {
- if( !video || !alpha )
- return 0;
- if( video->hatVerlassen( 0 ) && sichtbar )
- setSichtbar( 0 );
- bool ret = laden->tick( tickVal );
- this->tickVal += tickVal * 150;
- int val = ( int )this->tickVal;
- this->tickVal -= val;
- if( val )
- {
- if( sichtbar && alpha != 255 )
- {
- if( alpha + val > 255 )
- alpha = 255;
- else
- alpha += (unsigned char)val;
- ret = 1;
- }
- if( !sichtbar && alpha )
- {
- if( alpha - val < 0 )
- alpha = 0;
- else
- alpha -= (unsigned char)val;
- ret = 1;
- }
- }
- return ret;
- }
- void AHSpielVideo::render( Bild &zRObj )
- {
- if( !video || !alpha )
- return;
- if( !zRObj.setDrawOptions( 0, 0, videoF->getBreite() + 10, videoF->getHeight() + 40 ) )
- return;
- zRObj.setAlpha( alpha );
- videoF->render( zRObj );
- laden->render( zRObj );
- zRObj.releaseAlpha();
- zRObj.releaseDrawOptions();
- }
- // constant
- bool AHSpielVideo::istNochSichtbar() const
- {
- return alpha != 0;
- }
- // Inhalt der AHSLETeamListeSpieler Klasse aus AccountHistorie.h
- // Konstruktor
- AHSLETeamListeSpieler::AHSLETeamListeSpieler( Schrift *zSchrift, char *name, int punkte, char *status, int farbe, int br )
- : nameTF( initTextFeld( 5, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, name ) ),
- punkteTF( initTextFeld( 110, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, Text( "Punkte: " ) += punkte ) ),
- statusTF( initTextFeld( 215, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, status ) ),
- ram( new LRahmen() ),
- ref( 1 )
- {
- TextRenderer tr( zSchrift->getThis() );
- tr.setSchriftSize( 12 );
- nameTF->setSize( tr.getTextBreite( nameTF->zText()->getText() ) + 5, 20 );
- punkteTF->setSize( tr.getTextBreite( punkteTF->zText()->getText() ) + 5, 20 );
- statusTF->setSize( tr.getTextBreite( statusTF->zText()->getText() ) + 5, 20 );
- if( nameTF->getBreite() > 100 )
- punkteTF->setPosition( 10 + nameTF->getBreite(), 0 );
- if( punkteTF->getX() + punkteTF->getBreite() > 210 )
- statusTF->setPosition( punkteTF->getX() + punkteTF->getBreite() + 5, 0 );
- ram->setFarbe( farbe );
- ram->setSize( br, 20 );
- ram->setRamenBreite( 1 );
- }
- // Destruktor
- AHSLETeamListeSpieler::~AHSLETeamListeSpieler()
- {
- nameTF->release();
- punkteTF->release();
- statusTF->release();
- ram->release();
- }
- // nicht constant
- void AHSLETeamListeSpieler::render( int yOff, Bild &zRObj )
- {
- if( !zRObj.setDrawOptions( 2, yOff, ram->getBreite(), ram->getHeight() ) )
- return;
- nameTF->render( zRObj );
- punkteTF->render( zRObj );
- statusTF->render( zRObj );
- ram->render( zRObj );
- zRObj.releaseDrawOptions();
- }
- // cnstant
- // Reference Counting
- AHSLETeamListeSpieler *AHSLETeamListeSpieler::getThis()
- {
- ref++;
- return this;
- }
- AHSLETeamListeSpieler *AHSLETeamListeSpieler::release()
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
- // Inhalt der AHSLETeamListeTeam Klasse aus AccountHistorie.h
- // Konstruktor
- AHSLETeamListeTeam::AHSLETeamListeTeam( Schrift *zSchrift, char *name, int sAnz, char *status, int farbe, int br )
- : nameTF( initTextFeld( 5, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, name ) ),
- sAnzahlTF( initTextFeld( 110, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, Text( "Spieleranzahl: " ) += sAnz ) ),
- statusTF( initTextFeld( 215, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, status ) ),
- ram( new LRahmen() ),
- members( new RCArray< AHSLETeamListeSpieler >() ),
- ref( 1 )
- {
- TextRenderer tr( zSchrift->getThis() );
- tr.setSchriftSize( 12 );
- nameTF->setSize( tr.getTextBreite( nameTF->zText()->getText() ) + 5, 20 );
- sAnzahlTF->setSize( tr.getTextBreite( sAnzahlTF->zText()->getText() ) + 5, 20 );
- statusTF->setSize( tr.getTextBreite( statusTF->zText()->getText() ) + 5, 20 );
- if( nameTF->getBreite() > 100 )
- sAnzahlTF->setPosition( 10 + nameTF->getBreite(), 0 );
- if( sAnzahlTF->getX() + sAnzahlTF->getBreite() > 210 )
- statusTF->setPosition( sAnzahlTF->getX() + sAnzahlTF->getBreite() + 5, 0 );
- ram->setFarbe( farbe );
- ram->setSize( br, 20 );
- ram->setRamenBreite( 1 );
- }
- // Destruktor
- AHSLETeamListeTeam::~AHSLETeamListeTeam()
- {
- nameTF->release();
- sAnzahlTF->release();
- statusTF->release();
- ram->release();
- members->release();
- }
- // nicht constant
- void AHSLETeamListeTeam::addSpieler( AHSLETeamListeSpieler *s )
- {
- members->add( s );
- int maxHö = 20;
- int anz = members->getEintragAnzahl();
- if( anz )
- maxHö += 4 + 20 * anz;
- ram->setSize( ram->getBreite(), maxHö );
- }
- void AHSLETeamListeTeam::render( int xOff, int yOff, Bild &zRObj )
- {
- if( !zRObj.setDrawOptions( xOff, yOff, ram->getBreite(), ram->getHeight() ) )
- return;
- nameTF->render( zRObj );
- sAnzahlTF->render( zRObj );
- statusTF->render( zRObj );
- ram->render( zRObj );
- yOff = 22;
- int anz = members->getEintragAnzahl();
- for( int i = 0; i < anz; i++ )
- {
- members->z( i )->render( yOff, zRObj );
- yOff += 20;
- }
- zRObj.releaseDrawOptions();
- }
- // constant
- int AHSLETeamListeTeam::getHeight() const
- {
- return ram->getHeight();
- }
- // Reference Counting
- AHSLETeamListeTeam *AHSLETeamListeTeam::getThis()
- {
- ref++;
- return this;
- }
- AHSLETeamListeTeam *AHSLETeamListeTeam::release()
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
- // Inhalt der AHSLETeamListe Klasse aus AccountHistorie.h
- // Konstruktor
- AHSLETeamListe::AHSLETeamListe( int xPos )
- : members( new RCArray< AHSLETeamListeTeam >() ),
- xPos( xPos ),
- ref( 1 )
- {
- }
- // Destruktor
- AHSLETeamListe::~AHSLETeamListe()
- {
- members->release();
- }
- // nicht constant
- void AHSLETeamListe::addTeam( AHSLETeamListeTeam *t )
- {
- members->add( t );
- }
- void AHSLETeamListe::render( Bild &zRObj )
- {
- int y = 25;
- int anz = members->getEintragAnzahl();
- for( int i = 0; i < anz; i++ )
- {
- members->z( i )->render( xPos, y, zRObj );
- y += members->z( i )->getHeight();
- }
- }
- // constant
- int AHSLETeamListe::getHeight() const
- {
- int anz = members->getEintragAnzahl();
- int hö = 0;
- for( int i = 0; i < anz; i++ )
- hö += members->z( i )->getHeight();
- return hö;
- }
- int AHSLETeamListe::getBreite() const
- {
- return 730 - xPos;
- }
- // Reference Counting
- AHSLETeamListe *AHSLETeamListe::getThis()
- {
- ref++;
- return this;
- }
- AHSLETeamListe *AHSLETeamListe::release()
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
- // Inhalt der AHSpielListeEintrag Klasse aus AccountHistorie.h
- // Konstruktor
- AHSpielListeEintrag::AHSpielListeEintrag( int id, int karteId, Schrift *zSchrift, char *spiel, char *karte, char *datum, char *status,
- char *dauer, char *spielStatus, char *gewinner, int sAnzahl )
- : spielTF( initTextFeld( 5, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, Text( "Spiel: " ) += spiel ) ),
- karteTF( initTextFeld( 110, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, Text( "Karte: " ) += karte ) ),
- datumTF( initTextFeld( 215, 0, 180, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, Text( "Datum: " ) += datum ) ),
- statusTF( initTextFeld( 400, 0, 100, 20, zSchrift, TextFeld::Style::Text | TextFeld::Style::Center, Text( "Status: " ) += status ) ),
- spiel( new Text( spiel ) ),
- karte( new Text( karte ) ),
- datum( new Text( datum ) ),
- status( new Text( status ) ),
- detailsK( initKnopf( 715, 0, 20, 20, 0, 0, "" ) ),
- dauerTF( initTextFeld( 5, 25, 100, 20, zSchrift, TextFeld::Style::Text, Text( "Dauer: " ) += dauer ) ),
- spielStatusTF( initTextFeld( 5, 45, 100, 20, zSchrift, TextFeld::Style::Text, Text( "Status: " ) += spielStatus ) ),
- gewinnerTF( initTextFeld( 5, 65, 100, 20, zSchrift, TextFeld::Style::Text, Text( "Gewinner: " ) += gewinner ) ),
- sAnzahlTF( initTextFeld( 5, 85, 100, 20, zSchrift, TextFeld::Style::Text, Text( "Spieleranzahl: " ) += sAnzahl ) ),
- statistikK( initKnopf( 5, 105, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Statistik" ) ),
- videoK( initKnopf( 5, 130, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Aufzeichnung" ) ),
- liste( 0 ),
- ram( new LRahmen() ),
- ausklappen( bilder->get( "account.ltdb/ausklappen.png" ) ),
- einklappen( bilder->get( "account.ltdb/einklappen.png" ) ),
- id( id ),
- karteId( karteId ),
- tickVal( 0 ),
- aktion( 0 ),
- maxHö( 155 ),
- ref( 1 )
- {
- if( !einklappen )
- {
- LTDBDatei *datei = new LTDBDatei();
- datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
- datei->leseDaten( 0 );
- einklappen = datei->laden( 0, new Text( "einklappen.png" ) );
- datei->release();
- bilder->add( "account.ltdb/einklappen.png", einklappen->getThis() );
- }
- if( !ausklappen )
- {
- LTDBDatei *datei = new LTDBDatei();
- datei->setDatei( new Text( "data/client/bilder/account.ltdb" ) );
- datei->leseDaten( 0 );
- ausklappen = datei->laden( 0, new Text( "ausklappen.png" ) );
- datei->release();
- bilder->add( "account.ltdb/ausklappen.png", ausklappen->getThis() );
- }
- detailsK->setStyle( Knopf::Style::Sichtbar | Knopf::Style::Erlaubt | Knopf::Style::Hintergrund | Knopf::Style::HAlpha | Knopf::Style::HBild | Knopf::Style::KlickBuffer );
- detailsK->setHintergrundBildZ( ausklappen->getThis() );
- initToolTip( detailsK, "Details anzeigen.", zSchrift->getThis(), hauptScreen );
- TextRenderer tr( zSchrift->getThis() );
- tr.setSchriftSize( 12 );
- spielTF->setSize( tr.getTextBreite( spielTF->zText()->getText() ) + 5, 20 );
- karteTF->setSize( tr.getTextBreite( karteTF->zText()->getText() ) + 5, 20 );
- datumTF->setSize( tr.getTextBreite( datumTF->zText()->getText() ) + 5, 20 );
- statusTF->setSize( tr.getTextBreite( statusTF->zText()->getText() ) + 5, 20 );
- dauerTF->setSize( tr.getTextBreite( dauerTF->zText()->getText() ), 20 );
- spielStatusTF->setSize( tr.getTextBreite( spielStatusTF->zText()->getText() ), 20 );
- gewinnerTF->setSize( tr.getTextBreite( gewinnerTF->zText()->getText() ), 20 );
- sAnzahlTF->setSize( tr.getTextBreite( sAnzahlTF->zText()->getText() ), 20 );
- if( spielTF->getBreite() > 100 )
- karteTF->setPosition( 10 + spielTF->getBreite(), 0 );
- if( karteTF->getX() + karteTF->getBreite() > 210 )
- datumTF->setPosition( karteTF->getX() + karteTF->getBreite() + 5, 0 );
- if( datumTF->getX() + datumTF->getBreite() > 395 )
- statusTF->setPosition( datumTF->getX() + datumTF->getBreite() + 5, 0 );
- ram->setFarbe( 0xFFFFFFFF );
- ram->setSize( 735, 20 );
- ram->setRamenBreite( 1 );
- int br = dauerTF->getBreite();
- br = br > spielStatusTF->getBreite() ? br : spielStatusTF->getBreite();
- br = br > gewinnerTF->getBreite() ? br : gewinnerTF->getBreite();
- br = br > sAnzahlTF->getBreite() ? br : sAnzahlTF->getBreite();
- statistikK->setSize( br, statistikK->getHeight() );
- videoK->setSize( br, videoK->getHeight() );
- liste = new AHSLETeamListe( br + 10 );
- }
- // Destruktor
- AHSpielListeEintrag::~AHSpielListeEintrag()
- {
- spielTF->release();
- karteTF->release();
- datumTF->release();
- statusTF->release();
- spiel->release();
- karte->release();
- datum->release();
- status->release();
- detailsK->release();
- dauerTF->release();
- spielStatusTF->release();
- gewinnerTF->release();
- sAnzahlTF->release();
- statistikK->release();
- videoK->release();
- liste->release();
- ram->release();
- einklappen->release();
- ausklappen->release();
- }
- // nicht constant
- void AHSpielListeEintrag::addTeam( AHSLETeamListeTeam *t )
- {
- liste->addTeam( t );
- maxHö = liste->getHeight();
- maxHö = 155 > maxHö + 30 ? 155 : maxHö + 30;
- }
- bool AHSpielListeEintrag::tick( double tickVal )
- {
- bool ret = detailsK->tick( tickVal );
- ret |= statistikK->tick( tickVal );
- ret |= videoK->tick( tickVal );
- this->tickVal += tickVal * 150;
- int val = ( int )this->tickVal;
- this->tickVal -= val;
- if( val )
- {
- if( detailsK->zHintergrundBild() == ausklappen && ram->getHeight() != 20 )
- {
- if( ram->getHeight() - val < 20 )
- ram->setSize( ram->getBreite(), 20 );
- else
- ram->setSize( ram->getBreite(), ram->getHeight() - val );
- ret = 1;
- }
- if( detailsK->zHintergrundBild() == einklappen )
- {
- if( ram->getHeight() > maxHö )
- {
- if( ram->getHeight() - val < maxHö )
- ram->setSize( ram->getBreite(), maxHö );
- else
- ram->setSize( ram->getBreite(), ram->getHeight() - val );
- ret = 1;
- }
- if( ram->getHeight() < maxHö )
- {
- if( ram->getHeight() + val > maxHö )
- ram->setSize( ram->getBreite(), maxHö );
- else
- ram->setSize( ram->getBreite(), ram->getHeight() + val );
- ret = 1;
- }
- }
- }
- return ret;
- }
- void AHSpielListeEintrag::doMausEreignis( MausEreignis &me )
- {
- bool meVera = 0;
- bool meVeraTmp = 0;
- if( me.mx < 0 || me.my < 0 || me.mx >= ram->getBreite() || me.my >= ram->getHeight() )
- {
- meVeraTmp = me.verarbeitet;
- me.verarbeitet = 1;
- meVera = 1;
- }
- int vera = me.verarbeitet;
- detailsK->doMausEreignis( me );
- if( !vera && me.verarbeitet && me.id == ME_RLinks )
- {
- if( detailsK->zHintergrundBild() == einklappen )
- detailsK->setHintergrundBildZ( ausklappen->getThis() );
- else
- detailsK->setHintergrundBildZ( einklappen->getThis() );
- }
- vera = me.verarbeitet;
- statistikK->doMausEreignis( me );
- if( !vera && me.verarbeitet && me.id == ME_RLinks )
- aktion = 1;
- vera = me.verarbeitet;
- videoK->doMausEreignis( me );
- if( !vera && me.verarbeitet && me.id == ME_RLinks )
- aktion = 2;
- if( meVera )
- me.verarbeitet = meVeraTmp;
- }
- void AHSpielListeEintrag::render( int yOff, Bild &zRObj )
- {
- if( !zRObj.setDrawOptions( 5, yOff, ram->getBreite(), ram->getHeight() ) )
- return;
- ram->render( zRObj );
- if( ram->getHeight() > 20 )
- zRObj.drawLinieH( 1, 20, ram->getBreite() - 2, ram->getFarbe() );
- if( !zRObj.setDrawOptions( 1, 1, ram->getBreite() - 2, ram->getHeight() - 2 ) )
- {
- zRObj.releaseDrawOptions();
- return;
- }
- spielTF->render( zRObj );
- karteTF->render( zRObj );
- datumTF->render( zRObj );
- statusTF->render( zRObj );
- detailsK->render( zRObj );
- dauerTF->render( zRObj );
- spielStatusTF->render( zRObj );
- gewinnerTF->render( zRObj );
- sAnzahlTF->render( zRObj );
- statistikK->render( zRObj );
- videoK->render( zRObj );
- liste->render( zRObj );
- zRObj.releaseDrawOptions();
- zRObj.releaseDrawOptions();
- }
- int AHSpielListeEintrag::getAktion()
- {
- int ret = aktion;
- aktion = 0;
- return ret;
- }
- // constant
- int AHSpielListeEintrag::getKarteId() const
- {
- return karteId;
- }
- int AHSpielListeEintrag::getHeight() const
- {
- return ram->getHeight();
- }
- int AHSpielListeEintrag::getId() const
- {
- return id;
- }
- int AHSpielListeEintrag::getListeBreite() const
- {
- return liste->getBreite();
- }
- Text *AHSpielListeEintrag::zSpiel() const
- {
- return spiel;
- }
- Text *AHSpielListeEintrag::zKarte() const
- {
- return karte;
- }
- Text *AHSpielListeEintrag::zDatum() const
- {
- return datum;
- }
- Text *AHSpielListeEintrag::zStatus() const
- {
- return status;
- }
- // Reference Counting
- AHSpielListeEintrag *AHSpielListeEintrag::getThis()
- {
- ref++;
- return this;
- }
- AHSpielListeEintrag *AHSpielListeEintrag::release()
- {
- ref--;
- if( !ref )
- delete this;
- return 0;
- }
- // Inhalt der AHSpielListe Klasse aus AccountHistorie.h
- // Konstruktor
- AHSpielListe::AHSpielListe()
- : Zeichnung(),
- ram( new LRahmen() ),
- scroll( new VScrollBar() ),
- members( new RCArray< AHSpielListeEintrag >() ),
- sortSpalte( new Text( "Spiel" ) ),
- sortAbsteigend( 0 )
- {
- pos = Punkt( 10, 40 );
- ram->setFarbe( 0xFFFFFFFF );
- ram->setRamenBreite( 1 );
- ram->setSize( 760, 380 );
- scroll->update( 0, 380 );
- }
- // Destruktor
- AHSpielListe::~AHSpielListe()
- {
- ram->release();
- scroll->release();
- members->release();
- sortSpalte->release();
- }
- // privat
- int AHSpielListe::getReihenfolge( int *arr )
- {
- lockZeichnung();
- int anz = members->getEintragAnzahl();
- if( !anz )
- {
- unlockZeichnung();
- return 0;
- }
- int ret = 0;
- bool *fertig = new bool[ anz ];
- ZeroMemory( fertig, anz );
- for( int i = 0; i < anz; i++ )
- {
- int index = -1;
- Text minMaxT;
- Zeit minMaxZ;
- for( int j = 0; j < anz; j++ )
- {
- AHSpielListeEintrag *tmp = members->z( j );
- if( sortSpalte->istGleich( "Spiel" ) && !fertig[ j ] && ( index < 0 ||
- ( sortAbsteigend && *tmp->zSpiel() > minMaxT ) || ( !sortAbsteigend && *tmp->zSpiel() < minMaxT ) ) )
- {
- minMaxT = tmp->zSpiel()->getText();
- index = j;
- }
- else if( sortSpalte->istGleich( "Karte" ) && !fertig[ j ] && ( index < 0 ||
- ( sortAbsteigend && *tmp->zKarte() > minMaxT ) || ( !sortAbsteigend && *tmp->zKarte() < minMaxT ) ) )
- {
- minMaxT = tmp->zKarte()->getText();
- index = j;
- }
- else if( sortSpalte->istGleich( "Datum" ) && !fertig[ j ] && ( index < 0 ||
- ( sortAbsteigend && minMaxZ.istKleiner( "y-m-d h:i", tmp->zDatum()->getText() ) ) ||
- ( !sortAbsteigend && minMaxZ.istLater( "y-m-d h:i", tmp->zDatum()->getText() ) ) ) )
- {
- minMaxZ.setZeit( "y-m-d h:i", tmp->zDatum()->getText() );
- index = j;
- }
- else if( sortSpalte->istGleich( "Status" ) && !fertig[ j ] && ( index < 0 ||
- ( sortAbsteigend && *tmp->zStatus() > minMaxT ) || ( !sortAbsteigend && *tmp->zStatus() < minMaxT ) ) )
- {
- minMaxT = tmp->zStatus()->getText();
- index = j;
- }
- }
- if( index < 0 )
- break;
- fertig[ index ] = 1;
- arr[ ret ] = index;
- ret++;
- }
- delete[] fertig;
- unlockZeichnung();
- return ret;
- }
- // nicht constant
- void AHSpielListe::setSortSpalte( char *sp )
- {
- lockZeichnung();
- sortSpalte->setText( sp );
- unlockZeichnung();
- }
- void AHSpielListe::setSortRichtung( bool absteigend )
- {
- sortAbsteigend = absteigend;
- }
- void AHSpielListe::reset()
- {
- lockZeichnung();
- members->leeren();
- unlockZeichnung();
- }
- void AHSpielListe::addSpiel( AHSpielListeEintrag *s )
- {
- lockZeichnung();
- members->add( s );
- unlockZeichnung();
- }
- bool AHSpielListe::tick( double tickVal )
- {
- bool ret = scroll->getRend();
- lockZeichnung();
- int anz = members->getEintragAnzahl();
- for( int i = 0; i < anz; i++ )
- ret |= members->z( i )->tick( tickVal );
- unlockZeichnung();
- return ret;
- }
- void AHSpielListe::doMausEreignis( MausEreignis &me )
- {
- bool vera = 0;
- if( me.mx - pos.x <= 0 || me.mx - pos.x >= ram->getBreite() || me.my - pos.y <= 0 || me.my - pos.y >= ram->getHeight() )
- {
- vera = 1;
- me.verarbeitet = 1;
- }
- int mx = me.mx, my = me.my;
- me.mx -= pos.x;
- me.my -= pos.y;
- scroll->doMausMessage( ram->getBreite() - 16, 1, 15, ram->getHeight() - 2, me );
- me.mx -= 5;
- me.my -= 5 - scroll->getScroll();
- lockZeichnung();
- int anz = members->getEintragAnzahl();
- int *rf = new int[ anz ];
- int rfAnz = getReihenfolge( rf );
- for( int i = 0; i < rfAnz; i++ )
- {
- members->z( rf[ i ] )->doMausEreignis( me );
- me.my -= members->z( rf[ i ] )->getHeight() + 5;
- }
- delete[] rf;
- unlockZeichnung();
- me.mx = mx, me.my = my;
- if( vera )
- me.verarbeitet = 0;
- }
- void AHSpielListe::render( Bild &zRObj )
- {
- if( !zRObj.setDrawOptions( pos, ram->getSize() ) )
- return;
- ram->render( zRObj );
- scroll->render( ram->getBreite() - 16, 1, 15, ram->getHeight() - 2, zRObj );
- if( !zRObj.setDrawOptions( 1, 1, ram->getBreite() - 15, ram->getHeight() - 2 ) )
- {
- zRObj.releaseDrawOptions();
- return;
- }
- int anzHö = 5;
- lockZeichnung();
- int anz = members->getEintragAnzahl();
- int *rf = new int[ anz ];
- int rfAnz = getReihenfolge( rf );
- for( int i = 0; i < rfAnz; i++ )
- {
- members->z( rf[ i ] )->render( anzHö - scroll->getScroll(), zRObj );
- anzHö += members->z( rf[ i ] )->getHeight() + 5;
- }
- delete[] rf;
- unlockZeichnung();
- scroll->update( anzHö, ram->getHeight() - 2 );
- zRObj.releaseDrawOptions();
- zRObj.releaseDrawOptions();
- }
- // constant
- int AHSpielListe::getAktion( int *spielId, int *karteId ) const
- {
- int anz = members->getEintragAnzahl();
- for( int i = 0; i < anz; i++ )
- {
- int ak = members->z( i )->getAktion();
- if( ak )
- {
- *spielId = members->z( i )->getId();
- *karteId = members->z( i )->getKarteId();
- return ak;
- }
- }
- return 0;
- }
- // Inhalt der AccountHistorie Klasse aus AccountHistorie.h
- // Konstruktor
- AccountHistorie::AccountHistorie( Schrift *zSchrift )
- : Thread(),
- schrift( zSchrift->getThis() ),
- historieF( initFenster( 810, 40, 780, 450, zSchrift, Fenster::Style::Sichtbar | Fenster::Style::Titel | Fenster::Style::TitelBuffered | Fenster::Style::Rahmen | Fenster::Style::Erlaubt, "Historie von " ) ),
- sortSpalte( initAuswahlBox( 10, 10, 150, 20, zSchrift, ABSTYLE, { "Spiel", "Karte", "Datum", "Status" } ) ),
- sortRichtung( initAuswahlBox( 170, 10, 150, 20, zSchrift, ABSTYLE, { "Aufwärts", "Abwärts" } ) ),
- liste( new AHSpielListe() ),
- statistik( new AHSpielStatistik( zSchrift->getThis() ) ),
- video( new AHSpielVideo( zSchrift->getThis() ) ),
- status( 0 ),
- accId( 0 ),
- animation( 0 ),
- alpha( 255 ),
- alpha2( 255 ),
- alpha3( 255 ),
- tickVal( 0 ),
- rend( 0 )
- {
- initToolTip( sortSpalte, "Wähle aus, nach welcher Spalte die\nTabelle sortiert werden soll.", zSchrift->getThis(), hauptScreen );
- initToolTip( sortRichtung, "Wähle aus, ob Aufwärts oder Abwärts\nsortiert werden soll.", zSchrift->getThis(), hauptScreen );
- historieF->addMember( liste->getThis() );
- historieF->addMember( sortSpalte->getThis() );
- historieF->addMember( sortRichtung->getThis() );
- historieF->setMausEreignis( _ret1ME );
- }
- // Destruktor
- AccountHistorie::~AccountHistorie()
- {
- schrift->release();
- historieF->release();
- sortSpalte->release();
- sortRichtung->release();
- statistik->release();
- liste->release();
- video->release();
- }
- // nicht constant
- void AccountHistorie::reset()
- {
- liste->reset();
- statistik->reset();
- video->reset();
- }
- void AccountHistorie::ladeStatistik( int accId )
- {
- if( this->accId == accId )
- return;
- this->status = 0;
- if( run )
- {
- warteAufThread( 1000 );
- ende();
- }
- if( ( animation | 0x1 ) == animation )
- {
- animation |= 0x4;
- this->accId = accId;
- this->status = 1;
- return;
- }
- if( this->accId )
- reset();
- this->accId = accId;
- start();
- this->status = 1;
- }
- void AccountHistorie::thread()
- {
- Text *name = infoClient->getSpielerName( accId );
- if( name )
- {
- name->insert( 0, "Historie von " );
- historieF->setTitel( *name );
- name->release();
- }
- Array< KSGClient::SpielHistorieDaten > *daten = infoClient->getSpielHistorieDaten( accId );
- int anz = daten->getEintragAnzahl();
- for( int i = 0; i < anz; i++ )
- {
- KSGClient::SpielHistorieDaten spiel = daten->get( i );
- AHSpielListeEintrag *spielE = new AHSpielListeEintrag( spiel.id, spiel.karteId, schrift, spiel.spiel, spiel.karte,
- spiel.datum, spiel.status, spiel.dauer,
- spiel.spielStatus, spiel.gewinner, spiel.sAnzahl );
- int tAnz = spiel.teams.getEintragAnzahl();
- for( int j = 0; j < tAnz; j++ )
- {
- KSGClient::SpielHistorieTeamDaten team = spiel.teams.get( j );
- AHSLETeamListeTeam *teamE = new AHSLETeamListeTeam( schrift, team.name, team.sAnzahl, team.status,
- team.farbe, spielE->getListeBreite() );
- int sAnz = team.spieler.getEintragAnzahl();
- for( int k = 0; k < sAnz; k++ )
- {
- KSGClient::SpielHistorieSpielerDaten spieler = team.spieler.get( k );
- AHSLETeamListeSpieler *spielerE = new AHSLETeamListeSpieler( schrift, spieler.name, spieler.punkte, spieler.status,
- spieler.farbe, spielE->getListeBreite() - 4 );
- teamE->addSpieler( spielerE );
- }
- spielE->addTeam( teamE );
- }
- liste->addSpiel( spielE );
- }
- daten->release();
- animation &= ~0x4;
- status = 2;
- run = 0;
- }
- void AccountHistorie::setSichtbar( bool sichtbar, bool nachRechts )
- {
- if( sichtbar )
- {
- if( ( animation | 0x1 ) != animation || ( ( nachRechts && ( animation | 0x2 ) != animation ) || !nachRechts && ( animation | 0x2 ) == animation ) )
- {
- if( nachRechts )
- historieF->setPosition( -810, 40 );
- else
- historieF->setPosition( 810, 40 );
- }
- animation |= 0x1;
- }
- else
- animation &= ~0x1;
- if( nachRechts )
- animation |= 0x2;
- else
- animation &= ~0x2;
- }
- bool AccountHistorie::tick( double zeit )
- {
- if( !statistik->istNochSichtbar() && !video->istNochSichtbar() )
- rend |= historieF->tick( zeit );
- rend |= statistik->tick( zeit );
- rend |= video->tick( zeit );
- tickVal += zeit;
- int valA = (int)( tickVal * 150 );
- int valB = (int)( tickVal * 500 );
- tickVal -= valA / 150.0;
- if( valA )
- {
- if( ( animation | 0x8 ) == animation && alpha2 )
- {
- if( alpha2 - valA <= 0 )
- {
- alpha2 = 0;
- statistik->setSichtbar( 1 );
- }
- else
- alpha2 -= valA;
- rend = 1;
- }
- if( ( animation | 0x8 ) != animation && alpha2 != 255 )
- {
- if( alpha2 + valA >= 255 )
- alpha2 = 255;
- else
- alpha2 += valA;
- rend = 1;
- }
- if( ( animation | 0x10 ) == animation && alpha3 )
- {
- if( alpha3 - valA <= 0 )
- {
- alpha3 = 0;
- video->setSichtbar( 1 );
- }
- else
- alpha3 -= valA;
- rend = 1;
- }
- if( ( animation | 0x10 ) != animation && alpha3 != 255 )
- {
- if( alpha3 + valA >= 255 )
- alpha3 = 255;
- else
- alpha3 += valA;
- rend = 1;
- }
- if( ( animation | 0x4 ) == animation && alpha )
- {
- if( alpha - valA <= 0 )
- alpha = 0;
- else
- alpha -= valA;
- rend = 1;
- if( !alpha )
- {
- reset();
- start();
- }
- }
- if( ( animation | 0x4 ) != animation && alpha != 255 )
- {
- if( alpha + valA >= 255 )
- alpha = 255;
- else
- alpha += valA;
- rend = 1;
- }
- }
- if( valB )
- {
- if( ( animation | 0x1 ) == animation )
- { // Sichtbar
- if( ( animation | 0x2 ) == animation )
- { // Nach Rechts
- if( historieF->getX() != 10 )
- {
- if( historieF->getX() + valB > 10 )
- historieF->setPosition( 10, historieF->getY() );
- else
- historieF->setPosition( historieF->getX() + valB, historieF->getY() );
- statistik->setPosition( historieF->getX(), historieF->getY() );
- rend = 1;
- }
- }
- else
- { // Nach Links
- if( historieF->getX() != 10 )
- {
- if( historieF->getX() - valB < 10 )
- historieF->setPosition( 10, historieF->getY() );
- else
- historieF->setPosition( historieF->getX() - valB, historieF->getY() );
- statistik->setPosition( historieF->getX(), historieF->getY() );
- rend = 1;
- }
- }
- }
- else
- { // Unsichtbar
- if( ( animation | 0x2 ) == animation )
- { // Nach Rechts
- if( historieF->getX() != 810 )
- {
- if( historieF->getX() + valB > 810 )
- historieF->setPosition( 810, historieF->getY() );
- else
- historieF->setPosition( historieF->getX() + valB, historieF->getY() );
- statistik->setPosition( historieF->getX(), historieF->getY() );
- rend = 1;
- }
- }
- else
- { // Nach Links
- if( historieF->getX() != -810 )
- {
- if( historieF->getX() - valB < -810 )
- historieF->setPosition( -810, historieF->getY() );
- else
- historieF->setPosition( historieF->getX() - valB, historieF->getY() );
- statistik->setPosition( historieF->getX(), historieF->getY() );
- rend = 1;
- }
- }
- }
- }
- if( !alpha2 && !statistik->istNochSichtbar() )
- {
- animation &= ~0x8;
- statistik->reset();
- }
- if( !alpha3 && !video->istNochSichtbar() )
- {
- animation &= ~0x10;
- video->reset();
- }
- bool ret = rend;
- rend = 0;
- return ret;
- }
- void AccountHistorie::doMausEreignis( MausEreignis &me )
- {
- if( !statistik->istNochSichtbar() && !video->istNochSichtbar() && alpha == 255 && alpha2 == 255 && alpha3 == 255 )
- {
- int sortSpalteS = sortSpalte->getAuswahl();
- int sortRichtungS = sortRichtung->getAuswahl();
- historieF->doMausEreignis( me );
- if( sortSpalte->getAuswahl() != sortSpalteS )
- {
- liste->setSortSpalte( sortSpalte->zEintrag( sortSpalte->getAuswahl() )->zText()->getText() );
- sortSpalte->einklappen();
- }
- if( sortRichtung->getAuswahl() != sortRichtungS )
- {
- liste->setSortRichtung( sortRichtung->getAuswahl() != 0 );
- sortRichtung->einklappen();
- }
- int spielId = 0;
- int karteId = 0;
- int ak = liste->getAktion( &spielId, &karteId );
- if( ak == 1 )
- { // Statistik anzeigen
- if( statistik->ladeDaten( spielId, karteId ) )
- animation |= 0x8;
- }
- if( ak == 2 )
- { // Aufzeichnung abspielen
- if( video->ladeDaten( spielId, karteId ) )
- animation |= 0x10;
- }
- }
- if( statistik->istNochSichtbar() )
- statistik->doMausEreignis( me );
- }
- void AccountHistorie::doTastaturEreignis( TastaturEreignis &te )
- {
- if( statistik->istNochSichtbar() )
- statistik->doTastaturEreignis( te );
- }
- void AccountHistorie::render( Bild &zRObj )
- {
- zRObj.setAlpha( alpha );
- if( alpha2 && alpha3 )
- {
- zRObj.setAlpha( alpha2 );
- zRObj.setAlpha( alpha3 );
- historieF->render( zRObj );
- zRObj.releaseAlpha();
- zRObj.releaseAlpha();
- }
- if( statistik->istNochSichtbar() )
- statistik->render( zRObj );
- if( video->istNochSichtbar() )
- video->render( zRObj );
- zRObj.releaseAlpha();
- }
- // constant
- int AccountHistorie::getStatus() const
- {
- return status;
- }
|