123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- #include "AccountAktivität.h"
- #include "../../../Global/Initialisierung.h"
- #include "../../../Global/Variablen.h"
- // Inhalt der AccountAktivität Klasse aus AccountAktivität.h
- // Konstruktor
- AccountAktivität::AccountAktivität( Schrift *zSchrift )
- : Thread(),
- aktivitätF( initFenster( 810, 40, 780, 450, zSchrift, Fenster::Style::Sichtbar | Fenster::Style::Titel | Fenster::Style::TitelBuffered | Fenster::Style::Rahmen, "Aktivität von " ) ),
- online( initLinienDiagramm( 10, 10, 760, 200, zSchrift, LDiag::Style::DatenRahmen, 0 ) ),
- spiele( initLinienDiagramm( 10, 220, 760, 200, zSchrift, LDiag::Style::DatenRahmen, 0 ) ),
- status( 0 ),
- accId( 0 ),
- animation( 0 ),
- alpha( 255 ),
- tickVal( 0 ),
- rend( 0 )
- {
- online->setHIntervallBreite( 36.8 );
- spiele->setVIntervallHeight( 36.8 );
- online->setDatenStyle( DiagDaten::Style::autoRaster | DiagDaten::Style::intervallTexte | DiagDaten::Style::intervalle | DiagDaten::Style::Sichtbar | DiagDaten::Style::autoIntervall );
- spiele->setDatenStyle( DiagDaten::Style::autoRaster | DiagDaten::Style::intervallTexte | DiagDaten::Style::intervalle | DiagDaten::Style::Sichtbar | DiagDaten::Style::autoIntervall );
- online->setRasterDicke( 1 );
- spiele->setRasterDicke( 1 );
- online->setRasterFarbe( 0xFF505050 );
- spiele->setRasterFarbe( 0xFF505050 );
- online->setHIntervallFarbe( 0xFFFFFFFF );
- spiele->setHIntervallFarbe( 0xFFFFFFFF );
- online->setHIntervallName( "Tage" );
- spiele->setHIntervallName( "Tage" );
- online->setVIntervallFarbe( 0xFFFFFFFF );
- spiele->setVIntervallFarbe( 0xFFFFFFFF );
- online->setVIntervallName( "Stunden" );
- spiele->setVIntervallName( "Spiele" );
- aktivitätF->addMember( online->getThis() );
- aktivitätF->addMember( spiele->getThis() );
- }
- // Destruktor
- AccountAktivität::~AccountAktivität()
- {
- if( run )
- {
- warteAufThread( 1000 );
- ende();
- }
- aktivitätF->release();
- online->release();
- spiele->release();
- }
- // nicht constant
- void AccountAktivität::reset()
- {
- int wAnz = online->zDiagDaten()->werte->getEintragAnzahl();
- for( int i = 0; i < wAnz; i++ )
- online->removeWert( 0 );
- wAnz = spiele->zDiagDaten()->werte->getEintragAnzahl();
- for( int i = 0; i < wAnz; i++ )
- spiele->removeWert( 0 );
- wAnz = online->zDiagDaten()->hIntervallWerte->getEintragAnzahl();
- for( int i = 0; i < wAnz; i++ )
- online->removeHIntervallText( online->zDiagDaten()->hIntervallWerte->get( 0 ) );
- wAnz = spiele->zDiagDaten()->hIntervallWerte->getEintragAnzahl();
- for( int i = 0; i < wAnz; i++ )
- spiele->removeHIntervallText( spiele->zDiagDaten()->hIntervallWerte->get( 0 ) );
- wAnz = online->zDiagDaten()->vIntervallWerte->getEintragAnzahl();
- for( int i = 0; i < wAnz; i++ )
- online->removeVIntervallText( online->zDiagDaten()->vIntervallWerte->get( 0 ) );
- wAnz = spiele->zDiagDaten()->vIntervallWerte->getEintragAnzahl();
- for( int i = 0; i < wAnz; i++ )
- spiele->removeVIntervallText( spiele->zDiagDaten()->vIntervallWerte->get( 0 ) );
- }
- void AccountAktivität::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 AccountAktivität::thread()
- {
- Text *name = infoClient->getSpielerName( accId );
- if( name )
- {
- name->insert( 0, "Aktivität von " );
- aktivitätF->setTitel( *name );
- name->release();
- }
- Array< KSGClient::AccountActivityInfo > activity;
- if( infoClient->getSpielerAktivität( accId, &activity ) )
- {
- int anz = activity.getEintragAnzahl();
- double maxO = 0;
- int maxS = 0;
- for( int i = 0; i < anz; i++ )
- {
- KSGClient::AccountActivityInfo info = activity.get( i );
- if( info.stOnline > maxO )
- maxO = info.stOnline;
- if( info.stGespielt > maxO )
- maxO = info.stGespielt;
- if( info.anzSpiele > maxS )
- maxS = info.anzSpiele;
- if( info.anzGewonnen > maxS )
- maxS = info.anzGewonnen;
- }
- maxO += ( maxO / 100 ) * 10;
- maxS++;
- online->addVIntervallText( 0, "0" );
- online->addVIntervallText( (int)maxO + 1, Text() += (int)( maxO + 1 ) );
- spiele->addVIntervallText( 0, "0" );
- spiele->addVIntervallText( (int)maxS + 1, Text() += (int)( maxS + 1 ) );
- online->addHIntervallText( 0, activity.get( 0 ).datum );
- online->addHIntervallText( anz - 1, activity.get( anz - 1 ).datum );
- spiele->addHIntervallText( 0, activity.get( 0 ).datum );
- spiele->addHIntervallText( anz - 1, activity.get( anz - 1 ).datum );
- DiagWert *w = new DiagWert();
- w->farbe = 0xFF00FFFF;
- w->hintergrund = 0xFF205050;
- w->name->setText( "Zeit Online" );
- w->style = DiagWert::Style::Sichtbar | DiagWert::Style::Name | DiagWert::Style::Hintergrund;
- online->addWert( w );
- w = new DiagWert();
- w->farbe = 0xFF00FF00;
- w->hintergrund = 0xFF205020;
- w->name->setText( "Zeit im Spiel" );
- w->style = DiagWert::Style::Sichtbar | DiagWert::Style::Name | DiagWert::Style::Hintergrund;
- online->addWert( w );
- w = new DiagWert();
- w->farbe = 0xFF00FFFF;
- w->hintergrund = 0xFF205050;
- w->name->setText( "Spiele am Tag" );
- w->style = DiagWert::Style::Sichtbar | DiagWert::Style::Name | DiagWert::Style::Hintergrund;
- spiele->addWert( w );
- w = new DiagWert();
- w->farbe = 0xFF00FF00;
- w->hintergrund = 0xFF205020;
- w->name->setText( "Gewonnene Spiele" );
- w->style = DiagWert::Style::Sichtbar | DiagWert::Style::Name | DiagWert::Style::Hintergrund;
- spiele->addWert( w );
- for( int i = 0; i < anz; i++ )
- {
- KSGClient::AccountActivityInfo info = activity.get( i );
- online->addPunkt( 0, i, info.stOnline );
- online->addPunkt( 1, i, info.stGespielt );
- spiele->addPunkt( 0, i, info.anzSpiele );
- spiele->addPunkt( 1, i, info.anzGewonnen );
- }
- }
- else
- nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Die Aktivität des Spielers konnte nicht ermittelt werden." ), new Text( "Ok" ) );
- animation &= ~0x4;
- status = 2;
- run = 0;
- }
- void AccountAktivität::setSichtbar( bool sichtbar, bool nachRechts )
- {
- if( sichtbar )
- {
- if( ( animation | 0x1 ) != animation || ( ( nachRechts && ( animation | 0x2 ) != animation ) || !nachRechts && ( animation | 0x2 ) == animation ) )
- {
- if( nachRechts )
- aktivitätF->setPosition( -810, 40 );
- else
- aktivitätF->setPosition( 810, 40 );
- }
- animation |= 0x1;
- }
- else
- animation &= ~0x1;
- if( nachRechts )
- animation |= 0x2;
- else
- animation &= ~0x2;
- }
- bool AccountAktivität::tick( double zeit )
- {
- rend |= aktivitätF->tick( zeit );
- tickVal += zeit;
- int valA = (int)( tickVal * 150 );
- int valB = (int)( tickVal * 500 );
- tickVal -= valA / 150.0;
- if( valA )
- {
- 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( aktivitätF->getX() != 10 )
- {
- if( aktivitätF->getX() + valB > 10 )
- aktivitätF->setPosition( 10, aktivitätF->getY() );
- else
- aktivitätF->setPosition( aktivitätF->getX() + valB, aktivitätF->getY() );
- rend = 1;
- }
- }
- else
- { // Nach Links
- if( aktivitätF->getX() != 10 )
- {
- if( aktivitätF->getX() - valB < 10 )
- aktivitätF->setPosition( 10, aktivitätF->getY() );
- else
- aktivitätF->setPosition( aktivitätF->getX() - valB, aktivitätF->getY() );
- rend = 1;
- }
- }
- }
- else
- { // Unsichtbar
- if( ( animation | 0x2 ) == animation )
- { // Nach Rechts
- if( aktivitätF->getX() != 810 )
- {
- if( aktivitätF->getX() + valB > 810 )
- aktivitätF->setPosition( 810, aktivitätF->getY() );
- else
- aktivitätF->setPosition( aktivitätF->getX() + valB, aktivitätF->getY() );
- rend = 1;
- }
- }
- else
- { // Nach Links
- if( aktivitätF->getX() != -810 )
- {
- if( aktivitätF->getX() - valB < -810 )
- aktivitätF->setPosition( -810, aktivitätF->getY() );
- else
- aktivitätF->setPosition( aktivitätF->getX() - valB, aktivitätF->getY() );
- rend = 1;
- }
- }
- }
- }
- bool ret = rend;
- rend = 0;
- return ret;
- }
- void AccountAktivität::render( Bild &zRObj )
- {
- zRObj.setAlpha( alpha );
- aktivitätF->render( zRObj );
- zRObj.releaseAlpha();
- }
- // constant
- int AccountAktivität::getStatus() const
- {
- return status;
- }
|