#include "AccountAnsehen.h" #include "../../Global/Variablen.h" #include "../../Global/Initialisierung.h" #include #include // inhalt der AccountAnsehen Klasse aus AccountAnsehen.h // Konstruktor AccountAnsehen::AccountAnsehen( Schrift *zSchrift, Fenster *zNachLoginFenster, int x ) : Zeichnung(), laden( (Animation2D*)ladeAnimation->dublizieren() ), bildschirmGröße( BildschirmGröße() ), rahmen( new LRahmen() ), aktivitätK( initKnopf( 145, 10, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Spieler Aktivität" ) ), historieK( initKnopf( 665, 10, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Spiel Historie" ) ), spieleUndKartenK( initKnopf( 275, 10, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Spiele / Karten" ) ), spielPartnerK( initKnopf( 405, 10, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Spielpartner" ) ), statistikK( initKnopf( 535, 10, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Spiel Statistik" ) ), suchenK( initKnopf( 15, 10, 120, 20, zSchrift, Knopf::Style::Sichtbar, "Spieler suchen" ) ), suche( new AccountSuchen( zSchrift->getThis() ) ), aktivität( new AccountAktivität( zSchrift ) ), spieleUndKarten( new AccountSpieleUndKarten( zSchrift ) ), partner( new AccountSpielPartner( zSchrift ) ), statistik( new AccountStatistik( zSchrift ) ), historie( new AccountHistorie( zSchrift ) ), account( 0 ), alpha( 0 ), alpha2( 255 ), sichtbar( 0 ), jetzt( 0 ), nachher( 0 ), prozent1( 0 ), prozent2( 0 ), tickVal( 0 ), animation( 0 ), knopfX( 810 ), rend( 0 ), ref( 1 ) { laden->setSichtbar( 0 ); rahmen->setFarbe( 0xFFFFFFFF ); rahmen->setSize( 102, 32 ); begPos = Punkt( x, 67 ); begGröße = Punkt( 102, 32 ); pos = Punkt( x, 67 ); gr = Punkt( 102, 32 ); pos1 = begPos; größe1 = begGröße; größe2 = Punkt( 800, 500 ); pos2 = bildschirmGröße / 2 - größe2 / 2; laden->setPosition( 375, 225 ); zNachLoginFenster->addMember( this ); } // Destruktor AccountAnsehen::~AccountAnsehen() { laden->release(); rahmen->release(); aktivitätK->release(); historieK->release(); spieleUndKartenK->release(); spielPartnerK->release(); statistikK->release(); suchenK->release(); suche->release(); aktivität->release(); spieleUndKarten->release(); partner->release(); statistik->release(); historie->release(); } // nicht constant void AccountAnsehen::setSichtbar( bool sicht ) { begPos = pos; begGröße = gr; animation |= ( sicht ? 0x1 : 0x2 ); rend = 1; } bool AccountAnsehen::setSpielerDetails( int account, int nachher ) { if( laden->istSichtbar() ) return 0; laden->setSichtbar( 1 ); if( nachher == 2 ) aktivität->ladeStatistik( account ); if( nachher == 3 ) spieleUndKarten->ladeStatistik( account ); if( nachher == 4 ) partner->ladeStatistik( account ); if( nachher == 5 ) statistik->ladeStatistik( account ); if( nachher == 6 ) historie->ladeStatistik( account ); this->nachher = nachher; this->account = account; return 1; } bool AccountAnsehen::tick( double tickVal ) { if( !knopfX ) { rend |= aktivitätK->tick( tickVal ); rend |= historieK->tick( tickVal ); rend |= spieleUndKartenK->tick( tickVal ); rend |= spielPartnerK->tick( tickVal ); rend |= statistikK->tick( tickVal ); rend |= suchenK->tick( tickVal ); } rend |= laden->tick( tickVal ); rend |= suche->tick( tickVal ); rend |= aktivität->tick( tickVal ); rend |= spieleUndKarten->tick( tickVal ); rend |= partner->tick( tickVal ); rend |= statistik->tick( tickVal ); rend |= historie->tick( tickVal ); this->tickVal += tickVal; int val = (int)( this->tickVal * 150 ); int val2 = (int)( this->tickVal * 500 ); this->tickVal -= val / 150.0; if( val ) { if( ( animation | 0x1 ) == animation ) // Einblenden { if( prozent1 != 100 ) { prozent1 += val; if( prozent1 >= 100 ) { prozent1 = 100; if( !jetzt && !nachher ) setSpielerDetails( loginKlient->getAccountId(), 2 ); } pos = begPos + (Punkt)( ( ( Vec2< double > )( pos2 - begPos ) / 100.0 ) * prozent1 ); gr = begGröße + (Punkt)( ( ( Vec2< double > )( größe2 - begGröße ) / 100.0 ) * prozent1 ); } else if( alpha != 255 ) { alpha += val * 2; if( alpha >= 255 || ( animation | 0x2 ) == animation ) { alpha = 255; animation &= ~0x1; sichtbar = 1; prozent1 = 0; } } rend = 1; } if( ( animation | 0x2 ) == animation ) // ausblenden { if( alpha != 0 ) { alpha -= val * 2; if( alpha < 0 ) alpha = 0; } else { prozent2 += val; if( prozent2 > 100 ) prozent2 = 100; pos = begPos + (Punkt)( ( ( Vec2< double > )( pos1 - begPos ) / 100.0 ) * prozent2 ); gr = begGröße + (Punkt)( ( ( Vec2< double > )( größe1 - begGröße ) / 100.0 ) * prozent2 ); if( prozent2 == 100 ) { prozent2 = 0; animation &= ~0x2; sichtbar = 0; } } rend = 1; } if( laden->istSichtbar() && alpha2 != 100 ) { if( alpha2 - val <= 100 ) alpha2 = 100; else alpha2 -= val; rend = 1; } if( !laden->istSichtbar() && alpha2 != 255 ) { if( alpha2 + val >= 255 ) alpha2 = 255; else alpha2 += val; rend = 1; } } if( val2 ) { if( jetzt > 1 && !laden->istSichtbar() && knopfX != 0 ) { if( knopfX - val2 < 0 ) knopfX = 0; else knopfX -= val2; rend = 1; } if( jetzt < 2 && !laden->istSichtbar() && knopfX != 810 ) { if( knopfX + val2 > 810 ) knopfX = 810; else knopfX += val2; rend = 1; } } switch( nachher ) { case 2: if( aktivität->getStatus() == 2 ) { switch( jetzt ) { case 0: aktivität->setSichtbar( 1, 0 ); break; case 1: suchenK->setAlphaFeldStrength( -5 ); suchenK->setAlphaFeldFarbe( 0x5500FF00 ); suche->setSichtbar( 0 ); aktivität->setSichtbar( 1, 0 ); break; case 3: spieleUndKartenK->setAlphaFeldStrength( -5 ); spieleUndKartenK->setAlphaFeldFarbe( 0x5500FF00 ); spieleUndKarten->setSichtbar( 0, 1 ); aktivität->setSichtbar( 1, 1 ); break; case 4: spielPartnerK->setAlphaFeldStrength( -5 ); spielPartnerK->setAlphaFeldFarbe( 0x5500FF00 ); partner->setSichtbar( 0, 1 ); aktivität->setSichtbar( 1, 1 ); break; case 5: statistikK->setAlphaFeldStrength( -5 ); statistikK->setAlphaFeldFarbe( 0x5500FF00 ); statistik->setSichtbar( 0, 1 ); aktivität->setSichtbar( 1, 1 ); break; case 6: historieK->setAlphaFeldStrength( -5 ); historieK->setAlphaFeldFarbe( 0x5500FF00 ); historie->setSichtbar( 0, 1 ); aktivität->setSichtbar( 1, 1 ); break; } aktivitätK->setAlphaFeldStrength( -2 ); aktivitätK->setAlphaFeldFarbe( 0x3000FF00 ); laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } if( !aktivität->getStatus() ) { laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } break; case 3: if( spieleUndKarten->getStatus() == 2 ) { switch( jetzt ) { case 0: spieleUndKarten->setSichtbar( 1, 0 ); break; case 1: suchenK->setAlphaFeldStrength( -5 ); suchenK->setAlphaFeldFarbe( 0x5500FF00 ); suche->setSichtbar( 0 ); spieleUndKarten->setSichtbar( 1, 0 ); break; case 2: aktivitätK->setAlphaFeldStrength( -5 ); aktivitätK->setAlphaFeldFarbe( 0x5500FF00 ); aktivität->setSichtbar( 0, 0 ); spieleUndKarten->setSichtbar( 1, 0 ); break; case 4: spielPartnerK->setAlphaFeldStrength( -5 ); spielPartnerK->setAlphaFeldFarbe( 0x5500FF00 ); partner->setSichtbar( 0, 1 ); spieleUndKarten->setSichtbar( 1, 1 ); break; case 5: statistikK->setAlphaFeldStrength( -5 ); statistikK->setAlphaFeldFarbe( 0x5500FF00 ); statistik->setSichtbar( 0, 1 ); spieleUndKarten->setSichtbar( 1, 1 ); break; case 6: historieK->setAlphaFeldStrength( -5 ); historieK->setAlphaFeldFarbe( 0x5500FF00 ); historie->setSichtbar( 0, 1 ); spieleUndKarten->setSichtbar( 1, 1 ); break; } spieleUndKartenK->setAlphaFeldStrength( -2 ); spieleUndKartenK->setAlphaFeldFarbe( 0x3000FF00 ); laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } if( !spieleUndKarten->getStatus() ) { laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } break; case 4: if( partner->getStatus() == 2 ) { switch( jetzt ) { case 0: partner->setSichtbar( 1, 0 ); break; case 1: suchenK->setAlphaFeldStrength( -5 ); suchenK->setAlphaFeldFarbe( 0x5500FF00 ); suche->setSichtbar( 0 ); partner->setSichtbar( 1, 0 ); break; case 2: aktivitätK->setAlphaFeldStrength( -5 ); aktivitätK->setAlphaFeldFarbe( 0x5500FF00 ); aktivität->setSichtbar( 0, 0 ); partner->setSichtbar( 1, 0 ); break; case 3: spieleUndKartenK->setAlphaFeldStrength( -5 ); spieleUndKartenK->setAlphaFeldFarbe( 0x5500FF00 ); spieleUndKarten->setSichtbar( 0, 0 ); partner->setSichtbar( 1, 0 ); break; case 5: statistikK->setAlphaFeldStrength( -5 ); statistikK->setAlphaFeldFarbe( 0x5500FF00 ); statistik->setSichtbar( 0, 1 ); partner->setSichtbar( 1, 1 ); break; case 6: historieK->setAlphaFeldStrength( -5 ); historieK->setAlphaFeldFarbe( 0x5500FF00 ); historie->setSichtbar( 0, 1 ); partner->setSichtbar( 1, 1 ); break; } spielPartnerK->setAlphaFeldStrength( -2 ); spielPartnerK->setAlphaFeldFarbe( 0x3000FF00 ); laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } if( !partner->getStatus() ) { laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } break; case 5: if( statistik->getStatus() == 2 ) { switch( jetzt ) { case 0: statistik->setSichtbar( 1, 0 ); break; case 1: suchenK->setAlphaFeldStrength( -5 ); suchenK->setAlphaFeldFarbe( 0x5500FF00 ); suche->setSichtbar( 0 ); statistik->setSichtbar( 1, 0 ); break; case 2: aktivitätK->setAlphaFeldStrength( -5 ); aktivitätK->setAlphaFeldFarbe( 0x5500FF00 ); aktivität->setSichtbar( 0, 0 ); statistik->setSichtbar( 1, 0 ); break; case 3: spieleUndKartenK->setAlphaFeldStrength( -5 ); spieleUndKartenK->setAlphaFeldFarbe( 0x5500FF00 ); spieleUndKarten->setSichtbar( 0, 0 ); statistik->setSichtbar( 1, 0 ); break; case 4: spielPartnerK->setAlphaFeldStrength( -5 ); spielPartnerK->setAlphaFeldFarbe( 0x5500FF00 ); partner->setSichtbar( 0, 0 ); statistik->setSichtbar( 1, 0 ); break; case 6: historieK->setAlphaFeldStrength( -5 ); historieK->setAlphaFeldFarbe( 0x5500FF00 ); historie->setSichtbar( 0, 1 ); statistik->setSichtbar( 1, 1 ); break; } statistikK->setAlphaFeldStrength( -2 ); statistikK->setAlphaFeldFarbe( 0x3000FF00 ); laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } if( !statistik->getStatus() ) { laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } break; case 6: if( historie->getStatus() == 2 ) { switch( jetzt ) { case 0: historie->setSichtbar( 1, 0 ); break; case 1: suchenK->setAlphaFeldStrength( -5 ); suchenK->setAlphaFeldFarbe( 0x5500FF00 ); suche->setSichtbar( 0 ); historie->setSichtbar( 1, 0 ); break; case 2: aktivitätK->setAlphaFeldStrength( -5 ); aktivitätK->setAlphaFeldFarbe( 0x5500FF00 ); aktivität->setSichtbar( 0, 0 ); historie->setSichtbar( 1, 0 ); break; case 3: spieleUndKartenK->setAlphaFeldStrength( -5 ); spieleUndKartenK->setAlphaFeldFarbe( 0x5500FF00 ); spieleUndKarten->setSichtbar( 0, 0 ); historie->setSichtbar( 1, 0 ); break; case 4: spielPartnerK->setAlphaFeldStrength( -5 ); spielPartnerK->setAlphaFeldFarbe( 0x5500FF00 ); partner->setSichtbar( 0, 0 ); historie->setSichtbar( 1, 0 ); break; case 5: statistikK->setAlphaFeldStrength( -5 ); statistikK->setAlphaFeldFarbe( 0x5500FF00 ); statistik->setSichtbar( 0, 0 ); historie->setSichtbar( 1, 0 ); break; } historieK->setAlphaFeldStrength( -2 ); historieK->setAlphaFeldFarbe( 0x3000FF00 ); laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } if( !historie->getStatus() ) { laden->setSichtbar( 0 ); jetzt = nachher; nachher = 0; } break; } int tmp = suche->getAuswahlAccountId(); if( tmp ) setSpielerDetails( tmp, 2 ); bool ret = rend; rend = 0; return ret; } void AccountAnsehen::doMausEreignis( MausEreignis &me ) { if( !sichtbar || animation || laden->istSichtbar() ) return; int mx = me.mx; int my = me.my; me.mx -= pos.x; me.my -= pos.y; if( jetzt > 1 ) { int ak = 0; bool tmp = me.verarbeitet; suchenK->doMausEreignis( me ); ak = me.verarbeitet ? 1 : 0; aktivitätK->doMausEreignis( me ); ak = me.verarbeitet && !ak ? 2 : ak; spieleUndKartenK->doMausEreignis( me ); ak = me.verarbeitet && !ak ? 3 : ak; spielPartnerK->doMausEreignis( me ); ak = me.verarbeitet && !ak ? 4 : ak; statistikK->doMausEreignis( me ); ak = me.verarbeitet && !ak ? 5 : ak; historieK->doMausEreignis( me ); ak = me.verarbeitet && !ak ? 6 : ak; if( tmp ) ak = 0; if( me.id == ME_RLinks ) { switch( ak ) { case 1: // Suchen Klick if( jetzt == 1 ) break; switch( jetzt ) { case 2: aktivitätK->setAlphaFeldStrength( -5 ); aktivitätK->setAlphaFeldFarbe( 0x5500FF00 ); aktivität->setSichtbar( 0, 1 ); break; case 3: spieleUndKartenK->setAlphaFeldStrength( -5 ); spieleUndKartenK->setAlphaFeldFarbe( 0x5500FF00 ); spieleUndKarten->setSichtbar( 0, 1 ); break; case 4: spielPartnerK->setAlphaFeldStrength( -5 ); spielPartnerK->setAlphaFeldFarbe( 0x5500FF00 ); partner->setSichtbar( 0, 1 ); break; case 5: statistikK->setAlphaFeldStrength( -5 ); statistikK->setAlphaFeldFarbe( 0x5500FF00 ); statistik->setSichtbar( 0, 1 ); break; case 6: historieK->setAlphaFeldStrength( -5 ); historieK->setAlphaFeldFarbe( 0x5500FF00 ); historie->setSichtbar( 0, 1 ); break; } suchenK->setAlphaFeldStrength( -2 ); suchenK->setAlphaFeldFarbe( 0x3000FF00 ); this->suche->setSichtbar( 1 ); jetzt = 1; break; case 2: // Aktivität Klick setSpielerDetails( account, 2 ); break; case 3: // SpieleUndKarten Klick setSpielerDetails( account, 3 ); break; case 4: // SpielPartner Klick setSpielerDetails( account, 4 ); break; case 5: // Statistik Klick setSpielerDetails( account, 5 ); break; case 6: // Historie Klick setSpielerDetails( account, 6 ); break; } } } switch( jetzt ) { case 1: // Suchen suche->doMausEreignis( me ); break; case 3: // SpieleUndKarten spieleUndKarten->doMausEreignis( me ); break; case 4: // SpielPartner partner->doMausEreignis( me ); break; case 5: // Statistik statistik->doMausEreignis( me ); break; case 6: // Historie historie->doMausEreignis( me ); break; } me.mx = mx; me.my = my; } void AccountAnsehen::doTastaturEreignis( TastaturEreignis &te ) { if( !sichtbar || animation || laden->istSichtbar() ) return; switch( jetzt ) { case 1: // Suchen suche->doTastaturEreignis( te ); break; case 6: // Historie historie->doTastaturEreignis( te ); break; } } void AccountAnsehen::render( Bild &zRObj ) { if( pos == pos1 ) return; if( !zRObj.setDrawOptions( pos, gr ) ) return; rahmen->setSize( gr ); rahmen->render( zRObj ); int rbr = rahmen->getRBreite(); zRObj.setAlpha( (unsigned char)alpha ); zRObj.setAlpha( (unsigned char)alpha2 ); zRObj.addScrollOffset( -knopfX, 0 ); aktivitätK->render(zRObj ); historieK->render( zRObj ); spieleUndKartenK->render( zRObj ); spielPartnerK->render( zRObj ); statistikK->render( zRObj ); suchenK->render( zRObj ); zRObj.addScrollOffset( knopfX, 0 ); suche->render( zRObj ); aktivität->render( zRObj ); spieleUndKarten->render( zRObj ); partner->render( zRObj ); statistik->render( zRObj ); historie->render( zRObj ); zRObj.releaseAlpha(); laden->render( zRObj ); zRObj.releaseAlpha(); zRObj.releaseDrawOptions(); } // constant bool AccountAnsehen::istAnimiert() const { return animation != 0; } bool AccountAnsehen::istSichtbar() const { return sichtbar || prozent1 != 0; } // Reference Counting AccountAnsehen *AccountAnsehen::getThis() { ref++; return this; } AccountAnsehen *AccountAnsehen::release() { ref--; if( !ref ) delete this; return 0; }