#include "AktionsThread.h" #include "..\Global\Variablen.h" #include // 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 = 0; if( !loginClient ) loginClient = mainClient->createLoginServerClient(); do { if( !loginClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !loginClient->verbinde() ) { lastError = loginClient->getLetzterFehler(); continue; } ret = loginClient->login( (const char*)arg1, (const char*)arg2 ); if( ret != 1 ) { lastError = loginClient->getLetzterFehler(); continue; } if( !infoClient ) infoClient = mainClient->createInformationServerClient(); if( !infoClient ) { ret = 0; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if( !infoClient->verbinde() ) { ret = 0; lastError = mainClient->getLetzterFehler(); lastError = infoClient->getLetzterFehler(); loginClient->logout(); continue; } if( !chatClient ) chatClient = mainClient->createChatServerClient(); if( !chatClient ) { ret = 0; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if( !chatClient->verbinde() ) { ret = 0; loginClient->logout(); infoClient->trenne( 0 ); lastError = chatClient->getLetzterFehler(); continue; } if( cmProcessor ) cmProcessor = cmProcessor->release(); cmProcessor = new ChatMessageProcessor(); loginClient->trenne( 0 ); } 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 Name // arg2 = char* -- Account Passwort // arg3 = char* -- Account Geheimnis if( 1 ) { hauptScreen->setdeckFarbe( 0x00000000 ); hauptScreen->setOnTop( 1 ); ladeAnimation->setSichtbar( 1 ); int ret = 0; if( !loginClient ) loginClient = mainClient->createLoginServerClient(); do { if( !loginClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !loginClient->verbinde() ) { lastError = loginClient->getLetzterFehler(); continue; } ret = (int)loginClient->kick( (const char*)arg1, (const char*)arg2, (const char*)arg3 ); if( !ret ) { lastError = loginClient->getLetzterFehler(); continue; } if( !infoClient ) infoClient = mainClient->createInformationServerClient(); if( !infoClient ) { ret = 2; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if( !infoClient->verbinde() ) { ret = 2; lastError = infoClient->getLetzterFehler(); loginClient->logout(); continue; } if( !chatClient ) chatClient = mainClient->createChatServerClient(); if( !chatClient ) { ret = 2; lastError = mainClient->getLetzterFehler(); loginClient->logout(); continue; } if( !chatClient->verbinde() ) { ret = 2; loginClient->logout(); infoClient->trenne( 0 ); lastError = chatClient->getLetzterFehler(); continue; } if( cmProcessor ) cmProcessor = cmProcessor->release(); cmProcessor = new ChatMessageProcessor(); loginClient->trenne( 0 ); } 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 ); if( loginClient ) { if( !loginClient->verbinde() ) { nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Das Ausloggen konnte nicht erfolgreich abgeschlossen werden." ), new Text( "Ok" ), 0 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); break; } bool ret = loginClient->logout(); if( ret ) { hauptScreen->lock(); nachLogin->zChatLeiste()->removeAll(); nachLogin->zFreundesListe()->removeAll(); nachLogin->zNachrichtenListe()->removeAll(); hauptScreen->unlock(); if( infoClient ) infoClient->trenne( 0 ); if( spielClient ) spielClient->trenne(); if( smProcessor ) smProcessor = smProcessor->release(); if( chatClient ) chatClient->trenne( 0 ); if( loginClient ) loginClient->trenne( 0 ); if( cmProcessor ) cmProcessor = cmProcessor->release(); } else { nachLogin->zNachrichtenListe()->addNachricht( new Text( "Fehler" ), new Text( "Das Ausloggen konnte nicht erfolgreich abgeschlossen werden." ), new Text( "Ok" ), 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 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->eMailÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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; int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->eMailVergessen( (const char*)arg1, (const char*)arg2, (const char*)arg3, pEMail ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->geheimnisÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->geheimnisVergessen( (const char*)arg1, (const char*)arg2 ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->nameVergessen( (const char*)arg1, (const char*)arg2 ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->passwortÄndern( (const char*)arg1, (const char*)arg2, (const char*)arg3, (const char*)arg4 ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->passwortVergessen( (const char*)arg1, (const char*)arg2 ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->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() ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); 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 ); int ret = 0; if( !registerClient ) registerClient = mainClient->createRegisterServerClient(); do { if( !registerClient ) { lastError = mainClient->getLetzterFehler(); continue; } if( !registerClient->verbinde() ) { lastError = registerClient->getLetzterFehler(); continue; } ret = registerClient->accountLöschen( (const char*)arg1, (const char*)arg2, (const char*)arg3 ); if( !ret ) { lastError = registerClient->getLetzterFehler(); continue; } } while( 0 ); registerClient->trenne( 0 ); ladeAnimation->setSichtbar( 0 ); hauptScreen->setOnTop( 0 ); vorLogin->zUnregistrierung()->setWeiterReturn( 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( spielClient && spielClient->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; }