#include "AktionsThread.h" #include "..\Global\Variablen.h" // Inhalt der AktionsThread Klasse aus AktionsThread.h // Konstruktor AktionsThread::AktionsThread( int aktion, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5 ) : Thread() { this->aktion = aktion; this->arg1 = arg1; this->arg2 = arg2; this->arg3 = arg3; this->arg4 = arg4; this->arg5 = arg5; ref = 1; start(); } // nicht constant void AktionsThread::thread() { switch( aktion ) { case 1: // Login // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); int ret = loginKlient->login( (const char*)arg1, (const char*)arg2 ); do { if( ret != 1 ) continue; if( !infoKlient->verbinde() ) { ret = 0; loginKlient->setLetzterFehler( infoKlient->getLetzterFehler() ); loginKlient->logout(); continue; } if( !chatKlient->verbinde() ) { ret = 0; loginKlient->setLetzterFehler( chatKlient->getLetzterFehler() ); loginKlient->logout(); infoKlient->trenne(); continue; } loginKlient->trenne(); } while( 0 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zLogin()->setLoginReturn( ret ); } break; case 2: // Login Erfolgreich hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); for( unsigned char deckAlpha = 0; deckAlpha < 255; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha += 15; } hauptScreen->setdeckFarbe( 255 << 24 ); hauptScreen->setRenderZeichnungen( 0 ); vorLogin->setSichtbar( 0 ); nachLogin->setAnzeige( NLANormal ); hauptScreen->setRenderZeichnungen( 1 ); ladeAnimation->setSichtbar( 0 ); for( unsigned char deckAlpha = 255; deckAlpha > 0; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha -= 15; } hauptScreen->setdeckFarbe( 0 << 24 ); hauptScreen->setOnTop( 0 ); break; case 3: // Kick // arg1 = char* -- Account Geheimnis if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); int ret = (int)loginKlient->kick( (const char*)arg1 ); do { if( !ret ) continue; if( !infoKlient->verbinde() ) { ret = 2; loginKlient->setLetzterFehler( infoKlient->getLetzterFehler() ); loginKlient->logout(); continue; } if( !chatKlient->verbinde() ) { ret = 2; loginKlient->setLetzterFehler( chatKlient->getLetzterFehler() ); loginKlient->logout(); infoKlient->trenne(); continue; } loginKlient->trenne(); } while( 0 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zLogin()->setKickReturn( ret ); } break; case 4: // Logout if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = loginKlient->logout(); if( ret ) { hauptScreen->lock(); nachLogin->zChatLeiste()->removeAll(); nachLogin->zFreundesListe()->removeAll(); nachLogin->zNachrichtenListe()->removeAll(); hauptScreen->unlock(); infoKlient->trenne(); spielKlient->trenne(); chatKlient->trenne(); loginKlient->trenne(); } else { nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Das Ausloggen konnte nicht erfolgreich abgeschlossen werden." ), new Text( "Ok" ), 0, NachrichtType::nachricht, 0 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); break; } ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); } case 5: // Logout Erfolgreich hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); for( unsigned char deckAlpha = 0; deckAlpha < 255; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha += 15; } hauptScreen->setdeckFarbe( 255 << 24 ); _render = 0; hauptScreen->lock(); nachLogin->setAnzeige( NLALogin ); vorLogin->setSichtbar( 1 ); hauptScreen->unlock(); _render = 1; ladeAnimation->setSichtbar( 0 ); for( unsigned char deckAlpha = 255; deckAlpha > 0; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha -= 15; } hauptScreen->setdeckFarbe( 0 << 24 ); hauptScreen->setOnTop( 0 ); break; case 6: // Account Bestätigung // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); int ret = registerKlient->accountBestätigen( (const char*)arg1, (const char*)arg2 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zBestätigung()->setWeiterResult( ret ); } break; case 7: // Account Bestätigung Fertig // arg1 = char* -- Schlüssel if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->bestätigen( (const char*)arg1 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zBestätigung()->setFertigResult( ret ); } break; case 8: // Account E-Mail ändern // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Neue E-Mail if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->eMailÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zEMailÄndern()->setReturn( ret ); } break; case 9: // Account E-Mail Vergessen // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); char *eMail = 0; char **pEMail = &eMail; bool ret = registerKlient->eMailVergessen( (const char*)arg1, (const char*)arg2, (const char*)arg3, pEMail ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zEMailVergessen()->setReturn( ret, *pEMail ); } break; case 10: // Account Geheimnis Ändern // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Neues Geheimnis if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->geheimnisÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zGeheimnisÄndern()->setResult( ret ); } break; case 11: // Account Geheimnis Vergessen // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->geheimnisVergessen( (const char*)arg1, (const char*)arg2 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zGeheimnisVergessen()->setResult( ret ); } break; case 12: // Account Name Vergessen // arg1 = char* -- Account Passwort // arg2 = char* -- Account Geheimnis if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->nameVergessen( (const char*)arg1, (const char*)arg2 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zNameVergessen()->setResult( ret ); } break; case 13: // Account Passwort Ändern // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Neues Passwort if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->passwortÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zPasswortÄndern()->setResult( ret ); } break; case 14: // Account Passwort Vergessen // arg1 = char* -- Account Name // arg2 = char* -- Account Geheimnis if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->passwortVergessen( (const char*)arg1, (const char*)arg2 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zPasswortVergessen()->setResult( ret ); } break; case 15: // Account Erstellen // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis // arg4 = char* -- Account E-Mail // arg5 = Datum* -- Geburtsdatum if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->accountErstellen( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4, (unsigned short)( (Datum*)arg5 )->getJahr(), (char)( (Datum*)arg5 )->getMonat(), (char)( (Datum*)arg5 )->getTag() ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zRegistrierung()->setWeiterReturn( ret ); ( (Datum*)arg5 )->release(); } break; case 17: // account Löschen Fertig // arg1 = char* -- Account Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->accountLöschen( (const char*)arg1, (const char*)arg2, (const char*)arg3 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zUnregistrierung()->setWeiterReturn( ret ); } break; case 18: // account Löschen Fertig // arg1 = char* -- Schlüssel if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); bool ret = registerKlient->bestätigen( (const char*)arg1 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zUnregistrierung()->setFertigReturn( ret ); } break; case 19: // Spiel Laden if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); for( unsigned char deckAlpha = 0; deckAlpha < 255; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha += 15; } hauptScreen->setdeckFarbe( 255 << 24 ); _render = 0; hauptScreen->lock(); int karteId = nachLogin->zSpielenFenster()->getKarteId(); SpielerTeamStruktur *sts = nachLogin->zSpielenFenster()->getSTS(); nachLogin->setAnzeige( NLAImSpiel ); hauptScreen->unlock(); _render = 1; nachLogin->zImSpiel()->beginnLaden( karteId, sts ); ladeAnimation->setSichtbar( 0 ); for( unsigned char deckAlpha = 255; deckAlpha > 0; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha -= 15; } hauptScreen->setdeckFarbe( 0 << 24 ); hauptScreen->setOnTop( 0 ); } break; case 20: // Spiel Statistik laden if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); for( unsigned char deckAlpha = 0; deckAlpha < 255; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha += 15; } hauptScreen->setdeckFarbe( 255 << 24 ); _render = 0; hauptScreen->lock(); int karteId = nachLogin->zImSpiel()->getKarteId(); nachLogin->setAnzeige( NLANormal ); hauptScreen->unlock(); _render = 1; if( spielKlient->istVerbunden() ) nachLogin->zSpielenFenster()->ladeSpielStatistik( karteId ); ladeAnimation->setSichtbar( 0 ); for( unsigned char deckAlpha = 255; deckAlpha > 0; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha -= 15; } hauptScreen->setdeckFarbe( 0 << 24 ); hauptScreen->setOnTop( 0 ); } break; case 21: // Spiel Aufzeichnung betreten if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); for( unsigned char deckAlpha = 0; deckAlpha < 255; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha += 15; } hauptScreen->setdeckFarbe( 255 << 24 ); _render = 0; hauptScreen->lock(); nachLogin->setAnzeige( NLASpielVideo ); hauptScreen->unlock(); _render = 1; ladeAnimation->setSichtbar( 0 ); for( unsigned char deckAlpha = 255; deckAlpha > 0; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha -= 15; } hauptScreen->setdeckFarbe( 0 << 24 ); hauptScreen->setOnTop( 0 ); } break; case 22: // Spiel Aufzeichnung / Editor verlassen if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); for( unsigned char deckAlpha = 0; deckAlpha < 255; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha += 15; } hauptScreen->setdeckFarbe( 255 << 24 ); _render = 0; hauptScreen->lock(); nachLogin->setAnzeige( NLANormal ); hauptScreen->unlock(); _render = 1; ladeAnimation->setSichtbar( 0 ); for( unsigned char deckAlpha = 255; deckAlpha > 0; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha -= 15; } hauptScreen->setdeckFarbe( 0 << 24 ); hauptScreen->setOnTop( 0 ); } break; case 23: // Editor betreten if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); for( unsigned char deckAlpha = 0; deckAlpha < 255; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha += 15; } hauptScreen->setdeckFarbe( 255 << 24 ); _render = 0; hauptScreen->lock(); nachLogin->setAnzeige( NLAEditor ); hauptScreen->unlock(); _render = 1; ladeAnimation->setSichtbar( 0 ); for( unsigned char deckAlpha = 255; deckAlpha > 0; ) { hauptScreen->setdeckFarbe( deckAlpha << 24 ); Sleep( 40 ); deckAlpha -= 15; } hauptScreen->setdeckFarbe( 0 << 24 ); hauptScreen->setOnTop( 0 ); } break; } release(); } // constant // Reference Counting AktionsThread *AktionsThread::getThis() { ref++; return this; } AktionsThread *AktionsThread::release() { ref--; if( !ref ) delete this; return 0; }